ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:394.58KB ,
资源ID:3979665      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3979665.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计.docx

1、操作系统课程设计目 录1. 课程设计的目的 12 课程设计的要求 13.课程设计报告内容 131 前言: 132 课程设计的环境 1321 硬件环境: 1322 软件环境: 133 系统技术分析: 1331算法设计: 1332用户文档: 2333技术文档: 234 系统流程图及各模块 235源程序代码清单 3makefile: 3keyio: 4print.c 4t.h 5rand.c 5main.c 6lru.c 8lfu.c 9fifo.c 11opt.c 123.6实验结果及调试 144.总结 17参考文献: 18模拟内存管理1. 课程设计的目的课程设计为学生提供了一个既动手又动脑,独立

2、实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。2 课程设计的要求认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。3.课程设计报告内容31 前言:操作系统是计算机系统中最重要的系统软件,Linux操作系统是源码公开的实用的现代操作系统,利用Linux作为操作系统实验的平台,不但可以理解操作系统原理,同时也可以作为操作系统开发实战的演练。32 课程设计的环境321 硬件环境:本系统适用于Linux(RedHat)环境下的计算机,内存512M1

3、G,配备显示屏、键盘和鼠标等。322 软件环境: 本系统采用makefile实现模块编程,只能够在Linux环境下或使用Linux下的编程工具实现。33 系统技术分析:331算法设计: 将程序分成10个模块,然后采用所编写的makefile文件指出这些模块的编译过程说明。主要模块有程序的输入,输出以及各种页面置换算法函数,包过OPT(最佳置换算法),FIFO(先进先出置换算法),LRU(最近最少使用置换算法),LFU(最久最少使用算法),程序结构相当清晰。t.h文件中主要是一些宏定义。Print.c主要处理程序所用到的输出,包过用到一些简单的界面,方便用户使用。332用户文档:首先将户切换到文

4、件Makefile目录下,生成一个可执行文件result,然后执行该可执行文件,进入到主界面,根据命令提示,可以简单方便的实现对内存的模拟管理,并且将管理过程输出,便于用户分析。333技术文档:本程序有过个.c文件,每个模块对应于一个.c文件,便于调试。而且每个.c文件里面对代码都有详细的说明,便于阅读。在所有的.c文件中都尽量的使得程序简洁,达到了程序设计的要求,即用最为便捷的方法,用最简单的代码达到最好的效果。一些具体的内容查看源代码。34 系统流程图及各模块 模块说明:产生随机页面:用rand.c文件来实现,void rand(int n,char p)这函数是产生n个110的随机数放到

5、p数组里面手动输入页面:用keyio.c文件来实现,void keyinput(int n,char p)由键盘输入n个整数放到p数组里面,void keyoutput(int n,char p),输出刚刚由键盘输入输入的页面,用于确认是否有输入错误OPT: void Optimal(char ym,int n)最佳置换算法,用opt.c实现FIFO:void FIFO(char ym,int n)先进先出算法,用fifo.c实现LRU: void LRU(char ym,int n)最近最久未使用算法,用lru.c实现LFU: void LFU(char ym,int n)最少使用算法,用l

6、fu.c实现结果输出:用print.c来实现,void display1()实现算法的选择,void display2(int select,char ym,int n)输出显示结果的框架,并调用print(),void Print(),用于显示所选择算法的置换结果Makefil:链接程序,并指明编译的过程35源程序代码清单makefile:obj=main.o rand.o keyio.o print.o lfu.o lru.o opt.o fifo.o result:$(obj) g+ $(obj) -o $main.o:main.c g+ -c main.cfifo.o:fifo.c t

7、.h g+ -c fifo.ckeyio.o:keyio.c g+ -c keyio.clfu.o:lfu.c g+ -c lfu.clru.o:lru.c g+ -c lru.copt.o:opt.c g+ -c opt.cprint.o:print.c g+ -c print.crand.o:rand.c g+ -c rand.c.PHONY:cleanclean: rm -f $(obj)keyio:#includeiostream/*键盘手动输入n个页面*/void keyinput(int n,char p)/*由键盘输入n个整数放到p数组里面*/ int i; for(i=0;in

8、;i+) scanf(%d,&pi);void keyoutput(int n,char p)/输出键盘输入的页面 int i; for(i=0;i- (1) 最佳置换算法 - (2) 先进先出算法 - (3) 最近最久未使用算法 - (4) 最少使用算法 - (0) 退出 -|n);void display2(int select,char ym,int n) switch(select) case 1: printf( *Optimal算法*n); printf(t置换页面:); keyoutput(n,ym); printf(n); Optimal(ym,n);/输出置换后的结果 bre

9、ak; case 2: printf( *F I F O算法*n); printf(t置换页面:); keyoutput(n,ym); printf(n); FIFO(ym,n); break; case 3: printf( *L R U算法*n); printf(t置换页面:); keyoutput(n,ym); printf(n); LRU(ym,n); break; case 4: printf( *L F U算法*n); printf(t置换页面:); keyoutput(n,ym); printf(n); LFU(ym,n); break; case 0:break; void P

10、rint()/输出环节int i;for(i=0;ipNum;i+) printf( %3d ,pblocki);printf(n);t.h#define pNum 3 /物理块的数目rand.c#includeiostream#includectimevoid srand();void rand(int n,char p)/*这函数是产生n个110的随机数放到p数组里面*/ int START=1; int END=10; int v; int i; srand(time(NULL); printf(产生的随机页面序列为:n); for(i=0; in; i+) v=rand()%(END-

11、START+1)+START; pi=v;printf(%d ,pi); main.c#include#include#include #include#includet.h/#define pNum 3 /*系统为进程分配的物理块数*/int qynum;/*缺页次数*/char pblockpNum;float qyl;/*缺页率*/void rand(int n,char *);void keyinput(int ,char*);void keyoutput(int ,char*);void display1();void display2(int ,char*,int );void P

12、rint();using namespace std;int main() / pNum=3; qynum=0; int select,s1,s2,i; int n;/页面总数 char ym100;/ system(color 1f); / system(mode con: cols=140 lines=90);/背景颜色lp3:coutendlendlendl-作者:郑杰峰 学号:081150023- (1) 自动随机产生 - (2) 键盘输入产生 - (0) 退 出 -|n); coutendlendlendlendl; printf(请选择产生页面走向序列的方式(选择1或2,选择0退出

13、):); scanf(%d,&select); switch(select) case 1: lp2: printf(要产生的随机页面总数: ); scanf(%d,&n); rand(n,ym); lp1: printf(n你想选择那种算法?(请选择14,选0退出):n); display1(); printf(选: ); scanf(%d,&s1); display2(s1,ym,n); for(i=0;i-1.选择其他算法-2.重新产生随机页面-3.退到主界面-0.直接退出-|n); int s; printf(选 : ); scanf(%d,&s); switch(s) printf(

14、nnn); case 0: exit(0); case 1: goto lp1;break; case 2: goto lp2;break;/重新产生随机数 case 3: goto lp3;break;/回到主界面 break; case 2: lp22: printf(输入页面总数 : ); scanf(%d,&n); keyinput(n,ym); printf(键盘输入的页面为n); keyoutput(n,ym);lp11: printf(nn你想选择那种算法?(请选择14,选0退出):n); display1(); printf(选:); scanf(%d,&s2); displa

15、y2(s2,ym,n); for(i=0;i-1.选择其他算法-2.重新输入页面-3.退到主界面-0.直接退出-|n); printf(选 : ); scanf(%d,&s); switch(s) printf(nnn); case 0: exit(0); case 1: goto lp11;break; case 2: goto lp22;break;/重新产生随机数 case 3: goto lp3;break;/回到主界面 break; case 0:break; return 0;lru.c#includeiostream/extern int pNum;#includet.husin

16、g namespace std;extern int qynum;extern char pblockpNum;extern float qyl;void Print();void LRU(char ym,int n)/*最近最久未使用算法*/ int c=0,i,j,m=0; qynum=0; for(j=0;jn;j+) if(j=0) /对第一个页面处理 pblock0=ymj; Print(); qynum+; continue; if(j&qynum3) for(i=0;iqynum;i+) if(pblocki=ymj) if(qynum=2&i=0)/缺页为2,再次pblock0

17、相同处理 swap(pblock0,pblock1); Print(); break; if(i=qynum) pblockqynum=ymj; Print(); qynum+; continue; for(i=0;ipNum;i+) if(pblocki=ymj) if(i=0) char temp; temp=pblock0; pblock0=pblock1; pblock1=pblock2; pblock2=temp; if(i=1) swap(pblock1,pblock2); Print(); break; if(ipNum) continue; else qynum+; pbloc

18、k0=pblock1; pblock1=pblock2; pblock2=ymj; Print(); qyl=(float)qynum/n; printf(|-|n); printf(| 页面总数为:%dn,n); printf( 缺页次数为:%dn,qynum); printf( 缺页率为:%fn,qyl); printf(|-|n);lfu.c#includeiostream/extern int pNum;extern int qynum;#includet.hextern char pblock3;extern float qyl;void Print();void LFU(char

19、ym,int n)/*最少使用算法*/ int i,t=0,j,m=0; qynum=0; int p3=0;/记录每一个物理块没被使用的次数 for(j=0;jn;j+) if(j=0) /对第一个页面处理 pblock0=ymj; Print(); qynum+; continue; if(j&qynum3) for(i=0;iqynum;i+) if(pblocki=ymj) Print(); int k; /让pi=0;其他的+1 for(k=0;kqynum;k+) if(k!=i) pk+; else pk=0; break; if(i=qynum) pblockqynum=ymj

20、; Print(); qynum+; pi=0; while(i-)/让pi=0;其他的+1 pi+; continue; for(i=0;ipNum;i+) if(pblocki=ymj) Print(); int k; for(k=0;kpNum;k+) if(k!=i) pk+; else pk=0; break; if(ipNum) continue; else qynum+; int k,max=0,sign; for(k=0;kpNum;k+) /找出物理块中最久没有使用的 if(maxpk) max=pk; sign=k; for(k=0;kpNum;k+) if(k!=sign

21、) pk+; else pk=0; pblocksign=ymj;/替换掉最久没用使用的 Print(); qyl=(float)qynum/n; printf(|-|n); printf(| 页面总数为:%dn,n); printf( 缺页次数为:%dn,qynum); printf( 缺页率为:%fn,qyl); printf(|-|n);fifo.c#includeiostream/extern int pNum;#includet.hextern int qynum;extern char pblockpNum;extern float qyl;void Print();void FIFO(char ym,int n)/*先进先出算法*/ int i,j,m=0; qynum=0;/*防止多次选择时qynum会累加*/ for(j=0;jn;j+)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1