ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:20.66KB ,
资源ID:4571022      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4571022.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验四页式虚拟存储管理中地址转换和页式中断FIFOLRUOPTC版本.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验四页式虚拟存储管理中地址转换和页式中断FIFOLRUOPTC版本.docx

1、实验四页式虚拟存储管理中地址转换和页式中断FIFOLRUOPTC版本实验四 页式虚拟存储管理中地址转换和页式中断FIFO一、 实验目的深入了解页式存储管理如何实现地址转换;进一步认识页式虚拟存储管理中 如何处理缺页中断以及页面置换算法。二、 实验主要内容编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 实验具体内容包括:首先对给定的地址进行转换工作,若发现缺页则先进行缺页中 断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。假定主存64KB,每个主存块1024字节,作业最大支持到64KB,系统中每 个作业分得主存块4块。三、 实验原理1) 地址转换过程:首先从逻辑地

2、址中的高位取得页号, 然后根据页号查页表,得到块号;然后 从逻辑地址中的低位取得页内地址,将块号和页内地址合并即得到物理地址。2) 缺页中断处理根据页号查找页表,判断该页是否在主存储器中,若该页标志位“ 0”,形成缺页中断。操作系统让调出中断处理程序处理中断。四、 实验方法与步骤实现地址转换与缺页中断处理,主要考虑三个问题:第一,设计页式虚拟存 储管理方式中页表的数据结构;第二,地址转换算法的实现;第三,缺页中断处 理算法的实现。1) 设计页表的数据结构页式虚拟存储管理方式中页表除了页号和该页对应的主存块号外, 至少还要包括存在标志(该页是否在主存),磁盘位置(该页的副本在磁盘上的位置)和 修

3、改标志(该页是否修改过)。在实验中页表用数组模拟,其数据结构定义如下:structint Inu mber; 页号int flag; /表示页是否在主存中,“ 1”表示在,“ 0”表示不在in t p nu mber; /该页所在主存块的块号int write; /该页是否被修改过,“ 1 ”表示修改过,“ 0 “表示没有修改过int dnu mber; 该页存放在磁盘上的位置,即磁盘块号page n; 页表定义2) 地址转换算法的实现地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程。在实 验中,每个主存块1024字节,则块内地址占10位;主存64KB,则主存共64 块,即块号占6位

4、;物理地址共占16位;作业最大64KB,则作业最大占64块, 即页号占6位,逻辑地址共占16位。(用主存的大小计算物理地址位数,用最 大作业大小计算逻辑地址位数)。在页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅 把作业信息的部分页面装入主存储器, 作业执行时若访问的页面在主存中,则进 行地址转换,若访问的页面不在主存中,则产生一个“缺页中断”,由操作系统 把当前所需要的页面装入主存储器后,再次执行时才可以按上述方法进行地址转 换。旦 模拟地址转换流程度3)缺页中断处理算法的实现 缺页处理过程简单阐述如下:a) 根据当前执行指令中逻辑地址的页号查找页表,判断该页是否在主存储

5、器中,若该页标志为“ 0”,形成缺页中断。中断装置通过交换 PSW让操作系统 的中断处理程序占用处理器。b) 操作系统处理缺页中断的方法及时查主存分配表,找一个空闲主存块; 若无空闲块,查页表,选择一个已在主存的页面,把它暂时调出主存。若在执行 过程中该页被修改过,则需将该页信息写回磁盘,否则不比写回;c) 找出该页的位置,启动磁盘读出该页的信息,把磁盘上读出的信息装入第 2不找到的主存块,修改页表中该页的标志为“ 1”;d) 由于产生缺页中断的那条指令还没有执行完,所以页面装入后应该重新 执行被中断的指令。当重新执行该指令时,由于要访冋的页面已在主存中,所以 可以正常执行。关于第二步的查找装

6、入新页面的主存块处理方式, 不同系统采用的策略可能有所不同,这里采用局部置换算法,就是每个作业分得一定的主存块,只能在分 得的主存块内查找空闲块,若无空闲主存块,则从该作业中选择一个页面淘汰出 主存。实验中采用局部置换算法。使用局部置换算法时,存在这样一个问题:就是在分配给作业主存空间时, 装入哪些页?有的系统采取不装入任何一页,当执行过程中需要时才将其调入。 有点系统采用页面预置的方法,事先估计可能某些页面会先用到,在分配主存块 后将这些页面装入。在本实验中采用第二种方法,分配主存空间时将前几页调入 主存,假定系统中每个作业分得主存块 m块,则将第0m-1页装入主存。因为是模拟硬件工作,所有

7、在实验中如果访冋的页不再主存中时,则输入该 页页号,表示硬件产生缺页中断,然后直接转去缺页中断处理;由于米用页面预 置方法,在给定的主存块中一定无空闲块, 只能淘汰已在主存的一页;没有启动 磁盘的工作,淘汰的页面需要写回磁盘时,用输入页号表示,调入新的一页时, 将该页在页表中的存在标志置为“ 1”,输出页号表示将该页调入主存。当主存中无空闲块时,为装入一个页面,必须按照某种算法从已在主存的页 中选择一页,将它暂时调出主存,让出主存空间,用来存放装入的页面,这个工 作称为“页面调度”。常用的页面调度算法有:先进现出、最近最少用算法、和 最近最不常用算法。在本实验中采用先进现出调度算法。 先进现出

8、算法总是选择 驻留在主存时间最长的一页调出。实验中把主存储器的页的页号按照进入主存的 先后次序拍成队列,每次总是调出对首的页,当装入一个新页后,把新页的页号 排入对尾。实验中,用一个数组存放页号的队列。 假定分配给作业的主存块数为 m,数组可由m个元素组成,p0,p1,p2 pm-1;对首指针head采用页面预置的方法,页号队列的长度总是 m,tail等于(head+1)%m。因此可以使用一个指 针,只用head即可。在装入一个新的页时,装入页和淘汰页同时执行,当装入 一个新的页时,将其页号存入数组:淘汰页的页号=phead;phead=K装入页的页号;head=(head+1)%m;实验执行

9、一条指令时,不模拟指令的执行,只是考虑指令执行是否修改页面, 若修改页面,则将该页的页表中的修改标志位置“ 1”,然后输出转换后的物理地址,并输出物理地址来表示一条指令执行完成; 如果访问的页不在主存时,则产生缺页中断,然后直接转去缺页中断处理,最后模拟中断返回,就是返回冲进 进行地址转换。因为没有实际主存,所有在模拟程序中首先手工输入页表信息,创建该作业 的页表;然后循环执行假定的指令,观察地址转换情况。五、练习题采用LRU页面调度算法编程实现上述虚拟页式存储管理的地址转换。源代码#i nclude#defi ne n 64 /页表的最大长度#defi ne len gth 4 系统为每个作

10、业分配的主存块数structint Inu mber; 页号int flag; 表示页是否在主存中,“ 1表示在,“ 0表示不在in t p nu mber; /该页所在主存块的块号int write; /该页是否被修改过,“ 1表示修改过,“(表示没有修改过int dnu mber; 该页存放在磁盘上的位置,即磁盘块号page n; /页表定义int m;in t page_le ngth; 页表的实际长度 in t ple ngth; /用向量模拟主存 int head;void page_i nterrupt(i nt); / 缺页中断处理函数void comma nd(un sig n

11、ed, in t); /命令处理函数 void mai n()int Inu mber,p nu mber,write,d nu mber;un sig ned laddress;int i;coutvv输入页表的信息,创建页表(页号从 0开始,若页号为1,则结束 输入)n;coutvv请输入页号和辅存地址:;cinlnu mberd nu mber;cin .ig nore ();i=0;while(l nu mber!=-1)pagei.lnumber=lnumber;pagei.flag=0; pagei.write=0; pagei.dnumber=dnumber; i+;coutvv

12、请输入页号和辅存地址:;cinlnumberdnumber;/预先将输入的页调入主存块中 page_length=i;coutvv输入主存块号(输入少于或者等于vvivv个数据,若块号数为1 , 则结束输入 ):;cinpnumber;cin.ignore ();m=0;head=0;while(mvlength&pnumber!=-1)if(mvi) pagem.pnumber=pnumber; pagem.flag=1;调入主存后,标志为置1 pm=m; /记录主存中的页号m+;coutvv输入主存块号(输入少于或者等于vvivv个数据,若块号数为 1,则结束输入 ):;cinpnumbe

13、r; cin.ignore ();/whilecoutvv输入指令性质(1修改,0不需要,其他结束程序运行)和逻辑 地址nvv逻辑地址最大能支持2的16次方1= 65535。n;coutvv输入指令性质:;cinwrite;cin.ignore ();coutvv输入逻辑地址:;cinladdress;cin.ignore ();while(write=0|write=1) command(laddress,write); /将输入的逻辑地址转换成物理地址 coutvv输入指令性质:;cinwrite;cin.ignore ();if(write!=0&write!=1) break;cout

14、输入逻辑地址:;cinladdress;cin.ignore ();/while/main/* 中断处理函数,采用先进先出的页面调度算法 */void page_interrupt(int lnumber)int j;cout发生缺页中断Inumberendl;j=phead;phead=lnumber;head=(head+1)%m;if(pagej.write=1)cout将页vvjvv写回磁盘第vvpagej.dnumbervv块! n; pagej.flag=0;pagelnumber.pnumber=pagej.pnumber;pagelnumber.flag=1;pagelnumb

15、er.write=0;cout淘汰主存块pagej.pnumbervv中的页vvjvv,从磁盘第 pagelnumber.dnumber 块中调入页 lnumber10; /取逻辑地址高 6 位,页号 ad=laddress&0x3ff; /页内地址coutvv该逻辑地址的页号为:vvl nu mbervv 页内地址为:vvadvve ndl; if(lnumber=page_length) /页号大于页表的长度,则无效页号coutvv该页不存在! n;return;if(pagelnumber.flag=1) /页号为 lnumber 在内存当中pnumber=pagelnumber.pnu

16、mber;paddress=pnumbervv10|ad;coutvv逻辑地址是:vvladdressvv 对应物理地址是:vvpaddressvvendl;if(write=1) / 该页被修改过pagelnumber.write=1;else / 页号为 lnumber 不在内存当中,则产生缺页中断page_interrupt(lnumber); goto kk;/command页式存储管理 OPT , LRU 实验报告一、实验目的: 掌握分页式存储管理的基本概念和实现方法。 要求编写一个模拟的分页式管理程 序,并能对分页式存储的页面置换算法进行编写和计算各个算法的缺页率。二、程序设计:首

17、先创建页面链指针数据结构, 并设计页面映像表, 采用数组的方法给定页面映 像。申请缓冲区, 将一个进程的逻辑地址空间划分成若干个大小相等的部分, 每一部 分称做页面或页。 每页都有一个编号, 叫做页号,页号从 0开始依次编排, 如 0, 1, 2。设置等大小的内存块。初始状态:将数据文件的第一个页面装入到该 缓冲区的第 0 块。设计页面置换算法,这里分别采用最佳页面置换算法 OPT 和最近最久未使用置 换算法LRU,并分别计算它们的缺页率,以比较它们的优劣。三、算法说明:执行程序时, 当主存没有可用页面时, 为了选择淘汰主存中的哪一页面, 腾出1 个空闲块以便存放新调入的页面。 淘汰哪个页面的

18、首要问题是选择何种置换算 法。该程序采用人工的方法选择, 依置换策略选择一个可置换的页, 并计算它们 的缺页率以便比较。/*分页式管理实验 -源程序 */#include#include#include#include#define N 16#define num 5 /* 进程分配物理块数目 */int AN=1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4; /*页表映像*/typedef struct pageint address; /* 页面地址 */struct page *next;page;struct page *head,*run,*rear;void jcc

19、reat() /* 进程分配物理块 */int i=1;page *p,*q;head=(page *)malloc(sizeof(page); p=head;for(i=1;inext=q;q-address=0;q-next=NULL;p=q; rear=p;int search(int n)page *p;int i=0;p=head;while(p-next)if(p-next-address=n)printf(Get it at the page %dn,i+1); run=p;return 1;p=p-next;i+;return 0;void changeOPT(int n,in

20、t position)int i;int total=0;int flag=1;int distancenum;int MAX;int order=0;page *p,*q;p=head-next;q=head-next;for(i=0;iaddress=0)flag=0;break;p=p-next;i+;if(!flag)p-address=n;printf(Change the page %dn,i+1);elsewhile(q)for(i=position;iaddress=Ai) distancetotal=i-position; total+; q=q-next;MAX=dista

21、nce0;for(i=0;iMAX)MAX=distancei;order=i;printf(Change the page %dn,order+1);i=0;while(p)if(i=order)p-address=n;i+;p=p-next;void changeLRU(int n)int i=0;int flag=1;page *p,*delect;p=head-next;while(p)if(p-address=0)flag=0;p-address=n;printf(Change the page %dn,i+1);break;p=p-next;i+;if(flag)delect=he

22、ad-next;head-next=delect-next;printf(Delect from the head, and add new to the end.n); delect-address=n;rear-next=delect;rear=delect;rear-next=NULL;float OPT()int i;int lose=0;float losef;float percent;for(i=0;iN;i+)if(search(Ai)=0)lose+;changeOPT(Ai,i);losef=lose; percent=1-(losef/N);return percent;

23、float LRU()int i;int lose=0;float losef;float percent;page *p;for(i=0;inext; run-next=p-next; rear-next=p; rear=p; rear-next=NULL; printf(Move it to end of queue.n); losef=lose;percent=1-(losef/N); return percent;void main() /* 主函数部分 */float percent;int choice;printf(Select the arithmetic:n(1)OPTn(2

24、)LRUnyour choice is:); scanf(%d,&choice);/* 选择页面置换算法 */ jccreat(); /*创建进程 */if(choice=1) /* 采用 OPT 算法置换 */percent=OPT();/*计算OPT时的缺页率*/printf(The percent of OPT is %f,percent);else if(choice=2) /*采用 LRU 算法置换 */percent=LRU(); /*计算LRU时的缺页率*/printf(The percent of OPT is %f,percent);else printf(Your choice is invalid.);getch();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1