1、操作系统-页式地址重定位模拟实验报告一、 实验目的:1、 用高级语言编写和调试模拟实现页式地址重定位。2、 加深理解页式地址重定位技术在多道程序设计中的作用和意义。二、 实验原理:当进程在 CPU 上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。三、 实验内容:1、 设计页表结构2、 设计地址重定位算法3、 有良好的人机对话界面四、 存储结构typedef struct PageTableint page_num;int pic_num;PageTab
2、le;PageTable PTN;typedef struct LogicalAddint page_num;int page_add;LogicalAdd;LogicalAdd LA;int Page_length;/页长int Page_num;/页数int Process;/进程大小int Address;/逻辑地址五、 函数列表Input() ;/输入Init() ;/初始化Translate() ;/ 生成物理地址Output() ;/输出Main() ;/主函数六、运行结果截图:(1)输入(2)查看页表(3)查看物理地址(4)退出七、源程序代码:#include#include#i
3、nclude#includeusing namespace std;#define N 50typedef struct PageTableint page_num;int pic_num;PageTable;PageTable PTN;typedef struct LogicalAddint page_num;int page_add;LogicalAdd;LogicalAdd LA;int Page_length;/页长int Page_num;/页数int Process;/进程大小int Address;/逻辑地址void Input()cout Process;cout Page_l
4、ength;cout Address;int Init()srand(time(0);int i,temp;int sum=1;Page_num=Process/Page_length+1;/cout=Page_num)cout =N)return -1;return res*Page_length+LA.page_add;void Output(int res)if(res=0)cout k;switch(k)case 1:Input();if(Init()=-1)return -1;break;case 2:Output(0);break;case 3:Output(Translate();break;case 4:cout “O(_ )O 谢谢使用,再见!“endl;exit(0);break;return 1;八、小结通过本次实验,加深了我对于分页式存储管理方式的理解,以及编程实现了页式地址重定位模拟。在编程过程中所遇到的困难不多,为了简化模拟过程,我使用了十进制数来表示各数据(单位字节) 。页表的构建上,我是根据输入的页长和进程空间的大小来动态分配空间和页表的表长的,块号的生成用了累加随机数的方式。