2023年上海大学操作系统实验报告.pdf
《2023年上海大学操作系统实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年上海大学操作系统实验报告.pdf(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、评分:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _上 海 大 学S H ANGHA I UNIVE R SIT Y操作系统实验报告学 院计算机工程与科学专 业计算机科学与技术学 号_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _学生姓名 计算机操作系统实验一报告实 验 一 题 目:操作系统的进程调度姓 名:张佳慧 学 号:121 2 2544实验日期:2 023.1实验环境:M ic ro soft Vi s u a I St u d i o实验目的:进程是操作系统最重要的概念之一,进程调度又是操作系统核心的重要内容。本实习规定学生独立地用高级语言编写和
2、调试一个简朴的进程调度程序。调度算法可任意选择或自行设计。例如,简朴轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。实验内容:1、设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表达。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运营的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。2、调度程序应包含2 3种不同的调度算法,运营时可任意选一种,以利于各种算法的分析比较。3、系统应能显示或打印各进程状态和参数的变化情况,便于观测诸进程的调度过程。操作过程:1、本程序可选用优先数法或简朴轮转法对五个进程进行调度。每个进程处在
3、运营R (r u n)、就绪W(wa i t)和完毕F(fin is h)三种状态之一,并假设起始状态都是就绪状态小为了便于解决,程序进程的运营时间以时间片为单位计算。进程控制块结构如下:进程控制块结构如下:P C B进程标记数链指针优先数/轮转时间片数占 用 C P U 时间片数进程所需时间片数进程状态进程控制块链结构如下:其中:R U N 一当前运营进程指针;H E A D一进程就绪链链首指针;T A I D 一进程就绪链链尾指针。2、算法与框图(1)优先数法。进程就绪链按优先数大小从高到低排列,链首进程一方面投入运营。每过一个时间片,运营进程所需运营的时间片数减1.说明它已运营了一个时间
4、片一,优先数也减3,理由是该进程假如在一个时间片中完毕不了,优先级应当减少一级。接着比较现行进程和就绪链链首进程的优先数,假如仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运营。原运营进程再按其优先数大小插入就绪链,且改变它们相应的进程状态,直至所有进程都运营完各自的时间片数。(2)简朴轮转法。进程就绪链按各进程进入的先后顺序排列,进程每次占用解决机的轮转时间按其重要限度登入进程控制块中的轮转时间片数记录项(相称于优先数法的优先数记录项 位 置)。每过一个时间片,运营进程占用解决机的时间片数加1,然后比较占用解决机的时间片数是否与该进程的轮转时间片数相等,若相等说明
5、已到达轮转时间,应将现运营进程排到就绪链末尾,调度链首进程占用解决机,且改变它们的进程状态,直至所有进程完毕各自的时间片。(3)程序框图天 贻运营结果:P r ior i t y 算法:RUNNING PROCESS/A I T I NG QUEUE:t y p e th e A I g o r ith r ZZTURNTIME 4340 0 06 4 7R W WUNNING PROCESS/A IT I NG QUEUE:RIORITV/ZTURNTI MEPUTIMELLTIMETATUS5204w4107w3407R2304wDRI ORITVZ/TURNTIMEPUTIMEILLTI
6、ME;TATUSR:PUT I MELLTI METfiTUS1115W16UDIDPRIORIT/TURNTIM ECPUTIMEftLLTIMESTATUS1 21 01 15 3W W3116B4107-113WRUNNING PROCESS:3/A ITIN G QUEUE:1 4 2 5DPRIORITY/TURNTIMEDPUTIMEALLTIMESTATUSRUNNING PROCESS:1S IT IN G QUEUE:4 2 5 3IDPRIORITY/TURNTIMEDPUTIMEnLLTIMESTATUSBSKBsasscsEEBaassncaasRUNNING PROC
7、ESS:4S IT IN G QUEUE:2 5 1 31 2 3 4 5201DlO RITVZ/TURNTIM E:PUT I MEILLTIMESTATUS1一2243-224-21-11URUNNING PROCESS:2WAITING QUEUE:5 4 1 3-1 7 -1 0PRIORITV/ZIURNTIMECPUTIMEALLTIMESTATUSRUNNING PROCESSWAITING QUEUE:IDPRIORIT?/TUfiNTIMECPUTIMEALLTIMESTATUSRUNNING PROCESS:3WAITING QUEUE:4IDPRIORITV/TURNT
8、IMECPUTIMEALLTIMESTATUS-1 4 -1 05040FT4761RT3770FT1460F1IDPRIORITV/TURNTIMECPUTIMEALLTIMESTATUSRUNNING PROCESS:NULLl/AITING QUEUE:Ro u nd Robin 算法:P le a se type th e fiIgorithm C P riorityR ound Robin):RIDPRIORITV/ZIURNTIMECPUTIME0LLTIMESTATUS12032302W32108023WRUNNING PROCESS:1WAITING QUEUE:2 3 4 5
9、IDPRIORITV/TURNTIMECPUTIMEALLTIMESTATUS22R2302W3202W05108WBUNNING PROCESS:1WAITING QUEUE:2 3 4 5IDPRIORITV/TURNTIMECPUTIMEftLLTIMESTATUS2 3 2 4 12 0 0 0 01 2 2 3 8W R W W WRUNNING PROCESS:2WAITING QUEUE:3 4 5 1IDPRIORITVZ/TURNTIMECPUTIMEALLTIMERUNNING PROCESSWAITING QUEUE:D12345lORITV/XTURNTIME23241
10、:PUTIME32235ILLTIME00003STATUSFFFFRIUNNING PROCESS:5M ITIN G QUEUE:D12345lORITV/XTURNTIME23241:PUTIME32236ILLTIME00002STATUSFFFFRIUNNING PROCESS:5S IT IN G QUEUE:D12345lORITVZ/TURNTIME23241:PUTIME32237ILLTIME00001:TfiTUSFFFFRIUNNING PROCESS:5M ITIN G QUEUE:D12345lORITV/XTURNTIME23241:PUTIME32238ILLT
11、IME00000;TfiTUSFFFFFRUNNING PROCESS:NULLK IT IN G QUEUE:实验代码:/操作系统实验-进程调度#include#i nc 1 u de#i nc 1 ude#i nelude co n st long n=5;s t ruc t pc b t ype。进程控制块结构(j 1 ong id,prior i ty#r u ntime,to t a 1 tim e;0chQ r statu s;。/R,W,F-运营,就 绪,完毕PCBn+1;don g 1 in k n+1;/链表结构long RUN,HEAD,TAIL;选择算法 long Cho
12、o s eAlgo()。char s128;。p rin tf(P1 ease type the Algorithm(P r io r i t y Round Rob i n):*);ge t s(s);if (s0=P*|s 0=p)。re t u rn 1;r e t u rn 0;/初始化void init()(。long i;fo r (i=l;i=n;i+)6 oPCBi.id=i;oPCBi.p r i o r ity =rand()%4+l;PCBi.runtime=0;PCB i .totaltime=rand()%8+1;PCBi.status=*W;)/显示进程调度状况。v
13、o i d showit()。1 ong i;p.访 十 f(”_ _ n”),叩 r in tf(%-25s,ID);for(i=1;i=n;i+)print f(%4 1 d,PCBi.id);p r i n tf(n%-25s,PRIORIT/TURNTIME);for(i=l:i=n;i+)print f(%4ld,PCBi.prior i t y);printf(n%-25s,C P UTIM E):o f。r(i=1;i =n;i+)p r i ntf(%4ld,PCBi.runtime);p r int f(n%-25s,AL L TIME);for(i=1;i=n;i+)pri
14、ntf(%4ld,PCBi.t o t a l time);o p rin tf(n%-2 5s ,ST ATUS);fo r(i=1;i=n;i+)p r intf(%4 c,PCBi.status);=n);if (RUN!=-1)p rin tf(RUNNING PROCES S:%ldn,R UN);else printfC RUNNING PROCES S:NUL L n);p r i ntf(W A IT IN S Q U E UE:);fo r(i=HEAD;i!=-1;i=lin k i)printf(%Id,i);pri n t f(nn);)优先数调度算法void ma i
15、 n_priority()(。lo n g i,j,k;1 ong s o r t n+1;。i n it();/设立就绪链fo r (i=l;i=n;i+)。s o rti=i;。f or(i=l;ii;j-)i f(PCBso r t j .pr i o r ity PCBsor t j-1.p riori t y)。(k=s o rtj;sortj=s or t j-1;s ortj-l=k;)HEAD二 s o r t 1;f o r (i=1;in;i+)(lin k so r ti=s o r ti+l;T AI L=son t n;linkTAIL=-1;。RUN=-1;。/就绪
16、链设立完毕RUN 二 HEAD;PCBRUN.status=R;HEAD=lin k HEAD;/运营链首进程,w h ile (RUN!=-1)(oshow 汁();。P C B RUN.to+al t ime ;PCBRUN.priority-=3;/优先级减 3,PCB RUN.r u n t i me+;i f(PCBRUN 1 o ta Itime=0)。进木艇营完毕。=PC B RUN.status=F;RUN=HEAD;o if(HEAD!=-1)HEAD=linkH E AD;PCB R U N.stat u s=R ;。elsei f(H EAD !=-1&PCB RUN.p
17、riority PC B RUN.priori t y)。k=I i nkk;。i f(k=T A IL)。linkk=RUN;。插入链尾之后 TAIL=RUN;link RUN=-1;。RUN=HEAD;HEAD:lin k HEAD;oPCBRUN.s ta tu s:R;)e Ise。linkRUN =linkk;。插入链中1 inkk =RUN;RUN=H E A D;。链首进程开始运营HEAD=linkH EAD;。PCBRUN.status=R)。)s h owi t();0)轮转调度算法void mai n _ round_robin()(e long i;i n it();。设
18、立就绪链oHEAD=l;f o r(i=1;in;i+)(link i =i+1;0)o TAIL=n;li n k T A I L=-1;o RUN=-1;。就绪链设立完毕RUN=HEAD;PCBRUN.s ta t us=R 1;。HEAD=linkHEAD;运营首进程o w hile(RUN!=-1)。s h o wi t();PC B R UN.t ot a Itime-PCBR(JN .run t ime+;。if(PCBRUN.tot a Itime=0)进程运营完毕(。PCBRUN.statu s=F;RUN=HEAD;if(HEAD!=-1)HEAD=link HEAD;PCB
19、RUN.s t atus=R)。e Ise(if(HEAD!=-l&PCBRUN.runtime%PCB RUN .priority=0)/轮转时间到(。PCBRUN.status=W;/插入链尾linkTAIL=RUN;linkR U N=-l;TA IL=R UN;R U N=H EAD;链首进程开始运营HEAD=linkHEAO;oPCBRUN.status=R;。)showit();/主函数o int main()。long a Igo;。s r and(t i me(NUL L);algo=Choo s eAlgo();o if(a Igo=1)(main _ priority();
20、优先数法。elsemain-r ound_ r obin();简朴轮转法)oprin tfCSYSTEM FINIS HEDn);retu r n 0;实验体会:通过写代码的过程更加清楚地了解了两种算法的思想和用处,对算法的了解加深的同事也锻炼了写代码的能力。计算机操作系统实验三报告实 验 三 题 目:请求页式存储管理姓 名:张 佳 慧 学 号:1 2 1 2 2 5 4 4 实验日期:2 0 23.1实验环境:Mi c r o s o f t V i s u a I S t u d i o实 验 目 的:近年来,由于大规模集成电路(L S I)和超大规模集成电路(VLSI)技术的发展,使存储
21、器的容量不断扩大,价格大幅度下降。但从使用角度看,存储器的容量和成本总受到一定的限制。所以,提高存储器的效率始终是操作系统研究的重要课题之一。虚拟存储技术是用来扩大内存容量的一种重要方法。学生应独立地用高级语言编写几个常用的存储分派算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。实验内容:为了比较真实地模拟存储管理,可预先生成一个大体符合实际情况的指令地址流。然后模拟这样一种指令序列的执行来计算和分析各种算法的访问命中率。本实验采用页式分派存储管理方案,并通过度析计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣。此外也考虑到改变页
22、面大小和实际存储器容量对计算结果的影响,从而可为算则好的算法、合适的页面尺寸和实存容量提供依据。实验是按下述原则生成指令序列的:(1)50%的指令是顺序执行的。(2)2 5%的指令均匀散布在前地址部分。(3)2 5%的指令均匀散布在后地址部分。示例中选用最佳淘汰算法(O P T)和最近最少使用页面淘汰算法(LR U)计算页面命中率。公式为假定虚存容量为32K,页面尺寸从1 K至8 K,实存容量从4页 至3 2页。(1)最佳淘汰算法(OPT)这是一种抱负的算法,可用来作为衡量其他算法优劣的根据,在实际系统中是难以实现的,由于它必须先知道指令的所有地址流。由于本示例中已预生成了所有的指令地址流,故
23、可计算出最佳命中率。该算法的准则是淘汰已满页表中不再访问或是最迟访问的的页。这就规定将页表中的页逐个与后继指令访问的所有页比较,如后继指令不在访问该页,则把此页淘汰,不然得找出后继指令中最迟访问的页面淘汰。可见最佳淘汰算法要花费比较长的运算时间。(2)最近最少使用页淘汰算法(LRU)这是一种经常使用的方法,有各种不同的实行方案,这里采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。假如当前调用页已在页表内,则把它再次调整到链尾。这样就能保证最近使用的页,总是处在靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。操作过程:
24、编写程序:#i nclude#i ncl u de#include#include#include#include#in e lu d e#inc 1 ud e#include u s in g namespace s t d;int adress32 ;/全局变量数组,地址流int p;/全局变量p是一共有多少地址流vo id i 初始化函数,i nt t;。srand(time(O)/随机产生指令序列p=l 2+r an d()%3 2;cout地址流个数 P=pe n dl;co ut随机产生的地址流序列 n;for(int i=0,j=O;ip;i+,j+Xt=l+r a nd()%9
25、;。ad r es s i =t;将随机产生的指令数存入页面流prin t f(a%d=%di f(i10)p r in t f();i f(j=4)pri n tf(n);。coutendl;void OPT(i n tn)F I FO 算法,n是 M 的值in t e,q=p,m=n-1;in t flag;i n t flagl;in t q ueye=0;i nt Ie a f 1 i nk 3 2;memse t(le a f lin k,O,s i ze o f (1 e aflink);o r(i nt x=0;xq;x+)。e=x;。f 1 ag=O;。for(i n t i=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 上海 大学 操作系统 实验 报告
限制150内