操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx

上传人:lao****ou 文档编号:1115802 上传时间:2024-11-19 格式:DOCX 页数:19 大小:42.68KB
下载 相关 举报
操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx_第1页
第1页 / 共19页
操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx_第2页
第2页 / 共19页
操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx_第3页
第3页 / 共19页
操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx_第4页
第4页 / 共19页
操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计说明书 --基于Linux的模拟存储器管理的设计与实现.docx(19页珍藏版)》请在第一文库网上搜索。

1、操作系统课程设计说明书学院、系:软件学院专业:软件工程设计题目:基于1in11X的模拟存储器管理的设计与实现1需求分析a)设计目的存储器管理是操作系统的重要功能之一,其中的页面置换算法是虚拟存储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现FIF0、1RU、NRU和OPT几种经典页面置换算法的基础上,比较各种置换算法的效率和优缺点,从而了解虚拟存储实现的过程。b)设计内容和要求1)在内存开辟两块存储空间,分别模拟内存和外存,大小分别是8M,25Mo2)给定三个文件A,B,C,大小分别是4.2M,8M和9.8M。模拟其并发执行过程。3)每个进程在内存中固定分配4个页面,缺页时分别

2、采用四种置换算法(FIFO,1RU,NUR,OPT)进行置换。4)假定页面大小为512K,进程执行时页面调度顺序要求手动输入。5)可以在屏幕上输出各进程页面置换过程(以图表形式描述)以及每种页面置换算法的缺页率和置换率,并对比各算法的优劣。6)要求在1inUX平台下,使用C语言进行开发。2 总体设计a)程序的主框架采用数组的方式来实现,每个进程在内存里分配的4个页面就是是个一个数组的4个数,然后用二维数组是,第一维表示这个数组中包含的数,而第二维则是实现了一个计数的功能,每个算法中的作用基本相同。b)输入的序列也作为一个数组来实现的(由于不会使用动态的数组,在使用的时候还需要输入序列的个数,然

3、后系统会分别提示输入序列中的第一个数)c)置换算法FIFO算法是先调入内存的页,先被置换出去。我们用数组P来代表内存中的4个块。输入的序列存放在一个数组XUIie口中,当执行一个页面的时候,先检测此页面是否在内存中,假如存在,给出提示;假如不在,将4个页面依次的调入内存中或者将4个块依次置换。定义了一个用于的计数的变量X,用x=(x+1)%4用实现4个内存块的循环置换,实现了FIFO算法。1RU算法是最佳最久未使用,即前边最近未被使用的页面优先被置换出去。我们用了二维p口2来代表内存中的4个块,p0代表页面,p1代表一个计数,4个内存块的计数初始为0,1,2,3,当执行一个页面的时候,就将代表

4、那个页面的计数总体加1,以此来标记最近最久未使用的页面OPT算法是最佳转换算法,即向后看,最将要使用的页面优先被转换出去。我们用数组P2来代表内存中的4个块,P0代表页面,P1存在两种状态0,1,初始为0,当要置换页面的时候检测后面的页面序列,当检测到其中的一个页面的时候就将那个页面的块的计数变为1直到检测出其中的三个页面或者将整个页面序列都检测完,就将最前边计数为0的页面置换出去。NUR算法。我们用数组P2来代表内存中的4个块,P0代表页面,P1存在两种状态0,1初始为0,当执行完一个一个页面后,就将此页面块的计数变为1,每执行4个页面就将其初始化为0,当置换页面时就将最前边计数为0的页面置

5、换。3 .详细设计FIFO置换算法模块voidFRun(intn,intX)(f1oatqueye1v,zhihuan1v;inti,j,x;intP4=0,0,0,0);intqueye-0;intzhihuan=O;x=0;for(i=0;in;i+)(if(PO=Xi)11(P1=xi)(P2=Xi)(P3=Xi)Printf(执行的刎号页面在内存中n,Xi);e1seif(Px=O)(Printf(将第刎号页面调入内存”,Xi);queye+;e1se(Printf(将%d号页面置换为%d号页面”,Px,Xi);zhihuan+;queye+;Px=Xi;x=(x+1)%4;print

6、f%d%d%d%dP0,P1,P2,P3);)PrinIf(本次执行过程缺页次数为%d,置换次数为%dn”,queye,zhihuan);queye1v=(f1oat)queyen;zhihuan1v=(f1oat)zhihuan/n;Prin1f(本次执行的缺页率为%f,置换率为%fn”,queye1v,zhihuan1v);)NUR置换算法模块voidNRun(intn,intX)(inti,j,cunzai;f1oatzhihuan1v,queye1v;intmange=0;intqueye=0;intzhihuan-0;inta-0;intP42=0,0),0,0,0,0),0,0;f

7、or(i=0;in;i+)(cunzai=0;if(i%4=0)P01=0;P11=0;P=0;P31=0;for(j=0;j4;j+)(if(PjO=Xi)(Printf(要执行的%d号页面在内存中n”,Xi);PjU=1;cunzai=1;)if(cunzai=0)(if(mange4)(Printf(将%d号页面调入内存中,Xi);Pmange0=Xi;Pmange1=1;mange+;queye+;)e1se(if(PO1=O)a=0;e1seif(P11=O)a=1e1seif(P21=0)a=2;e1se(if(P31=0)a=3;)Printf(将%d页置换为刎页”,Pa0,Xi

8、);Pa0=Xi;Pa1=1;queye+;ZhihUan+;)printf(*%d%d%d%dn*,P00,P10,P20,P30);)printf(“本次执行过程缺页次数为%d,置换次数为%dn”,queye,zhihuan);queye1v=(f1oat)queyen;zhihuan1v=(f1oat)zhihuann;printf(本次执行的缺页率为%f,置换率为%fn”,queye1v,zhihuan1v);)1RU置换算法模块void1Run(intn,intX)(f1oatqueye1v,zhihuan1v;itj,i,q;intqueye=O;intzhihuan=O;intP

9、42=0,0),0,1,0,2,0,3;intm=3;intcunzai;for(i=0;in;i+)(cunzai=0;for(j=0;j4;j+)(if(PjO=Xi)(Printf(要执行的外d号页面在内存中n”,Xi);m+;Pj1=m;cunzai=1;)if(cunzai=0)(q=Bijiao(P01,P11,P21,P31);if(Pq1=4)Printf(将%d号页面置换为%d号页面”,Pq0,Xi);queye+;zhihuan+;)PqO=Xi;m+;Pq1=m;printf%d%d%d%dn*,P00,P10,P20,P30);Printf(“本次执行缺页次数为%d,置

10、换次数为%dn”,queye,zhihuan);queye1v=(f1oat)queyen;zhihuan1v=(f1oat)zhihuann;printf(“本次执行的缺页率为%f,置换率为%fn”,queye1v,zhihuan1v);)intBijiao(inta,intb,intc,intd)(intm,n,x;if(ab)m=b;e1sem=a;if(cd)n=d;e1sen=c;if(mn)x=n;e1sex=m;if(x=a)return0;if(x=b)return1;if(x=c)return2;if(xd)return3;)OPT置换算法模块voidORun(intn,in

11、tX)f1oatqueye1v,zhihuan1v;inti,j,cunzai;intshu;intmange=O;inta=O;intqueye=O;intzhihan-O;intP42=0,0,0,0,0,0,0,0);for(i=0;in;i+)(P01=0;P11=0;P21=0;P31=0;shu=0;cunzai-0;if(POO=Xi)11(P1O=Xi)(P2O=Xi)I(P3O=Xi)(Printf(要执行的%d号页面在内存中n”,Xi);cunzai=1;if(cunzai=0)if(mange4)(Printf(将%d号页面调入内存中,Xi);PmangeO=Xi;man

12、ge+;queye+;j=i+1;whi1e(shu3)if(PO1=O)if(POO=Xj)PO1=bshuJif(P11=O)if(P1O=Xj)P11=bshuJif(P21=O)if(P20=Xj)P21=1jshu+jif(P=O)if(P30=Xj)P31=1;shu+;j+;if(j=n)break;if(PO1=O)a=0e1seif(P11=O)e1seif(P21=0)a=2;e1seif(P31=0)a=3;Pa0,Xi);PrinIf(将%d号页面置换为%d号页面PaO=Xi;queye+;zhihuan+;)printf(*%d%d%d%dn,P00,P10,P20,P30);)printf(本次执行缺页次数为%d,置换次数为%dn”,queye,zhihuan);queye1v=(f1oat)queyen;zhihuan1v=(f1oat)zhihuann;Printf(本次执行的缺页率为%f,置换率为%fn”,queye1v,zhihuan1v);主模块voidmain()(intg,x,z,Acaozuo,Bcaozuo,Ccaozuo,Ashu,Bshu,Cshu;intAxu1ie100,Bxu

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

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

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



客服