2023年上海大学操作系统实验报告合集.pdf
《2023年上海大学操作系统实验报告合集.pdf》由会员分享,可在线阅读,更多相关《2023年上海大学操作系统实验报告合集.pdf(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、评分:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _上 海 大 学SHA N GHA I U NIVE R SITY操作系统实验报告学 院计算机工程与科学专 业计算机科学与技术学 号 14 1 2260 2学生姓名 余果 计算机操作系统实验一报告实 验 一 题 目:操作系统的进程调度姓 名:余 果 学 号:14122602实验环境 M ier osof t V i su a I Stud i o实验目的:进程是操作系统最重要的概念之一,进程调度又是操作系统核心的重要内容。本实习规定学生独立地用I高级语言编写和调试一个简朴的进程调度程序。调度算法可任意选择或自行设计。例如,简朴轮
2、转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。实验内容:1、设计一个有n 个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表达。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运营的时间、占用CPU 的时间以及进程的状态等,且可按调度算法的不同而增删。2、调度程序应包含2 3 种不同的调度算法,运营时可任意选一种,以利于各种算法的分析比较。3、系统应能显示或打印各进程状态和参数的变化情况,便于观测诸进程的调度过程。操作过程:1、本程序可选用优先数法或简朴轮转法对五个进程进行调度。每个进程处在运营R(ru n)、就绪W(wa i t)和完毕F(fin is
3、h)三种状态之一,并假设起始状态都是就绪状态W。为了便于解决,程序进程的运营时间以时间片为单位计算。进程控制块结构如下:进程控制块结构如下:P C B进程标记数链指针优先数/轮转时间片数占 用 CPU时间片数进程所需时间片数进程状态进程控制块链结构如下:其中:R U N 一当前运营进程指针;H E A D 一进程就绪链链首指针;T A I D 一进程就绪链链尾指针。2、算法与框图(1)优先数法。进程就绪链按优先数大小从高到低排列,链首进程一方面投入运营。每过一个时间片,运营进程所需运营的时间片数减1 ,说明它己运营了一个时间片,优先数也减3,理由是该进程假如在一个时间片中完毕不了,优先级应当减
4、少一级。接着比较现行进程和就绪链链首进程的优先数,假如仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运营。原运营进程再按其优先数大小插入就绪链,且改变它们相应的进程状态,直至所有进程都运营完各自的时间片数。(2 )简朴轮转法。进程就绪链按各进程进入的先后顺序排列,进程每次占用解决机的轮转时间按其重要限度登入进程控制块中的轮转时间片数记录项(相称于优先数法的优先数记录项 位 置)。每过一个时间片,运营进程占用解决机的时间片数加1,然后比较占用解决机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运营进程排到就绪链末尾,调度链首进程占用解决机,
5、且改变它们的进程状态,直至所有进程完毕各自的时间片。(3)程序框图运营结果:Priorit 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/TURNTIMEPUTIMEILLTIME;TATUSR:PUT I MELLTI METfiTUS1115W16UDID
6、PRIORIT/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 PROCESS:4S IT IN G QUEUE:2 5 1 31 2 3 4 5201Dl
7、O RITVZ/TURNTIM E:PUT I MEILLTIMESTATUS1一2243-224-21-11URUNNING PROCESS:2WAITING QUEUE:5 4 1 3-1 7 -1 0PRIORIT/TURNTIMECPUTIMEILLU M ESTATUS-1 4 -1 0RUNNING PROCESSWAITING QUEUE:IDPRIORIT?/TUfiNTIMECPUTIMEALLTIMESTATUSRUNNING PROCESS:3WAITING QUEUE:4IDPRIORITV/TURNTIMECPUTIMEALLTIMESTATUS1460F13770F
8、T5040FT4761RTIDPRIORITV/TURNTIMECPUTIMEALLTIMESTATUSRUNNING PROCESS:NULLl/AITING QUEUE:Round Robin 算法:PRIORITV/TURNTIHECPUTIMEALLTIMESTATUSPRIORITV/TURNTIMECPUTIMEALLTIMESTATUSIPlease type the A Igor ithm :R22R101221UIDPRIORITV/TURNTIMECPUTIMEfiLLTIMESTATUSPRIORITV/ZTURNTIMECPUTIMEALLI1MESTATUSRUNNI
9、NG PROCESS:1WAITING QUEUE:2 3 4 5RUNNING PROCESS:1WA I T I N G Q U E U E:2 3 4 5RUNNING PROCESS:2WA I T I N G Q U E U E:3 4 5 1RUNNING PROCESSWAITING QUEUE:D12345lORITV/XTURNTIME23241:PUTIME32235ILLTIME00003STATUSFFFFRIUNNING PROCESS:5M ITIN G QUEUE:D12345lORITV/XTURNTIME23241:PUTIME32236ILLTIME0000
10、2STATUSFFFFRIUNNING PROCESS:5S IT IN G QUEUE:D12345lORITVZ/TURNTIME23241:PUTIME32237ILLTIME00001:TfiTUSFFFFRIUNNING PROCESS:5M ITIN G QUEUE:D12345lORITV/XTURNTIME23241:PUTIME32238ILLTIME00000;TfiTUSFFFFFRUNNING PROCESS:NULLK IT IN G QUEUE:实验代码:操作系统实验一进程调度#include#inclu de#include#i nclu de co n st I
11、 o ng n=5;struct pcbtype。进程控制块结构(long id,p r iority,runtime,tota 1 time;char statu s /Rt W,F-运营,就 绪,完毕PCBn+l;long linkn+1;/链表结构0 10ng RUN,HEAD,TA I L;选择算法 long ChooseAlgo()(char sl 2 8;printf(H Please type the Algori t hm(PriorityRound Robin):);ge t s(s);if(s 0=P|sO =p)。r e t urn 1;ret u r n 0;0)/初始
12、化。vo i d i nit()。I。ng i;ofor(i=1;i=n;i+)(PCBi .id=i;PCBi.priori ty =rand()%4+l;PCBi.runtime=0;PCB i .totalt i me=r a nd()%8+1;oPCB i.st a tus 二W;)显示进程调度状况 void s h o w i t()(lo n g i;n);。p r in tf(%-25s,ID);fo r(i=l;i=n;i+)pr i ntf(%4l d ,PCBi.i d);p rin tf(n%-2 5 s ,PR IO R IT/T U R N T IM E);fo r(
13、i=l;i =n;i+)p r in t f(%4 Id,PCB i .p rio rity);p rin t f(n%-25s,CPU T IM E );fo r(i =1;i=n;i+)pri n t f(%4 Id,P C B i.r unt i me);p rin tf(n%-2 5s,AL L T IM E );f or(i=l;i =n;i +)p r i n tf(%4 ld,PCB i.t o t a 1 time);p r i n t f (n%-2 5 s ,STATUS );f or(i=1;i=n;i +)pr i nt f(%4c,PC B i .status);p
14、ri nt f(n n );。i f(RUN!=-1)p r intf(RU NNIN&PROCESS:%ldn,RUN);else printf(R U N N IN G PROCESS:NULLXn);p r i ntf(W A IT IN G QUEUE:);f or(i=HEAD;i !=-1;i =1 i nk i )p rin tf(%I d ,i);oPrin tf(n n );)/优先数调度算法void main_prio r i ty()(Ion g i,j,k;1 o n g so r tn+l;o i n it();。/设立就绪链for(i=1;i=n;i+)sorti=
15、i;for(i=l;ii;j-)。if(P C B sort j .p r ior i+y PCB sort j-1 J.priorit y)。(k=sortj ;so r t j=sor+j-1 ;so r t j-1 =k;)0)0)HEAD二 so r t 1 ;for(i=1;in;i+)。1 inks o rt i=s o rt i+1;。TAIL=sortn;o|inkTAIL=-1;-R U N =-1;/就绪链设立完毕RUN=HEAD;oPCB RUN.status=R;HEAD=lin k HEAD?运营链首进程while(RUN!=-1)0 showit();PCBRUN
16、.t ot a It i me;PCBRUN.pr i o r i t y-=3;/优先级减 3P CBRUN.ru n tim e+;。i f (PCB R U N .to ta ltim e 二 二 0)。/进程运营完毕(oPCBRUN.status=F。o R UN 二 HEAD;oif(HEAD!=-1)oHEAD=link HEAD;PCBRUN.status=R;)e 1 se(i f(HEAD!=-1&PCBRUN.pr i ority PCB RUN.prior i ty)k=linkk;。i f(k=TAIL)(-lin k k =RUN;。/插入链尾之后TAIL=RUN;。
17、linkR U N =-1;。RUN=HEAD;oHEAD=linkH E A D;PCB RUN,status=R;)else(lin k RUN=linkk;插入链中I i nkk=RUN;。RUN=HEAD;。链首进程开始运营。HEAD=1 inkHEAD;。PCB RUN.s t atus=R ;)0)0)s h owi t();)/轮转调度算法o void main_rou nd _ robinQ。1 ong i;。i n i t();。设立就绪链oHEAD=l;f o r(i=1;in;i+)(。1 ink i =i+1;)TA IL 二 n;。1 i n kTAI L =-1;R
18、UN=-1;/就绪链设立完毕RUN 二 HEAD;PCB RUN.s ta tu s:RHEAD=lin k H E A D;/运营首进程w hile(RUN!=-1)(。show i t();PCB RUN.tot a Itim e;。PCB RUN.runt i me+;i f (PCB RUN.totaltim e=0)/进程运营完毕(。PCB RUN.status=F。R UN=HEAD;if (HEAD!=-l).HEAD=linkHEAD;。PCB RUN.stat us=R;0 else(if(HEAD!=-1&PCBRUN.r u ntim e%PC B RUN.p r ior
19、i t y=0)轮转时间到(PCB RUN.s t a tu s =W;插入链尾 link T AIL =RUN;dinkRUN=-l;TAIL=RUN;。RUN二HEAD;链首进程开始运营oHEAD=linkHEAD;P CB RUN.status=R)0)。show i t();6)主函数in t main。I o ng al g o;。srand(time(N U LL);algo=ChooseAIg o();o i f(a 1 go=1)(。main_p r i ority();/优先数法。e Ise(mai n _ round _ robin。;/简朴轮转法)printf(S YST
20、EM FINISHEbn );。re t urn 0;0)实验体会:通过写代码的过程更加清楚地了解了两种算法的思想和用处,对算法的了解加深的同事也锻炼了写代码的能力。计算机操作系统实验二报告实 验 二 题 目:死锁观测与避免姓 名:余果 学 号:1 4 1 2 2 6 0 2实 验 环 境:L in u x U b u n t u 系统实验目的:1、目的死锁会引起计算机工作僵死,导致整个系统瘫痪。因此,死锁现象是操作系统特别是大型系统中必须设法防止的。学生应独立的使用高级语言编写和调试一个系统动态分派资源的简朴模拟程序,观测死锁产生的条件,并采用适当的算法,有效的防止死锁的发生。通过实习,更直
21、观地了解死锁的起因,初步掌握防止死锁的简朴方法,加深理解课堂上讲授过的知识。2、规定(1)设计一个n个并发进程共享m 个系统资源的系统。进程可动态地申请资源和释放资源。系统按各进程的申请动态地分派资源。(2)系统应能显示各进程申请和释放资源以及系统动态分派资源的过程,便于用户观测和分析。(3)系统应能选择是否采用防止死锁算法或选用何种防止算法(如有多种算法)。在不采用防止算法时观测死锁现象的发生过程。在使用防止死锁算法时,了解在同样申请条件下,防止死锁的过程。实验内容:1、题目本示例采用银行算法防止死锁的发生。假设有三个并发进程共享十个系统。在三个进程申请的系统资源之和不超过1 0 时,当然不
22、也许发生死锁,由于各个进程申请的资源都能满足。在有一个进程申请的系统资源数超过10 时,必然会发生死锁。应当排除这二种情况。程序采用人工输入各进程的申请资源序列。假如给各进程分派资源,就也许发生死锁,这也就是不采用防止死锁算法的情况。假如,按照一定的规则,为各进程分派资源,就可以防止死锁的发生。示例中采用了银行算法。这是一种如同“瞎子爬山”的方法,即探索一步,前进一步,行不通,再往其他方向试探,直至爬上山顶。这种方法是比较保守的。所花的代价也不小。2、代码#i nclude usin g nam e s p a ce std;#i n c 1 u d e i nt Res 1 5 ;int n
23、,m;struct P ro c essin tH a d 1 5;in t M a x 1 5 ;int Need 1 5;bo o I IsEn d;P r oc e s s esl 5;int cur P rocess;in t Req 1 5;Proc e ss tmpProce s ses15;b ool I s End()b oo 1 R=tru e;for(int i=0;in;i+)wi f(P ro c esses i.IsEnd=f alse)。oR=f als e;“b r e ak;6)return R;)bool I stmpEnd()0boe)1 R=t r u e
24、;f o r(i nt i=0;in;i+)g if(t mpPr o c e s s e sij.IsE n d =false)R=false;。br e ak;00 0|r e turn R;)bo o 1 Legal=fal s e;bool B a nke r()L e gal=true;for(in t i=O;i P r ocessescurPro c ess.Needi)Leg a 1 =f a Ise;g b rea k;|f o r(int i=0;iResi)。oLega 1 =f a 1 s e;。b r eak;0)。i n t t mp 15;f o r(i nt i
25、=0;im;i+)。tm p i=Resi;*for(int i=0;i n;i+)0fol*(intj=0;jm;j+)o tmpProcesses L i.Max j =Pr o c e s sesi.M a x j J;。t mp Pro c e s s esi.N e ed j=Processesi.Nee d j;e tm p P roce s s esi.Hadj=P r oce s s e si.Hadj;。4mpProce s ses i.I sEnd=Process e si.IsE n d;6)dfbr(int i=0;im;i+)3 t mpPr o cessesfcu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 上海 大学 操作系统 实验 报告
限制150内