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

付费下载

下载本文档

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

文档简介

操作系统分页式存储管理专业课程设计石家庄经济学院华信学院操作系统课程设计报告(学院)系: 华信学院专 业: 计算机科学与技术姓 名:班 级: 09级3班学 号:指导教师: 孟永刚2012年6月22日操作系统课程设计报告姓名宋攀学号日期2012年6月11-21号实验机房2、3指导教师孟永刚设备编号室设计虚拟存储器题目一、设计内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。二、设计目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实习帮助同学们理解在分页式存储管理中怎样实现虚拟存储器。三、设计过程、同组人员:陈秀 张德蛟数据结构设计本设计所用的数据结构包括:结构体和数组,详细描述如下:指令结构体如下typedefstruct{intpage_num;//页号intunit_num;//单元号}order;页表结构体如下typedefstruct{intpage_num;//页号intflag;//标志intmemery_num;//主存储块号intm_flag;//修改标志charlocation[4];//在磁盘上的位置}pageform;作业页表数组如下#defineC 7pageforma[C];主存页表数组如下#defineC1 4pageformp[C1];算法设计1)该源程序分为以下几个模块:1)主存初始化模块2)页表初始化模块3)打印初始化后的页表信息模块4)地址转换和产生缺页中断模块5)先进先出(FIFO)页面调度算法处理缺页中断模块2)对各模块进行详细说明:(1)主存初始化模块函数:memunit_init()入口参数:无出口参数:无功能描述:调入4个页面对4个空闲主存进行页面初始化,调入页面包括a[0],a[1],a[2],a[3]; 空闲主存包括p[0],p[1],p[2],p[3] 。流程图如图1所示:开始初始化内存结束图1主存初始化模块(2)页表初始化模块函数:page_init()入口参数:无出口参数:无功能描述:对作业页表表项初始化,包括对页 面 a[0],a[1],a[2],a[3] ,a[4],a[5],a[6] 的初始化。流程图如下:开始初始化作业结束图2(3)打印页表信息函数:pageform_print()入口参数:无出口参数:无功能描述:打印初始化后的作业页表表项,对作业页表表项初始化,包括对页面开,a[4],a[5],a[6]的a[0],a[1],a[2],a[3]初始化;然后打印a[0],a[1],a[2],a[3],a[4],a[5],a[6]各页表项。流程图如图3所示:初始化作打印作业结图3打印页表信息模块地址转换和产生缺页中断模块函数:order1()入口参数:无出口参数:无功能描述:根据取出的指令的页号查找页表,如果该页的标志位=1就输出该页的绝对地址,否则发生缺页中断打印*页号。流程图如图4所示:开取一取指令中的查页是 否形成绝 输出该有后结图4地址转换和产生缺页中断模块先进先出(FIFO)页面调度算法处理缺页中断模块函数:order2()入口参数:无出口函数:无功能描述:根据取出的指令的页号查找页表,在该页的标志位=1的前提下,如果是存命令,就置该页的修改标志位=1并且计算和输出该页的绝对地址,如果不是存命令,就只计算和输出该页的绝对地址;在该页的标志位=0的前提下,则模拟FIFO算法,k初始化为0,则执行把p[k]的各个表项分别赋值给j的各个表项,判断j页的修改标志是否为1,如果为1就输出 OUT j 并且输出 INcmd.page_num,否则只输出 INcmd.page_num,执行把cmd.page_num赋值给p[k].page_num,再执行k:=(k+1)modm,然后修改所有由于输入命令所引起的有关的页面各种表项,最后输出所有作业页面的最新表项。流程图如图5所示:开取一条取指令中的页号查页表标形成绝是存是置cmd.page_num页修改标志=1图5先进先出(FIFO)页面调度算法处理缺页中断模块四、程序运行结果源程序代码链接:虚拟存储器.cpp1.执行程序后初始化的窗口截屏如图 6:图6初始化的窗口2.输入1后的窗口截屏如图 7所示:图7输入1后的窗口3.输入的页号为0,输入的单元号为70,输入有后继指令,结果截屏如图8所示:图 8输入已在主存中的作业输入的页号为4,输入的单元号为53,输入无后继指令,结果截屏如图9所示:图 9输入未在主存中的作业5. 输入2后的初始窗口截屏如图 10所示:图10输入题目2的初始化窗口输入的页号为0,输入的单元号为70,输入存指令,输入无后继指令,结果截屏如图11所示:图 11输入新指令输入的页号为4,输入的单元号为53,输入存指令,输入有后继指令,结果截屏如图12所示:图12输入新指令输入的页号=5,输入的单元号=23,输入非存指令,输入无后继指令,结果截屏如图13所示:图 13输入新指令五、设计总结此次试验,全部程序及全部模块均参与研究,现在均已熟悉,对各个模块都详细的说明了它们的功能等等,两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,并且更正了我的一个误区,让我对所学的知识有了更深刻的认识。六、指导教师评语及成绩评语:成绩:年 月 日源代码#include<iostream.h>#include<string.h>#defineC 7#defineC1 4typedefstruct{intpage_num;//页号intflag;//标志intmemery_num;//主存储块号intm_flag;//修改标志charlocation[4];//在磁盘上的位置}pageform;pageforma[C];pageformp[C1];intk=0;inti=0;intselect;pageformj;intn;//是否有后继指令intx;typedefstruct{intpage_num;//页号intunit_num;//单元号}order;voidmemunit_init(){p[0].page_num=0;p[0].flag=1;p[0].memery_num=5;p[0].m_flag=0;strcpy(p[0].location,"011");p[1].page_num=1;p[1].flag=0;p[1].memery_num=8;p[1].m_flag=0;strcpy(p[1].location,"012");p[2].page_num=2;p[2].flag=1;p[2].memery_num=9;a[2].m_flag=0;strcpy(p[2].location,"013");p[3].page_num=3;p[3].flag=1;p[3].memery_num=1;p[3].m_flag=0;strcpy(p[3].location,"021");}voidpage_init(){a[0].page_num=0;a[0].flag=1;a[0].memery_num=5;a[0].m_flag=0;strcpy(a[0].location,"011");a[1].page_num=1;a[1].flag=1;a[1].memery_num=8;a[1].m_flag=0;strcpy(a[1].location,"012");a[2].page_num=2;a[2].flag=1;a[2].memery_num=9;a[2].m_flag=0;strcpy(a[2].location,"013");a[3].page_num=3;a[3].flag=1;a[3].memery_num=1;a[3].m_flag=0;strcpy(a[3].location,"021");a[4].page_num=4;a[4].flag=0;a[4].m_flag=0;strcpy(a[4].location,"022");a[5].page_num=5;a[5].flag=0;a[5].m_flag=0;strcpy(a[5].location,"023");a[6].page_num=6;a[6].flag=0;a[6].m_flag=0;strcpy(a[6].location,"121");}voidrecycle(){cout<<"页号 "<<"标志 "<<"主存块号"<<"修改标志"<<"磁盘位置"<<endl;for(inti=0;i<C;i++){if(a[i].flag==1){cout<<a[i].page_num<<" "<<a[i].flag<<""<<a[i].memery_num<<" "<<a[i].m_flag<<""<<a[i].location<<endl;}elsecout<<a[i].page_num<<" "<<a[i].flag<<""<<" "<<a[i].m_flag<<""<<a[i].location<<endl;}}voidpageform_print(){page_init();cout<<"当前内存页表如下:"<<endl;recycle();}voidorder1(){page_init();ordercmd;cout<<"请输入新的指令:"<<endl;cout<<"请输入新指令的页号:"<<endl;cin>>cmd.page_num;if(cmd.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<<"请输入新指令的单元号: "<<endl;cin>>cmd.unit_num;cout<<"是否有后继指令(0/1):"<<endl;cin>>n;if(a[cmd.page_num].flag==1){x=128*a[cmd.page_num].memery_num+cmd.unit_num;cout<<"绝对地址为:"<<x<<endl;}else{cout<<"*"<<cmd.page_num<<endl;}}voidorder2(){memunit_init();charr;ordercmd;cout<<"请输入新的指令:"<<endl;cout<<"请输入新指令的页号: "<<endl;cin>>cmd.page_num;if(cmd.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):"<<endl;cin>>n;if(a[cmd.page_num].flag==1){x=128*a[cmd.page_num].memery_num+cmd.unit_num;if(r=='y'){a[cmd.page_num].m_flag=1;}else{}cout<<"绝对地址为:"<<x<<endl;}else{j.flag=p[k].flag;j.m_flag=p[k].m_flag;j.memery_num=p[k].memery_num;j.page_num=p[k].page_num;strcpy(j.location,p[k].location);

温馨提示

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

评论

0/150

提交评论