欢迎来到天天文库
浏览记录
ID:5618319
大小:549.00 KB
页数:24页
时间:2017-12-20
《虚拟存储器 课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、石家庄经济学院课程设计报告(学院)系:信息工程学院专业:软件工程姓名:班级:学号:指导教师:2012年1月15日操作系统课程设计报告姓名学号日期2012.1.7-2010.1.20实验室152机房指导教师设备编号53设计题目虚拟存储器一、设计内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。二、设计目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实习帮助同学理解在分
2、页式存储管理中怎样实现虚拟存储器。三、设计过程1、数据结构设计作业页表以一个结构体数组实现,每个表项为一个包含标志位、主存块号、磁盘位置、修改标志、time五个变量的结构体,定义P[M]数组为装入到主存的页面,po为正在访问或者要装入的页面,用结构体数组来表示页面。结构体数组及整型变量如下:structpage//页表{longflag;//标志longblock;//主存块号longdisk;//在磁盘上的位置longdirty;//修改标志inttime;}pagelist[SizeOfPage];longP[M]为进入主存的页面建立的数组。2、
3、算法设计(1)主函数main()功能:根据用户所输入的随机数,进行地址转换,使用fifo页面调度算法,以及使用lru页面调度算法。流程图:见图1图1(2)初始化函数page()功能:根据实验的要求,对页表初始化。(3)地址变换函数work()功能:实现模拟分页式存储管理中硬件的地址转换和产生缺页中断的功能。若输入的页面在主存,则根据公式计算出绝对地址,否则输出“*该页页号”。流程图:见图2图2(4)先进先出函数workfifo()功能:实现fifo算法,用FIFO页面调度算法把该作业中最先进入主存的一页调出,然后装载新的页面。流程图:见图3图3(5)
4、GetMax()函数功能:比较进入主存中页time的大小,得到最近最少用的页号,从而得到要调出的页号,返回值是可,即在数组中的位置。流程图:见图4图4(6)worklru()函数功能:实现lru算法,淘汰该作业中距现在最久没被访问过的那页,然后装载新的页面。流程图:见图5图5四、程序实现及运行结果(1)源程序见源程序源程序源程序.cpp(2)运行结果1.菜单及退出2.进行地址变换操作3.进行先进先出操作输入40984.进行最近最少用操作输入4098五、设计总结这次操作系统课程设计是“模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调
5、度算法处理缺页中断”,题目中包括了三个题目,“求绝对地址和模拟产生中断”“利用FIFO算法处理中断”“利用LRU算法处理中断”。本次试验我获得了很多经验,拿到题目之后及时的去读懂题目的要求,并在课余的时候和同学相互讨论题目之中的一些比较难的算法,大家在一起讨论,很容易明白实验内容和如何去实现要求。按照老师说的先把结构研究出来,然后再写程序,让我更清楚的知道怎样去实现实验中的内容。六、指导教师评语及成绩评语:成绩:年月日附源程序#include#include#defineSizeOfPage7#defineSizeO
6、fBlock128#defineM4structpage//页表{longflag;//标志longblock;//主存块号longdisk;//在磁盘上的位置longdirty;//修改标志inttime;}pagelist[SizeOfPage];longk;//队列标记longP[M];//主存页号数组intGetMax()//获取要调出的页号{intmax=-1;inttag=0;for(k=0;kmax){max=pagelist[P[k]].time;tag=k;}}retur
7、ntag;}voidpage(){k=0;P[0]=0;P[1]=1;P[2]=2;P[3]=3;memset(pagelist,0,sizeof(pagelist));pagelist[0].flag=1;pagelist[0].block=5;pagelist[0].disk=011;pagelist[0].dirty=0;pagelist[0].time=0;pagelist[1].flag=1;pagelist[1].block=8;pagelist[1].disk=012;pagelist[1].dirty=0;pagelist[1].ti
8、me=0;pagelist[2].flag=1;pagelist[2].block=9;pagelist[2
此文档下载收益归作者所有