操作系统课程设计报告DOC.doc

上传人:p** 文档编号:5796 上传时间:2022-09-23 格式:DOC 页数:57 大小:404KB
下载 相关 举报
操作系统课程设计报告DOC.doc_第1页
第1页 / 共57页
操作系统课程设计报告DOC.doc_第2页
第2页 / 共57页
操作系统课程设计报告DOC.doc_第3页
第3页 / 共57页
操作系统课程设计报告DOC.doc_第4页
第4页 / 共57页
操作系统课程设计报告DOC.doc_第5页
第5页 / 共57页
操作系统课程设计报告DOC.doc_第6页
第6页 / 共57页
操作系统课程设计报告DOC.doc_第7页
第7页 / 共57页
操作系统课程设计报告DOC.doc_第8页
第8页 / 共57页
操作系统课程设计报告DOC.doc_第9页
第9页 / 共57页
操作系统课程设计报告DOC.doc_第10页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统课程设计报告DOC.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计报告DOC.doc(57页珍藏版)》请在第壹文秘上搜索。

1、-模拟请求页式管理第1章 需求分析1.1设计要求请求页式管理是一种常用的虚拟存储管理技术。本设计通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。本实验要求用Vc或其他高级语言编写和调试。编写程序实现: 1先进先出页面置换算法FIFO2最近最久未使用页面置换算法LRU最正确置换页面置换算法OPT设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。1.2解决方案首先确定实现语言使用c#实现图形化界面,后确定要实现哪些功能,比方算法选择,页面添加,模拟控制。然后确定输出构造以便于程序的测试和验证。将根本框架建立后

2、再进展编程。编程前进展算法构造分析最后编程实现。1.3算法实现原理1、先进先出置换算法FIFO:发生缺页中断时按照页面进入内存顺序总是淘汰最先进入内存的页面。2、最近最久未使用置换算法LRU:发生缺页中断时总是淘汰存在内存中最长时间未被使用的页面。3、最正确置换算法OPT:发生缺页中断时假设一个或几个页面将来将不会被调用则按先进先出原则淘汰页面,假设将来都有调用则比较调用时刻选择最远时刻页面淘汰。4、缺页率:缺页次数占页面调用次数的百分比。第2章 概要设计2.1数据设计常变量:调用页面最大数量Ma*N,内存最大页面数Ma*M待调用页面数组:page_ddMa*N存放等待调用的页面号页面数组专用

3、指针 page_p,用于指向page_dd数组中正需调入内存的页号内存块数组:MemeryMa*M,存放内存当前存放的页号缺页计数器:count,记录缺页次数内存块状态数组:M1Ma*N,M2Ma*N,M3Ma*N,记录每次页面调用完毕后内存各块的状态缺页记录数组sMa*N,用于记录页面调用时是否产生缺页中断,初始化为是2.2函数设计1、页面添加函数:void btnAdd_Click(object sender, EventArgs e)用于实现通过点击按钮实现数据输入。2、内存初始化函数:init(int a, int b,int m1,intm2,intm3)参数有页面数组、内存数组、状

4、态数组,采用先进先出算法对内存先进展装满效劳于先进先出页面置换函数和最正确置换函数。3、 输出函数:void display(inta,intm1,intm2,intm3,charc)用于输出模拟结果,参数有页面数组,内存数组,状态数组,缺页记录数组。再模拟之后调用。4、模拟控制函数:void btnmo_Click(object sender, EventArgs e用于实现通过单击模拟按钮,根据用户所选算法进展模拟并显示结果。5、先进先出算法模拟函数:void FIFO(int a, int b,intm1,intm2,intm3,char s)用于实现先进先出算法模拟,参数有页面数组,内

5、存数组、内存状态记录数组,缺页记录数组。在模拟函数中调用。6、 最近最久未使用算法模拟函数:void LRU(int a, int b, int m1, int m2, int m3, char s)用于实现最近最久未使用算法模拟,参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。7、 最近最久未使用函数辅助函数:void LUR_I(int a,int e)用于对最近最久未使用算法中所用辅助数组记录页面存在时长进展调整,参数有辅助数组及需调整的数据下标。在最近最久未使用函数中调用。8、最正确置换算法模拟函数:void OPT(int a, int b, int m

6、1, int m2, int m3, char s)用于模拟最正确置换算法。参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。9、 最正确置换算法辅助函数:void OPT_F(int a, int e)用于对最正确置换算法中的辅助数组进展调整。参数有辅助数组,需调整数据下标。在最正确置换算法中被调用。10、 重置函数:void btncz_Click(object sender, EventArgs e)用于重新选择算法进展新的模拟。2.3主要算法设计1、初始化函数算法:第一步:将第一个页面调入内存,调整最正确置换算法辅助数组,缺页计数器加一,保存内存数组状态。第

7、二步:调用下一个页面并判断内存中是否有本页面有转第三步,无转第四步。第三步:更改缺页数组对应下标值,记录当前内存状态,调整最正确置换算法辅助数组,页面指针指向下一页。第四步:将页面调入内存,调整最正确置换算法辅助函数,缺页计数器加一,保存内存数组状态。假设内存尚不满转第一步。具体见图1初始化算法流程图。图1 初始化算法流程图2、 先进先出页面置换算法:第一步:检查内存中是否已有需调用页面,有则转第二步,无则转第三步。第二步:记录当前内存状态,修改缺页数组对应下标值。第三步:内存中无需要调用的页面,进展出队操作,然后进展入队操作,记录内存块状态,缺页计数器加一。第四步:假设页面数组未被调用完毕转

8、第一步。具体见图2先进先出算法流程图。图2 先进先出算法流程图3、 最近最久未使用置换算法:第一步:将页面调入内存,记录内存状态,缺页计数器加一,调整辅助数组,页面指针加一。第二步:检查内存中是否已有所需页面,有转第三步,无转第一步。第三步:修改缺页数组对应下标记录,记录内存状态,调整辅助数组,页面指针加一。第四步:内存是否已满,无则转第一步,是则转第五步。第五步:检查内存中是否有所需页面,有则记录当前内存状态,修改缺页数组对应下标值。无则转第六步。第六步:检查辅助数组找出最大值并记录其下标,置换内存中对应下标的数据,调整辅助数组,缺页计数器加一。第七步:页面是否调用完毕未完毕则转第五步。具体

9、见图3最近最久未使用算法流程图。图3 最近最久未使用算法4、 最正确置换算法:第一步:检查内存中是否已有所需页面,有则记录内存状态,修改缺页数组对应下标数值。无则转第二步。第二步:判断内存中各页面的未来调用情况,记录是否还有调用,假设有则记录调用时刻。第三步:分析调用情况,内存中页面都在将来不会被调用转第四步,有一个被调用转第五步,有两个被调用转第六步,全被调用转第七步。第四步:查找辅助数组找到内存中存在时间最长的页面进展置换,修改内存状态,缺页计数器加一,修改辅助数组。第五步:查找到不会被调用的页面,并根据辅助数组选择最早进入内存的页面将其置换。修改内存状态,缺页计数器加一,修改辅助数组。第

10、六步:查找辅助数组找到将来不需要在调用的页面将其置换,修改辅助数组,记录内存状态,缺页计数器加一。第七步:查找辅助数组,找寻最晚被调用的页面,将其置换。记录内存状态,修改辅助数组,缺页计数器加一。第八步:页面是否调用完成,否则转第一步。具体见图4最正确置换算法流程图图4 最正确置换算法流程图2.4界面设计采用c# 设计windows窗体应用程序,使用下拉列表框选择算法,通过按钮添加待调用的页面。通过文本控件显示模拟结果。显示样式:第一行:算法名称; 第二行:调用页面顺序; 第三行至第五行显示内存在每调用一次页面后的状态; 第六行:是否缺页; 最后一行显示缺页率;第3章 详细设计与实现3.1函数

11、设计 1、添加按钮功能实现代码主要功能:实现单击一次添加一个调用页面,并给出相应的提示,如正在输入的是第几次调度页面,在输入为空时能够弹出对话框提示用户,在输入完成时为防止数组越界应在输入完成时隐藏;输入过程中始终保证时输入焦点。private void btnAdd_Click(object sender, EventArgs e) if (t*tAdd.Te*t != )/输入不为空才能继续输入 page_ddi_add = Convert.ToInt32(t*tAdd.Te*t); /*将输入值赋值给页面数组*/ t*tShow.Te*t += t*tAdd.Te*t + ; /*显示供

12、用户查阅*/ i_add+; t*tAdd.Clear(); /*清空*/ if (i_add = Ma*N)/输入完毕时 t*tAdd.ReadOnly = true;/不允许继续输入 btnAdd.Hide();/按钮隐藏 return; t*tAdd.Focus();/设置为输入焦点 label2.Te*t = 第 + (i_add + 1) + 次调度页面:; /*提示用户正在输入的是第几次调度页面*/ /*输入为空则弹出对话框提示用户输入为空*/ else MessageBo*.Show(请输入调用页面!, 输入为空, MessageBo*Buttons.OK, MessageBo*

13、Icon.Warning); t*tAdd.Focus(); 2、 初始化函数主要功能:将内存一先进先出方式填满,并记录每个页面进入时间,效劳于先进先出页面置换算法和最正确置换算法。 void init(int a, int b,int m1,intm2,intm3) /*内存未满时循环*/ for (int i = 0; i Ma*M&page_p Ma*N ; i+) bi = apage_p;/调入内存 /调整辅助数组将刚进入内存的页面的对应时间 OPT_F (O_Q ,i); count+;/缺页计数器加一 m1page_p = b0;/保存内存状态 m2page_p = b1; m3page_p = b2; page_p+;/调用下一页面 /检查内存中是否原先就有需要的页面;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中学教育 > 中考

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!