操作系统分页式存储管理课程设计_第1页
操作系统分页式存储管理课程设计_第2页
操作系统分页式存储管理课程设计_第3页
操作系统分页式存储管理课程设计_第4页
操作系统分页式存储管理课程设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持石家庄经济学院华信学院操作系统课程设计报告(学院)系:华信学院专业:计算机科学与技术姓 名:班 级:09级3班学号:032指导教师:孟永刚2012年6月22日操作系统课程设计才跆姓名/|7三学号0324日期2012 年 6 月 11-21号实验室机房2、3指导教师孟永刚设备编号,计题目虚拟存储器一、设计内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。2文档来源为:从网络收集整理.word版本可编辑卜、设计目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道

2、运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器卜为虚拟存储器。通过本实习帮助同学们理解在分页式存储管理中怎样实现虚拟存储器。文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持厂、设计过程、同组人员:陈秀张德蛟1 .数据结构设计本设计所用的数据结构包括:结构体和数组,详细描述如下:指令结构体如下typedef structint page_num;/ 页号int unit_num;/ 单元号order;页表结构体如下typedef structint page_num;/ 页号int flag;/ 标志int memery_num;/ 主存储块号i

3、nt m_flag;/修改标志char location4;/在磁盘上的位置pageform;作业页表数组如下#define C 7pageform aC;主存页表数组如下#define C1 4pageform pC1;2 .算法设计1)该源程序分为以下几个模块:(1)主存初始化模块(2)页表初始化模块(3)打印初始化后的页表信息模块(4)地址转换和产生缺页中断模块(5)先进先出(FIFO)页面调度算法处理缺页中断模块2)对各模块进行详细说明:(1)主存初始化模块函数:memunit_init()入口参数:无出口参数:无功能描述:调入4个页面对4个空闲主存进行页面初始化,调入页面包括 a0,

4、a1,a2,a3; 空闲主存包括 p0,p1,p2,p3。流程图如图1所示:/V 图1j存初始化模出(2)页表初始化模块厂 匚函数:page_init()初始化内存各页表项3文档来源第束从网络收坐整理.word版本可编辑文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持入口参数:无出口参数:无功能描述:对作业页表表项初始化,包括对页面 初始化。流程图如下:a0,a1,a2,a3,a4,a5,a6 的打印页表信息开始图2函数:pageform_print()始化作业各页表项入口参数:无出口参数:无结束功能描述:打印初始化后的作业页表表项,对作业页表表项初始化,包括对页面a0,a1,a2

5、,a3,;a4,a5,a6 各页表项。流程图如图3所示: a4,a5,a6 的初始化;然后打印 a0,a1,a2,a3开始初始化作业各页表项打印作业表各表项图3打缙束表信息模块(4)地址转换和产生缺页中断模H函数:ordeC()入口参数:无出口参数:无功能描述:根据取出的指令的页号查找页表,如果该页的标志位否则发生缺页中断打印 *页号。流程图如图4所示:=1就输出该页的绝对地址,开始WSE 产4,页中断模块(5)先进先出(FIFO)页值调腹箍函数:order2()入口参数:无一出口函数:无查页表功能描述:根据取出的指令的页号查找东表,在该页的标志位 就置该页的修改标志位=1并且计算和输出该页的

6、绝对地址,=1的前提下,如果是存命令,如果不是存命令,就只计算和输 旦 一.丕一.出该页的绝对地址;荏该页的标志位=0的前提下,则模抵 FIFO算法,k初始化为0把pk的各个表项分别赋值给j的各个表项,判断j页的修改标志是否为1 ,如果为1就输IN cmd.page_num,否则只输出IN cmd.page_num行把 cmd.page_num令所引起的有关的赋值给 pk.page_num ,再执行 k:=(k+1)mod m ,然后 4页眄各种表/最后输出|所有作业页面的最新表项。 输出绝对地址4文档来源为:从网络收集整理.word版本可编辑取下一条指令文档来源为:从网络收集整理.word版

7、本可编辑.欢迎下载支持图5先进先出(FIFO)页面调度算法处理缺页中断模块 k程序运行结果源程序代码链接:虚拟存储器.cpp1 .执行程序后初始化的窗口截屏如图6:图6初始化的窗口2 .输入1后的窗口截屏如图7所示:图7输入1后的窗口3 .输入的页号为0,输入的单元号为70,输入有后继指令,结果截屏如图8所示:图8输入已在主存中的作业4 .输入的页号为4,输入的单元号为 53,输入无后继指令,结果截屏如图9所示:图9输入未在主存中的作业5. 输入2后的初始窗口截屏如图 10所示:图10输入题目2的初始化窗口11所示:6.输入的页号为0,输入的单元号为 70,输入存指令,输入无后继指令,结果截屏

8、如图图11输入新指令15文档来源为:从网络收集整理.word版本可编辑7 .输入的页号为4,输入的单元号为 53,输入存指令,输入有后继指令,结果截屏如图12所示:图12输入新指令8 .输入的页号=5,输入的单元号=23,输入非存指令,输入无后继指令,结果截屏如图13所示:图13输入新指令“、设计总结此次试验,全部程序及全部模块均参与研究,现在均已熟悉,对各个模块都详细的说明了它们的功能等等,两周的课程设计结束了, 在这次的课程设计中不仅检验了我所学习的知识,并且更正了我的一,误区,让我对所学的知识有了更深刻的认识。指导教师评语及成绩评语:成绩:年 月 日源代码#include<iost

9、ream.h>#include<string.h>#define C 7#define C1 4 typedef structint page_num;/ 页号int flag;/ 标志int memery_num;/ 主存储块号int m_flag;修改标志char location4;/在磁盘上的位置 pageform;pageform aC;pageform pC1;nt k=0;nt i=0;nt select;pageform j;nt n;是否有后继指令nt x;typedef struct int page_num;/ 页号int unit_num;/ 单元号

10、order;void memunit_init() p0.page_num=0;p0.flag=1;p0.memery_num=5;p0.m_flag=0;strcpy(p0.location,"011");p1.page_num=1;p1.flag=0;p1.memery_num=8;p1.m_flag=0;strcpy(p1.location,"012");p2.page_num=2;p2.flag=1;p2.memery_num=9;a2.m_flag=0;strcpy(p2.location,"013");p3.page_nu

11、m=3;p3.flag=1;p3.memery_num=1;p3.m_flag=0;strcpy(p3.location,"021");void page_init()a0.page_num=0;a0.flag=1;a0.memery_num=5;a0.m_flag=0;strcpy(a0.location,"011");a1.page_num=1;a1.flag=1;a1.memery_num=8;a1.m_flag=0;strcpy(a1.location,"012");a2.page_num=2;a2.flag=1;a2.mem

12、ery_num=9;a2.m_flag=0;strcpy(a2.location,"013");a3.page_num=3;a3.flag=1;a3.memery_num=1;a3.m_flag=0;strcpy(a3.location,"021");a4.page_num=4;a4.flag=0;a4.m_flag=0;strcpy(a4.location,"022");a5.page_num=5;a5.flag=0;a5.m_flag=0;strcpy(a5.location,"023");a6.page_nu

13、m=6;a6.flag=0;a6.m_flag=0;strcpy(a6.location,"121");void recycle。cout<<"页号 "<<"标志for(int i=0;i<C;i+)("<<"主存块号"<<"修改标志"<<"磁盘位置"<<endl;if(ai.flag=1)(cout<<ai.page_num<<" "<<ai

14、.flag<<" "<<ai.memery_num<<""<<ai.m_flag<<""<<ai.location<<endl;)elsecout<<ai.page_num<<" "<<ai.flag<<""<<""<<ai.m_flag<<'<<ai.location<<end

15、l; ) 1 void pageform_print() page_init(); cout<<"当前内存页表如下:"<<endl;recycle();1void order1()page_init();order cmd;cout<<"请输入新的指令:"<<endl;cout<<"请输入新指令的页号:"<<endl;cin>>cmd.page_num;if(cmd.page_num>6|cmd.page_num<0) do(cout<

16、;<"请重新输入正确页号 (0-6):"<<endl;cin>>cmd.page_num;)while(cmd.page_num>6|cmd.page_num<0);)cout<<"请输入新指令的单元号:"<<endl;cin>>cmd.unit_num;cout<<”是否有后继指令(0/1):"<<endl;cin>>n;if(acmd.page_num.flag=1)x=128*acmd.page_num.memery_num+

17、cmd.unit_num;cout<<"绝对地址为:"<<x<<endl;) else cout<<"* "<<cmd.page_num<<endl;)void order2()memunit_init();char r;order cmd;cout<<"请输入新的指令:"<<endl;cout<<"请输入新指令的页号:"<<endl;cin>>cmd.page_num;if(cmd.

18、page_num>6|cmd.page_num<0)(do(cout<<"请重新输入正确页号 (0-6):"<<endl;cin>>cmd.page_num;)while(cmd.page_num>6|cmd.page_num<0);)cout<<”请输入新指令的单元号:";cin>>cmd.unit_num;cout<<"是否存指令(y/n):"<<endl;cin>>r;cout<<”是否有后继指令(0/1):

19、"<<endl;cin>>n;if(acmd.page_num.flag=1)(x=128*acmd.page_num.memery_num+cmd.unit_num; if(r='y')(acmd.page_num.m_flag=1;)else()cout<<"绝对地址为:"<<x<<endl;)else(j.flag=pk.flag;j.m_flag=pk.m_flag;j.memery_num=pk.memery_num;j.page_num=pk.page_num;strcpy(j.location,pk.location);if(j.m_flag=1)(

温馨提示

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

评论

0/150

提交评论