操作系统课程设计_第1页
操作系统课程设计_第2页
操作系统课程设计_第3页
操作系统课程设计_第4页
操作系统课程设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统原理课程设计课程名称:模拟请求分页存储管理方式中的地址转换和缺页中断专业班级:组 长:成 员:指导教师: 2012 / 2013 学年 第 1 学期目录设计题目3设计简介3设计目标3设计步骤31.设计概要32.详细设计43.程序流程图6程序截图6设计总结7参考文献8程序代码8设计题目模拟请求分页存储管理方式中的地址转换和缺页中断设计简介在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。通过这次实习理解在分页式存储管理中怎样实现虚拟存储器。了解分页式存储管理如何实现地址转换,认识分页式虚拟存

2、储管理中如何处理缺页中断。设计目标程序完成了请求分页存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数。假定主存8KB,每个主存块2048字节,作业为16KB,系统中每个作业分得主存块3块。设计步骤1.设计概要地址转换:假定主存块的大小为2n字节,主存大小为2m'字节和逻辑地址m位,则进行地址转换时,首先从逻辑地址中的高m-n位中取得页号,然后根据页号查页表,得到块号,并将块号放入物理地址的高m'-n位,最后从逻辑地址中取得低n位放入物理地址的低n位就得到了物理地址。如下

3、图:页 号 页内地址块 号 块内地址页号 块号物理地址 逻辑地址m' n n-1 0M n n-1 0在分页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的部分页面装入主存储器,作业执行时若访问的页面在主存中,则按上述方式进行地址转换,若访问的页面不在主存中,则产生一个“缺页中断”,由操作系统把当前所需的页面装入主存储器后,再次执行时才可以按上述方法进行地址转换。页式虚拟存储管理方式中页表除页号和该页对应的主存块号外,至少还要包括存在标志(该页是否在主存),磁盘位置(该页的副本在磁盘上的位置)和修改标志(该页是否修改过)。缺页中断: 根据当前执行指令中逻辑地址

4、中的页号查页表,判断该页是否在主存储器中,若该页标志为“0”,形成缺页中断。 操作系统处理缺页中断的方法就是查主存分配表,找一个空闲主存块;若无空闲块,查页表,选择一个已在主存的页面,把它暂时调出主存。若在执行过程中该页被修改过,则需将该页信息写回磁盘,否则不必写回; 找出该页的磁盘位置,启动磁盘读出该页信息,把磁盘上读出的信息装入第2步找到的主存块,修改页表中该页的标志为“1”; 由于产生缺页中断的那条指令没有执行完,所以页面装入后应重新执行被中断的指令。当重新执行该指令时,由于要访问的页面已在主存中,所以可正常执行。本程序采用了简单的先进先出的页面置换算法。2.详细设计页表机制:页号物理块

5、号状态位修改位外存地址(1) 状态位:用于指示该页是否调入内存,供程序访问是参考。(2) 修改位:表示该页在调入内存后是否被修改过。由于内存中的每一页都在外存上保留一份副本,因此,若未被修改,在置换该页的时候就不需要再将该页写回到外存上,以减少系统的开销和启动磁盘的次数;若已被修改,则必须将该页重新写回到外存上,以保证外存中所保留的始终是最新副本。(3) 外存地址:用于指出该页在外存上的地址。定义页表struct int page_num;/页号int flag;/状态位 1表示在内存中,0表示不在内存中int block_num;/物理块号int write;/修改位 1表示修改,0表示不修

6、改。int out_num;/磁盘地址page6; /改程序初始页表大小为6页页表初始化截图:程序要求输入作业进程块的逻辑地址和此进程块是否在调入内存中执行的时候需要修改。程序会计算出此逻辑地址的页号,判断该页号是否在内存中,如果在,则程序输出该页的物理地址。如果不在内存中,则启动缺页中断程序,置换出内存中的一页,换入需要的页面。输出此时的页表和该页的物理地址。3.程序流程图程序截图(1)不发生缺页中断:输入:0 2014 (2)发生缺页中断输入1 4000 ( 3 )程序结束输入-1 -1设计总结我们的题目是模拟分页式存储管理中硬件的地址转换和产生缺页中断,主要的思路和步骤就是根据流程图走下

7、来的。在这个实验中由于所学的知识有限,为了理解在分页式存储管理中怎样实现虚拟存储器,做了很多知识准备工作,参考了相关书籍资料,对怎样产生和处理缺页中断有了一定的了解。在对题目深刻了解后我们就开始编程,在编程中我们遇到许多程序和算法问题。因此,在调试上运用了大量的时间。但最后在努力研究下,问题都得到了解决,收获是很大的。而且我在编程是也掌握了不少编程技巧。并在这次的编写过程中,培养了团结合作的精神,大家分工合作,共同讨论,最终完成了这次设计。通过做本次实验,我们对分页式虚拟存储管理系统和缺页中断有了更深入的认识。在分页式虚拟存储系统中是把作业信息的副本存放在磁盘上。而在请求分页系统中,每当所要访

8、问的页面不在内存时,便产生一次缺页中断,请求OS将所缺之页调入内存。本次实验即是做模拟分页式存储管理中硬件的地址转换和缺页中断。通过编写模拟硬件的地址转换工作的程序,不仅加深了我们对绝对地址如何转换的理解,同时也锻炼了我们的编程能力。当然,本次设计也存在一定的缺陷。程序没有设计快表,没有设计内存是否已满。当遇到页面不在内存中,直接就是换出和换入。由于所掌握的知识有限,此程序没有使用图形界面语言编写。在以后的设计中,我们会更在注重程序的完美性和实用性。借此机会,我们要特别感谢指导老师申志军,在我们此门课程的学习中给予悉心指导和帮助。老师的一丝不苟的工作和对教学的认真态度深深感染了我们。最后,向支

9、持和帮助过我们的老师和同学表示深深的谢意。参考文献 计算机操作系统汤子瀛 哲凤屏 汤小丹 编著 西安电子科技大学出版社操作系统习题解答与实验指导李珍 王煜张明 编著 中国铁道出版社C语言程序设计 谭浩强 编著 清华大学出版社数据结构(C语言版) 吴伟民 严蔚敏 编著 清华大学出版社程序代码#include<iostream.h>#include<cstdlib>int m=3;/m为作业内存中的内存块块数int page_length=6;/页表实际长度int p3;/存放在内存中的页的页号int head=0;/内存中页号队列的头指针int size=1024; /系

10、统的页面大小struct int page_num;/页号int flag;/状态位int block_num;/物理块号int write;/修改位int out_num;/磁盘地址page6;void function(int log_add,int write)int ph_add,ad,block_num,page_num;start:page_num=log_add/size;ad=log_add%size;if(page_num>=page_length)cout<<"不存在该页"<<endl;exit(1);if(pagepage

11、_num.flag=1) block_num=pagepage_num.block_num; ph_add=block_num*size+ad; cout<<"对应物理地址是:"<<ph_add<<endl;if (write=1)pagepage_num.write=1;cout<<"此时页表为"<<endl;cout<<"页号 状态位 物理块号 修改位 外存地址 "<<endl;for(int l=0;l<6;l+)cout<<&

12、quot; "<<pagel.page_num<<"t"<<pagel.flag<<"t"<<pagel.block_num<<"t"<<pagel.write<<"t"<<pagel.out_num<<endl;elsecout<<"发生缺页中断 "<<" " /缺页中断程序int j;j=phead;phead=page

13、_num;head=(head+1)%m;if (pagej.write=1) cout<<"将页"<<j<<"写回磁盘第"<<pagej.out_num<<"块"<<endl;pagej.flag=0; pagepage_num.block_num=pagej.block_num;pagepage_num.flag=1; pagej.write=0; cout<<"淘汰物理块号"<<pagej.block_num<

14、;<"中的第"<<j<<"页"<<",从磁盘第"<<pagepage_num.out_num<<"块中调入第"<<page_num<<"页"<<endl;pagej.block_num=0;goto start;void main()int write;int log_add;int i=3;for(int l=0;l<6;l+) /初始页表pagel.page_num=l;pagel.f

15、lag=0;pagel.write=0;pagel.out_num=i;i+;int y=2;for(int q=0;q<3;q+)pageq.block_num=y;pageq.flag=1;pq=q;y+;cout<<"初始页表n"cout<<"页号 状态位 物理块号 修改位 外存地址 "<<endl;for(l=0;l<6;l+)cout<<" "<<pagel.page_num<<"t"<<pagel.flag<<"t"<<pagel.block_num<<"t"<<pagel.write<<"t"&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论