页面置换算法源程序实验报告

页面置换算法源程序实验报告

ID:8870384

大小:82.00 KB

页数:9页

时间:2018-04-10

页面置换算法源程序实验报告_第1页
页面置换算法源程序实验报告_第2页
页面置换算法源程序实验报告_第3页
页面置换算法源程序实验报告_第4页
页面置换算法源程序实验报告_第5页
资源描述:

《页面置换算法源程序实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、页面置换一.目的和要求(一)目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法的模拟设计,来了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。(二)要求模拟页式虚拟存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断。二.实验内容(1)为了装入一个页面而必须调出一页时,如果被选中调出的页面在执行中没有修改过,则不必把该页写到磁盘上。因此,在页表中可以增加是否修改过的标志,当执行“存”指令“写”指令是把对应页的修改标志置“1”表示

2、该页修改过,为“0”表示该页没有修改过。(2)设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可用输出转换后的绝对地址来表示一条指令已完成。当访问的页不在主存时则输出“*该页页号”来表示硬件产生了一次缺页中断。调用模拟地址转换程序。(3)编制一个FIFO页面调试程序。FIFO页面调试算法总是先调出作业中最先进入主存的那一页,因此,可以用一个数组来构成页号队列。数组中每个元素是该作业已在主存的页面好,假定分配给作业的主存块数为m,且该作业开始的m页已装入主存,则数组可有m个元素组成:

3、P[0],P[1],…,P[m-1]她们的初值为:P[0]:=0,P[1]:=1,…,P[m-1]:=m-1用一指针k指示当要装入新页时应调出的页在数组的位置,k的初值为0。当产生缺页中断后,操作系统总是选择P[k]所指出的页面调出,然后执行:P[k]:=要装入的新页页号K:=(k+1)modm(4)假定主存的每块长度为1024个字节,现有一个共7页的作业,其副本也已在磁盘上.系统为该作业分配了4块主存块,且该作业的第0页至第3页已经装入主存,其余3页尚未装入主存,该作业的页表如下:页号标志主存块号修改标志在磁盘上的位置0150011118

4、001221900133110021400002250000236000121假设该作业依次执行的指令如下:操作页号页内地址+0070+1050*2015存3021取0056-6040三.实验流程图开始取一条指令取指令中访问的页号=>L查页表页标记=1?形成绝对地址是“存”指令?置L页修改标记“1”输出绝对地址输出“*页号”有后继指令?取一条指令结束J:=P[k]J页的修改标记=1?输出“OUTj”输出“INL”P[k]:=Lk:=(k+1)modm修改页面是否是否否(产生缺页中断)是否四.实验程序#include#in

5、clude#include#include#defineN6//实验中假定的页表长度#defineM4//主存物理块数struct{intlnumber;//页号intflag;//表示该页是否在主存,"1"表示在主存,"0"表示不在主存intpnumber;//该页所在主存块的块号intwrite;//该页是否被修改过,"1"表示修改过,"0"表示没有修改过intdnumber;//该页存放在磁盘上的位置,即磁盘块号}page[N];//页表定义intp[M];//用数组模拟

6、]FIFO算法中的队列(使用循环队列)inthead;voidinitial(void);intdo_mmap(int);//模拟地址转换voiddo_page_fault(int);//缺页中断处理程序voidrun_first_instructon(int);//执行进程的第一条指令voidrun_a_instruction(int);//CPU执行一条指令voidprint_page_and_fifoqueue(void);//输出页表和FIFO队列main(){intladdress,paddress;//逻辑地址,物理地址intl

7、number,ad,pnumber;//页号,页内地址和物理块号initial();print_page_and_fifoqueue();//输出页表和FIFO队列run_first_instructon(0x0000);//运行进程的第一条指令的地址cout<<"输入下一条指令的逻辑地址(0~32767)(-1toend)"<>laddress;while(laddress>32767){cout<<"输入错误!请重新输入下一条指令的逻辑地址(0~32767)(-1toend)"<>laddress

8、;}while(laddress!=-1){lnumber=laddress>>10;//取逻辑地址的页号lnumberif(page[lnumber].flag==1){//指

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。