操作系统-页式地址重定位模拟实验报告.doc
- 文档编号:117234
- 上传时间:2022-10-03
- 格式:DOC
- 页数:6
- 大小:116.50KB
操作系统-页式地址重定位模拟实验报告.doc
《操作系统-页式地址重定位模拟实验报告.doc》由会员分享,可在线阅读,更多相关《操作系统-页式地址重定位模拟实验报告.doc(6页珍藏版)》请在冰豆网上搜索。
操作系统-页式地址重定位模拟实验报告
一、实验目的:
1、用高级语言编写和调试模拟实现页式地址重定位。
2、加深理解页式地址重定位技术在多道程序设计中的作用和意义。
二、实验原理:
当进程在CPU上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。
三、实验内容:
1、设计页表结构
2、设计地址重定位算法
3、有良好的人机对话界面
四、存储结构
typedefstructPageTable
{
intpage_num;
intpic_num;
}PageTable;
PageTablePT[N];
typedefstructLogicalAdd
{
intpage_num;
intpage_add;
}LogicalAdd;
LogicalAddLA;
intPage_length;//页长
intPage_num;//页数
intProcess;//进程大小
intAddress;//逻辑地址
五、函数列表
Input();//输入
Init();//初始化
Translate();//生成物理地址
Output();//输出
Main();//主函数
六、运行结果截图:
(1)输入
(2)查看页表
(3)查看物理地址
(4)退出
七、源程序代码:
#include
#include
#include
#include
usingnamespacestd;
#defineN50
typedefstructPageTable
{
intpage_num;
intpic_num;
}PageTable;
PageTablePT[N];
typedefstructLogicalAdd
{
intpage_num;
intpage_add;
}LogicalAdd;
LogicalAddLA;
intPage_length;//页长
intPage_num;//页数
intProcess;//进程大小
intAddress;//逻辑地址
voidInput()
{
cout<<"输入进程长度:
";
cin>>Process;
cout<<"输入页长:
";
cin>>Page_length;
cout<<"请输入逻辑地址:
";
cin>>Address;
}
intInit()
{
srand(time(0));
inti,temp;
intsum=1;
Page_num=Process/Page_length+1;
//cout<<"num="< PT[0].pic_num=1; for(i=0;i { PT[i].page_num=i; temp=rand()%3+1; sum+=temp; PT[i].pic_num+=sum; //cout< } LA.page_num=Address/Page_length; if(LA.page_num>=Page_num){ cout<<"所查逻辑地址不在该页内,初始化失败! "< return-1; } LA.page_add=Address%Page_length; } intTranslate() { inti=0; intres; while(i { if(PT[i].page_num==LA.page_num){ res=PT[i].pic_num; break; } elsei++; } if(i>=N) return-1; returnres*Page_length+LA.page_add; } voidOutput(intres) { if(res==0) { cout<<"构造的页表如下: "< cout<<"页号\t块号"< for(inti=0;i { cout< cout< } } else cout<<"物理地址为: "< } intmain() { intk; cout<<"\t*************欢迎使用页式地址重定位模拟系统*****************\n"; for(;;) { cout<<"\t---请输入以下选项---"< cout<<"1.输入信息;"< cin>>k; switch(k) { case1: Input(); if(Init()==-1)return-1; break; case2: Output(0); break; case3: Output(Translate()); break; case4: cout<<"O(∩_∩)O谢谢使用,再见! "< exit(0); break; } } return1; } 八、小结 通过本次实验,加深了我对于分页式存储管理方式的理解,以及编程实现了页式地址重定位模拟。 在编程过程中所遇到的困难不多,为了简化模拟过程,我使用了十进制数来表示各数据(单位字节)。 页表的构建上,我是根据输入的页长和进程空间的大小来动态分配空间和页表的表长的,块号的生成用了累加随机数的方式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 地址 定位 模拟 实验 报告