上海大学操作系统(二)实验报告(全)_第1页
上海大学操作系统(二)实验报告(全)_第2页
上海大学操作系统(二)实验报告(全)_第3页
上海大学操作系统(二)实验报告(全)_第4页
上海大学操作系统(二)实验报告(全)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、=WORD完整版-可编写-专业资料分享=评分:SHANGHAIUNIVERSITY操作系统实验报告学院计算机工程与科学专业计算机科学与技术学号学生-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=计算机操作系统实验一报告实验一题目:操作系统的进度调动:佳慧学号:12122544实验日期:2015.1实验环境:MicrosoftVisualStudio实验目的:进度是操作系统最重要的观点之一,进度调动又是操作系统核心的主要容。本实习要求学生独立地用高级语言编写和调试一个简单的进度调动程序。调动算法可随意选择或自行设计。比如,简单轮转法和优先数法等。本实习可加深关于进度调动和各样调动算

2、法的理解。实验容:1、设计一个有n个进度工行的进度调动程序。每个进度由一个进度控制块(PCB)表示。进程控制块往常应包含下述信息:进度名、进度优先数、进度需要运行的时间、占用CPU的时间以及进度的状态等,且可按调动算法的不同而增删。2、调动程序应包含23种不同的调动算法,运行时可随意选一种,以利于各样算法的剖析比较。3、系统应能显示或打印各进度状态和参数的变化情况,便于察看诸进度的调动过程。操作过程:1、本程序可采用优先数法或简单轮转法对五个进度进行调动。每个进度处于运行R(run)、就绪W(wait)和达成F(finish)三种状态之一,并假定开端状态都是就绪状态W。为了便于办理,程序进度的

3、运行时间以时间片为单位计算。进度控制块构造如下:进度控制块构造如下:PCB进度表记数链指针优先数/轮转时间片数占用CPU时间片数进度所需时间片数进度状态进度控制块链构造如下:-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=其中:RUN目前运前进度指针;HEAD进度就绪链链首指针;TAID进度就绪链链尾指针。2、算法与框图优先数法。进度就绪链按优先数大小从高到低排列,链首进度首先投入运行。每过一个时间片,运前进度所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,原因是该进度如果在一个时间片中达成不了,优先级应当降低一级。接着比较现前进度和就绪链链首进度的优先数,如果仍

4、是现前进度高或许相同,就让现前进度持续进行,否则,调动就绪链链首进度投入运行。原运前进度再按其优先数大小插入就绪链,且改变它们对应的进度状态,直至所有进度都运行完各自的时间片数。简单轮转法。进度就绪链按各进度进入的先后序次排列,进度每次占用办理机的轮转时间按其重要程度登入进度控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项地点)。每过一个时间片,运前进度占用办理机的时间片数加1,然后比较占用办理机的时间片数是否与该进度的轮转时间片数相等,若相等说明已抵达轮转时间,应将现运前进度排到就绪链末尾,调动链首进度占用办理机,且改变它们的进度状态,直至所有进度达成各自的时间片。程序框图运行结果

5、:Priority算法:-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=RoundRobin算法:-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=实验代码:操作系统实验-进度调动#include#include#include#includeconstlongn=5;structpcbtype/进度控制块构造longid,priority,runtime,totaltime;charstatus;/R,W,F-运行,就绪,达成PCBn+1;longlinkn+1;/链表构造longRUN,HEAD,TAI

6、L;选择算法longChooseAlgo()chars128;printf(PleasetypetheAlgorithm(PriorityRoundRobin):);-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=gets(s);if(s0=P|s0=p)return1;return0;初始化voidinit()longi;for(i=1;i=n;i+)PCBi.id=i;PCBi.priority=rand()%4+1;PCBi.runtime=0;PCBi.totaltime=rand()%8+1;PCBi.status=W;显示进度调动状况voidshowit()longi

7、;printf(=n);printf(%-25s,ID);for(i=1;i=n;i+)printf(%4ld,PCBi.id);printf(n%-25s,PRIORITY/TURNTIME);for(i=1;i=n;i+)printf(%4ld,PCBi.priority);printf(n%-25s,CPUTIME);for(i=1;i=n;i+)printf(%4ld,PCBi.runtime);printf(n%-25s,ALLTIME);for(i=1;i=n;i+)printf(%4ld,PCBi.totaltime);printf(n%-25s,STATUS);for(i=1;

8、i=n;i+)printf(%4c,PCBi.status);printf(n=n);if(RUN!=-1)printf(RUNNINGPROCESS:%ldn,RUN);elseprintf(RUNNINGPROCESS:NULLn);printf(WAITINGQUEUE:);for(i=HEAD;i!=-1;i=linki)printf(%ld,i);printf(nn);/优先数调动算法voidmain_priority()-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=longi,j,k;longsortn+1;init();/设置就绪链for(i=1;i=n;i+)s

9、orti=i;for(i=1;ii;j-)if(PCBsortj.priorityPCBsortj-1.priority)k=sortj;sortj=sortj-1;sortj-1=k;HEAD=sort1;for(i=1;in;i+)linksorti=sorti+1;TAIL=sortn;linkTAIL=-1;RUN=-1;/就绪链设置完成RUN=HEAD;PCBRUN.status=R;HEAD=linkHEAD;/运行链首进度while(RUN!=-1)showit();PCBRUN.totaltime-;PCBRUN.priority-=3;/优先级减3PCBRUN.runtime

10、+;if(PCBRUN.totaltime=0)/进度运行达成PCBRUN.status=F;-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=RUN=HEAD;if(HEAD!=-1)HEAD=linkHEAD;PCBRUN.status=R;elseif(HEAD!=-1&PCBRUN.priorityPCBRUN.priority)k=linkk;if(k=TAIL)linkk=RUN;/插入链尾之后TAIL=RUN;linkRUN=-1;RUN=HEAD;HEAD=linkHEAD;PCBRUN.status=R;elselinkRUN=linkk;/插入链中linkk=R

11、UN;RUN=HEAD;/链首进度开始运行HEAD=linkHEAD;PCBRUN.status=R;showit();轮转调动算法voidmain_round_robin()longi;init();-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=/设置就绪链HEAD=1;for(i=1;in;i+)linki=i+1;TAIL=n;linkTAIL=-1;RUN=-1;/就绪链设置完成RUN=HEAD;PCBRUN.status=R;HEAD=linkHEAD;/运行首进度while(RUN!=-1)showit();PCBRUN.totaltime-;PCBRUN.runt

12、ime+;if(PCBRUN.totaltime=0)/进度运行达成PCBRUN.status=F;RUN=HEAD;if(HEAD!=-1)HEAD=linkHEAD;PCBRUN.status=R;elseif(HEAD!=-1&PCBRUN.runtime%PCBRUN.priority=0)/轮转时间到PCBRUN.status=W;/插入链尾linkTAIL=RUN;linkRUN=-1;TAIL=RUN;RUN=HEAD;/链首进度开始运行HEAD=linkHEAD;PCBRUN.status=R;-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=showit();主函

13、数intmain()longalgo;srand(time(NULL);algo=ChooseAlgo();if(algo=1)main_priority();/优先数法elsemain_round_robin();/简单轮转法printf(SYSTEMFINISHEDn);return0;实验领会:经过写代码的过程更为清晰地认识了两种算法的思想和用处,对算法的认识加深的同事也锻炼了写代码的能力。计算机操作系统实验三报告实验三题目:恳求页式存储管理:佳慧学号:12122544实验日期:2015.1-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=实验环境:MicrosoftVisu

14、alStudio实验目的:近年来,由于大规模集成电路(LSI)和超大规模集成电路(VLSI)技术的发展,使存储器的容量不断扩大,价钱大幅度下降。但从使用角度看,存储器的容量和成本总受到一定的限制。所以,提高存储器的效率始终是操作系统研究的重要课题之一。虚构存储技术是用来扩大存容量的一种重要方法。学生应独立地用高级语言编写几个常用的存储分派算法,并设计一个存储管理的模拟程序,对各样算法进行剖析比较,评测其性能优劣,进而加深对这些算法的认识。实验容:为了比较真切地模拟存储管理,可预先生成一个大概切合实际情况的指令地点流。然后模拟这样一种指令序列的履行来计算和剖析各样算法的接见命中率。本实验采用页式

15、分派存储管理方案,并经过剖析计算不同页面淘汰算法情况下的接见命中率来比较各样算法的优劣。另外也考虑到改变页面大小和实际存储器容量对计算结果的影响,进而可为算则好的算法、合适的页面尺寸和实存容量提供依据。实验是按下述原则生成指令序列的:50%的指令是次序履行的。25%的指令平均散布在前地点部分。25%的指令平均散布在后地点部分。示例中采用最正确淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。公式为假定虚存容量为32K,页面尺寸从1K至8K,实存容量从4页至32页。1)最正确淘汰算法(OPT)这是一种理想的算法,可用来作为权衡其他算法优劣的根据,在实际系统中是难以实现的,因为

16、它必须先知道指令的全部地点流。由于本示例中已预生成了全部的指令地点流,故可计算出最正确命中率。该算法的准则是淘汰已满页表中不再接见或是最迟接见的的页。这就要求将页表中的页逐个与后继指令接见的所有页比较,如后继指令不在接见该页,则把此页淘汰,不然得找出后继指令中最迟接见的页面淘汰。可见最正确淘汰算法要花费比较长的运算时间。2)最近最少使用页淘汰算法(LRU)这是一种经常使用的方法,有各样不同的实施方案,这里采用的是不断调整页表链的方法,即老是淘汰页表链链首的页,而把新接见的页插入链尾。如果目前调用页已在页表,则把它再次调整到链尾。这样就能保证最近使用的页,老是处于凑近链尾部分,而不常使用的页就移

17、到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。操作过程:编写程序:#include#include#include#include#include#include#include-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=#include#includeusingnamespacestd;intadress32;/全局变量数组,地点流intp;/全局变量p是一共有多少地点流voidinit()/初始化函数,intt;srand(time(0);/随机产生指令序列p=12+rand()%32;cout地点流个数P=pendl;cout随机产生的地点流序列n;fo

18、r(inti=0,j=0;ip;i+,j+)t=1+rand()%9;adressi=t;/将随机产生的指令数存入页面流printf(a%d=%d,i,t);j=j%5;if(i10)printf();if(j=4)printf(n);coutendl;voidOPT(intn)/FIFO算法,n是M的值inte,q=p,m=n-1;intflag;intflag1;intqueye=0;intleaflink32;memset(leaflink,0,sizeof(leaflink);for(intx=0;xq;x+)e=x;flag=0;for(inti=0;in;i+)if(leaflin

19、ki=adressx)flag=1;flag1=i;printf(有相同n);break;-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=if(flag=0)intk=0;for(intj=0;j=m)queye+;if(flag=1)inttemp10=0;for(inti=0;i=m;i+)for(inta=e+1;aq;a+)if(leaflinki=adressa)tempi+;intindex=0;for(inti=0;itempi)min=tempi;index=i;intl=leaflinkindex;leaflinkindex=leaflink0;leaflink

20、0=l;for(intj=0;jn;j+)printf(leaflink%d=%d,j,leaflinkj);coutendl;coutM=n时FIFO的命中率为:(1-(double)queye/p)*100%endl;voidLRU(intn)/LRU算法inti;intm=n-1;intq=p;-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=inte;intqueye=0;intflag;intflag1;inty;intleaflink32;memset(leaflink,0,sizeof(leaflink);for(intx=0;xq;x+)flag=0;e=x;for

21、(i=0;in;i+)if(leaflinki=adressx)flag=1;flag1=i;printf(X=%d,lru%d=adress%d=%d,flag=1n,x,i,x,adressx);break;if(flag=0)intk=0;for(intj=0;jm;j+)/012leaflinkk=leaflinkk+1;k+;leaflinkm=adresse;queye+;elseif(flag=1)y=flag1;for(intj=0;jm;j+)leaflinkflag1=leaflinkflag1+1;flag1+;leaflink3=adresse;printf(发现相同后

22、,改变leaflink%d=%dn,m,leaflink3);for(intj=0;jn;j+)printf(leaflink%d=%d,j,leaflinkj);coutendl;cout发生替换次数:queyeendl;coutM=n时LRU的命中率为:(1-(double)queye/p)*100%c;if(c=O)for(inti=3;i4;i+)OPT(i);elseif(c=L)for(inti=4;i5;i+)LRU(i);coutendl;return0;运行结果:最近最少使用:-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=最正确淘汰:-完整版学习资料分享-=W

23、ORD完整版-可编写-专业资料分享=实验领会:经过这次实验,我认识了采用页式分派存储管理方案,并对页式分派存储管理的两个算法最正确淘汰算法和最近最少使用页淘汰算法有了更深入的认识,为之后的学习确立了基础。-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=计算机操作系统实验四报告实验四题目:文件操作与管理:佳慧学号:12122544实验日期:2015.1实验环境:MicrosoftVisualStudio实验目的:随着社会信息量的极大增长,要求计算机办理的信息日新月异,波及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用高级语言编写和调试一个简单

24、的文件系统,模拟文件管理的工作过程。进而对各样文件操作命令的实质容和履行过程有比较深入的认识,掌握它们的实施方法,加深理解讲堂上讲解过的知识。实验容:1.要求:(1)实际一个n个用户的文件系统,每个用户最多可保留(2)限制用户在一次运行中只能翻开l个文件。m个文件。-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=3)系统应能检查打入命令的正确性,犯错要能显示犯错原因。4)对文件必须设置保护举措,如只能履行,允许读、允许写等。在每次翻开文件时根据本次翻开的要求,再次设置保护级别,即可有二级保护。5)对文件的操作起码应有下述几条命令:creat成立文件。delete删除文件。open

25、翻开文件。close封闭文件。read读文件。write写文件。示例:(1)程序采用二级文件目录,即设置了主文件目录(MFD)和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们寄存的地点等。此外为翻开文件设置了运行文件目录(AFD),在文件翻开时应填入翻开文件号,本次翻开保护码和读写指针等。算法与框图(1)因系统小,文件目录的检索使用了简单的线性搜寻,而没有采用Hash等有效算法。(2)文件保护简单实用了三位保护码,对应于允许读、允许写和运行履行,如下所示:111允许写允许读允许履行如对应位为0,则不允

26、许。实验源码:#include#include#include#include#include#include#includeusingnamespacestd;structUFDintfname;intlen;intprocode3;ufd10;structMFDintuser;UFDp5;mfd10;intmain()intx,n=10,flag1=1,flag2=1,flag3=1;if(flag1)-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=for(inti=0;i10;i+)ufdi.fname=i;intt=100+rand()%900;ufdi.len=t;fo

27、r(intj=0;j3;j+)codej=rand()%2;srand(unsigned)time(NULL);boolf10;for(inti=0;i10;i+)mfdi.user=i;memset(f,0,sizeoff);for(intj=0;j5;j+)intt;dot=rand()%10;while(ft);ft=1;mfdi.pj=ufdt;while(n-&flag2)coutinputuser:x;if(x=10)couttryagainendl;break;for(intj=0;j5;j+)coutmfdx.pj.fnamemfdx.pj.lenmfdx.pj

28、.code2endl;coutinputthecommand:endl;coutcreat1;delete2;open3;bye4;close5;read6;write7s;switch(s)case1:if(flag3)cout输入你要创立的文件的名字:mfdx.p0.fname;cout输入你要创立的文件的长度:mfdx.p0.len;-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=cout输入你要创立的文件的权限:endl;for(inti=0;codei;for(intj=0;j

29、5;j+)code2endl;coutinputthecommand:endl;elsecout输入你要创立的文件的名字:mfdx.pindex.fname;cout输入你要创立的文件的长度:mfdx.pindex.len;cout输入你要创立的文件的权限:endl;for(inti=0;codei;for(intj=0;j5;j+)code0m

30、code2endl;coutinputthecommand:endl;break;case2:flag3=0;cout输入要删除的文件:t;for(inti=0;i5;i+)if(mfdx.pi.fname=t)index=i;mfdx.pi.fname=0;mfdx.pi.len=000;memset(code,0,sizeof(code);for(intj=0;j5;j+)code1mf

31、code2endl;coutinputthecommand:endl;break;case3:-完整版学习资料分享-=WORD完整版-可编写-专业资料分享=cout输入要翻开的文件:file;for(inti=0;i5;i+)if(mfdx.pi.fname=file)if(code2=0)cout你没有权限endl;elsecout能够翻开endl;coutinputthecommand:endl;break;case4:for(intj=0;j5;j+)code0mfdx.p

温馨提示

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

评论

0/150

提交评论