版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、石家庄经济学院华信学院操作系统课程设计报告(学 院)系: 华信学院 专 业: 计算机科学与技术 姓 名: 班 级: 09级3班 学 号: 40941708032 指导教师: 孟永刚 2012年 6 月 22 日操作系统课程设计报告姓名宋攀学号409417080324日期2012年6月11-21号实验室机房2、3指导教师孟永刚设备编号设计题目虚拟存储器一、设计内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。二、设计目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地
2、址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实习帮助同学们理解在分页式存储管理中怎样实现虚拟存储器。三、设计过程、 同组人员:陈秀 张德蛟1. 数据结构设计本设计所用的数据结构包括:结构体和数组,详细描述如下:指令结构体如下typedef struct int page_num;/页号int unit_num;/单元号order;页表结构体如下typedef structint page_num;/页号int flag;/标志int memery_num;/主存储块号int m_flag;/修改标志char location4;/在磁盘上的位置pageform;作业页表数组如下#de
3、fine C 7pageform aC;主存页表数组如下#define C1 4pageform pC1; 2. 算法设计 1) 该源程序分为以下几个模块: (1)主存初始化模块(2)页表初始化模块(3)打印初始化后的页表信息模块(4)地址转换和产生缺页中断模块(5)先进先出(FIFO)页面调度算法处理缺页中断模块 2) 对各模块进行详细说明: (1)主存初始化模块函数:memunit_init()入口参数:无出口参数:无功能描述:调入4个页面对4个空闲主存进行页面初始化,调入页面包括a0,a1,a2,a3;空闲主存包括 p0,p1,p2,p3。流程图如图1所示:开始初始化内存各页表项结束 图
4、1主存初始化模块(2)页表初始化模块函数:page_init()入口参数:无出口参数:无功能描述:对作业页表表项初始化,包括对页面a0,a1,a2,a3,a4,a5,a6的初始化。流程图如下:开始初始化作业各页表项结束 图2 (3)打印页表信息函数:pageform_print()入口参数:无出口参数:无开始功能描述:打印初始化后的作业页表表项,对作业页表表项初始化,包括对页面a0,a1,a2,a3,a4,a5,a6的初始化;然后打印a0,a1,a2,a3,a4,a5,a6各页表项。流程图如图3所示:初始化作业各页表项打印作业表各表项结束 图3打印页表信息模块(4)地址转换和产生缺页中断模块
5、函数:order1()入口参数:无出口参数:无功能描述:根据取出的指令的页号查找页表,如果该页的标志位=1就输出该页的绝对地址,否则发生缺页中断打印 * 页号。流程图如图4所示:是否是否取一条指令取指令中的访问的页号查页表形成绝对地址输出绝对地址输出“”页号表示发生缺页中断取下一条指令开始该页标志1 有后继指令结束 图 4地址转换和产生缺页中断模块(5)先进先出(FIFO)页面调度算法处理缺页中断模块函数:order2()入口参数:无出口函数:无 功能描述:根据取出的指令的页号查找页表,在该页的标志位=1的前提下,如果是存命令, 就置该页的修改标志位=1并且计算和输出该页的绝对地址,如果不是存
6、命令,就只计算和输 出该页的绝对地址;在该页的标志位=0的前提下,则模拟FIFO算法,k初始化为0,则执行把pk的各个表项分别赋值给j的各个表项,判断j页的修改标志是否为1 ,如果为1就输出 OUT j并且输出IN cmd.page_num,否则只输出 IN cmd.page_num,执行把cmd.page_num赋值给pk.page_num,再执行k:=(k+1)mod m,然后修改所有由于输入命令所引起的有关的页面各种表项,最后输出所有作业页面的最新表项。 流程图如图5所示: 开始 取一条指令 cmd取指令中的页号 cmd.page_num 查页表 是 否页表标志位=1是存指令 形成绝对地
7、址 否是置cmd.page_num页修改标志=1修改页表及pk并输出更新后的页表,k:=(k+1)modC1取下一条指令是否 结束有后继指令否是输出 IN cmd.page_num输出 OUT j.page_numj的修改标志 位=1 j:=pk 输出绝对地址 图5 先进先出(FIFO)页面调度算法处理缺页中断模块4、 程序运行结果 源程序代码链接:虚拟存储器.cpp1.执行程序后初始化的窗口截屏如图6: 图 6 初始化的窗口 2.输入 1后的窗口截屏如图7所示: 图7 输入1后的窗口3.输入的页号为0,输入的单元号为70,输入有后继指令,结果截屏如图8所示: 图 8 输入已在主存中的作业 4
8、. 输入的页号为4,输入的单元号为53,输入无后继指令,结果截屏如图9所示: 图 9 输入未在主存中的作业 5. 输入 2后的初始窗口截屏如图10所示: 图10 输入 题目2的初始化窗口6. 输入的页号为0,输入的单元号为70,输入存指令,输入无后继指令,结果截屏如图11所示: 图 11 输入新指令 7. 输入的页号为4,输入的单元号为53,输入存指令,输入有后继指令,结果截屏如图12所示:图 12 输入新指令 8. 输入的页号=5,输入的单元号=23,输入非存指令,输入无后继指令,结果截屏如图13所示:图 13 输入新指令5、 设计总结 此次试验,全部程序及全部模块均参与研究,现在均已熟悉,
9、对各个模块都详细的说明了它们的功能等等,两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,并且更正了我的一个误区,让我对所学的知识有了更深刻的认识。 六、指导教师评语及成绩评语:成绩: 年 月 日源代码#include#include#define C 7#define C1 4typedef structint page_num;/页号int flag;/标志int memery_num;/主存储块号int m_flag;/修改标志char location4;/在磁盘上的位置pageform;pageform aC;pageform pC1;int k=0;int i=0;
10、int select;pageform j;int n;/是否有后继指令int x;typedef struct int page_num;/页号int unit_num;/单元号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.memer
11、y_num=9;a2.m_flag=0;strcpy(p2.location,013);p3.page_num=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=
12、2;a2.flag=1;a2.memery_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_num=6;a6.flag=0;a6.m_flag=0;strc
13、py(a6.location,121);void recycle()cout页号 标志 主存块号 修改标志 磁盘位置endl;for(int i=0;iC;i+)if(ai.flag=1)coutai.page_num ai.flag ai.memery_numai.m_flag ai.locationendl; elsecoutai.page_num ai.flag ai.m_flag ai.locationendl;void pageform_print() page_init();cout当前内存页表如下:endl;recycle();void order1() page_init();
14、 order cmd; cout请输入新的指令:endl; cout请输入新指令的页号:cmd.page_num;if(cmd.page_num6|cmd.page_num0)docout请重新输入正确页号(0-6):cmd.page_num;while(cmd.page_num6|cmd.page_num0); cout请输入新指令的单元号:cmd.unit_num;cout是否有后继指令(0/1):n; if(acmd.page_num.flag=1)x=128*acmd.page_num.memery_num+cmd.unit_num;cout绝对地址为:xendl;elsecout*
15、cmd.page_numendl;void order2()memunit_init();char r;order cmd; cout请输入新的指令:endl;cout请输入新指令的页号:cmd.page_num;if(cmd.page_num6|cmd.page_num0)docout请重新输入正确页号(0-6):cmd.page_num;while(cmd.page_num6|cmd.page_num0); coutcmd.unit_num;cout是否存指令(y/n):r;cout是否有后继指令(0/1):n;if(acmd.page_num.flag=1)x=128*acmd.page
16、_num.memery_num+cmd.unit_num;if(r=y) acmd.page_num.m_flag=1; else cout绝对地址为:xendl;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) coutOUT j.page_numendl; else coutIN cmd.page_numendl; /内存重新分配 pk.page_num=cmd.page_num; pk.flag=1; pk.memery_num=j.memery_num; strcpy(pk.location,acmd.page_num.location); acmd.page_num.flag=1; acmd.page_num.memery_num=j.memery_num; aj.page_num.flag=0; if(r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025抵押物借款合同范文
- 2025关于北京市装修合同
- 2025有关安全条款的装修合同
- 房地产公司行政人员招聘合同
- 教育机构会计招聘合同模板
- 攀岩馆照明电照施工合同
- 航空零部件原料仓储租赁合同
- 噪音治理人防施工合同
- 船只租赁合同:海岸警卫巡逻
- 2025年塑料包装制品绿色环保认证与技术支持合同3篇
- 保护性约束完整版本
- 埃森哲流程制造-智能工厂规划设计相关两份资料
- 国家开放大学电大《供应链管理》期末题库及答案
- 10万吨绿色航空煤油项目可行性研究报告写作模板-备案审批
- 物业服务水电维修方案
- 2024至2030年中国生活用纸机械行业市场深度分析及发展趋势预测报告
- 2024-2030年中国蔬菜种植市场发展方向及前景需求趋势报告
- 劳动合同变更确认书
- 象棋培训机构合伙协议
- 2025届贵州遵义市桐梓县数学七年级第一学期期末经典试题含解析
- 蓝色粮仓-水产学专业导论智慧树知到期末考试答案章节答案2024年中国海洋大学、山东大学、中国科学院海洋研究所、上海海洋大学、华中农业大学、大连海洋大学、集美大学
评论
0/150
提交评论