《2023年上海大学操作系统实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年上海大学操作系统实验报告.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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=
26、O;in;i+)。i f(I e af I i nk i=a dressx)f lag=l;。f lag 1=i ;。p r i n t f (有相同n“);。break;6)。i f(f 1 ag=0)int k=0;f or(int j=0;j=m)que ye+;0 0 i f(flag=1Xint temp 10 =0;f or(i n t i=0;i=m;i+)fo r (int a=e+l;aq;a+)if(lea flink i=a dressa)tempi+;)i nt index=0;for(in t i=0;itemp i )min=t empi;i ndex=i;)int
27、 I=leafl i nk i n dex;leaflin k ind ex=leaflink 0;leaf 1 ink 0=l;O 0 f or(int j=0;j n;j+)p r in t f(le a flink%d=%d ,j,leaflink j);c o u t endl;coutAA=n0it F I F。的命中率为:(L(double)q u eye/p)*1 0 0%endl;)void L R U(in t n)LR U 算法。i n t i;i n t m=n-1;dnt q=p;in t e;H n t queye=O;int f I a g;。i n t fl a
28、g 1;o int y;in t lea f 1 ink3 2;memset(lea f link.O,s izeof(l e aflin k);for(int x=O;xq;x+)o f I a g=0;e e=x;f o r(i=0;in;i+)s i f(le a flinki=adr e s s x Xo fla g=l;。1 ag l=i;。叩rin t f(X=%dz 1 ru%d =a dres s%d=%d,f lag二 ln zx,x,a d r essx);。b r ea k;0 0。0 6 i f(f I a g=0)i nt k=0;。fo r (in t j=O;j
29、m;j+)/0 1 2lea f I i n k k=leaflin k k+1;k+;le a f link m=adresse;ooqu eye+;。)e Ise i f(fl a g=l)y=f 1 ag 1;for(int j=O;jm;j+)。oo|eafl i n kflag 1=l eaflink fl a g 1+1;flagl+;)。leaflink3=adr e ss e;-p r i n t f(“发现相同后,改变le a fl i n k%d =%d n m je a f 1 in k 3);)。fo r(int j=0;j n;j+)p r intf(lea f li
30、nk%d=%d,jjeaf 1 in k j);coutendl;。co u t 发生替换次数:quey e e ndl;cout=,n”时 LRU 的命中率为(1-(double)quey e/p)*1 0 0%endl;)int ma i n()(in i t();c h a r c;p rin t f(请输入选择算法(O:最 佳 淘 汰L:最近最少使用):);cinc;。if(c=O)for(i nt i=3;i4;i+)(”OPT(i);)else i f(c=L)for(in t i=4;i 5le a flin k 3=9le a flin k t3=llea f lin k 3=
31、8X=5,Iru tl=ad ress5 3=9 lag=1发现相同后,改变le a f lin k 13 J=9leaflin k 0J=5 le a flin k tl=1 le a f lin k 2=8有相同:X=6,lru0=ad ress6=5,lag=1发现相同后,改变leaflink r31=5le a flin k 01=1 le a flin k 1=8 le a flin k 21=9leaflinkC 3=9leaflin k 33=5lea flin k 0=8 le a flin k tl3=9 lea flin k 2=5有相同:X=8,IruLl=ad ress
32、8=9 lag=1发现相同后,改变le a f lin k 13 J=9lea flin k 0=8 le a flin k tl=5 le a flin k 21=2lea flin k t3=2leaflin k 3J=9像现相同后 变Iealink3=5le a flin k 0=l le a flin k tl=8 lea flin k 2=9le a flin k 0=8 le a flin k tl=9 le a flin k 21=5盾相同:lea f lin k 3 3=5le a flin k 33=2X=8,IruL l=ad ress8=9,fla g=1发现相同后,改变
33、le a flin k C 1=9lea flin k 0=8 le a flin k tl=5 lea f lin k 2=2恂相同:X=9,lru2=ad ress9=2,fla g=1发现相同后,改变le a f lin k。】=2lea flin k 0=8 le a flin k tl1=5 leaflinkC 2=9府相同:X=10,IruLl=adress10=5,Flag=1发现相同后,改变le a f lin k 131=5lea flin k 0=8 lea f lin k 1=9 lealinkC 2=2lea flin k 0=9 le a flin k C l3=2
34、le a flin k 12J=5leaflinkL 0=2 le a flin k tl=5 leaflinkC 2=1lea f linkL 3=9leaflin k 33=2le a flin k 0=5 le a flin k tl=1 le a flin k 2=8有相同:leaflinkC 3=5lea f lin k 3 3=1lea flin k 3=8lea f lin k 3=6X=14,lru2=ad ress14J=8,Flag=1发现相同后,改变le a f lin k 13 J=8lea flin k 0=5 le a flin k C l1-1 le a flin
35、 k 2 1=6区生畲换达致心,H=4时LRU的命中率为:40zlea flin k 3=8le a f lin k 0=3 leaflin k L l=5 lea flin k 2=1有相同:lea f lin k 3=9lea flin k 4=0X=6,Ini1=ad ress6=5,fla g=1发现相同后,改变lea flin k 4=5lea flin k 0=3 le a flin k tl=1 leaflinkC 2=9le a flin k 0=l leaflin k C l=9 lea f linkL 2=5有相同:X=8,Iru tl=adress L8=9 lag=1发
36、现相同后,改变lea f lin k 14 J=9lea flin k 0=1 leaflin k C l=5 le a flin k 2=0lea flin k 0=5 leaflin k L l=0 lea f lin k 2=9有相同:X=10,lru0=adress10=5.fla g=1发现相同后,改变lea f lin k 4=5leaflinkC 3=5lea f lin k 3=0leaflinkC 3=9lea flin k 3=0lea flin k 4=0lea flin k 4=2lea flin k 4=0le a flin k 41-2lea flin k 0=0l
37、eaflinkL 0=9lea f lin k 01=0lea flin k 0=5有相同,X=1 4,lr u 3=le a flin k tl=9lea flin k 1=0le a flin k l=5le a flin k 11=2le a flin k 2=0lea f lin k 2=5le a flin k 2=2le a flin k 2=1leaflinkC 3=5leaflin k 3J=2le a flin k 3=1le a flin k 31=8leaflinkC 4=2leaflink C 4=lle a flin k 41=8le a flin k 4=6ad r
38、ess14=8,fla g=1发现相同后,改变le a flin k t4】Tlea flin k 0=5 le a flin k tl=2 le a flin k 2=1发生替换次数工里M=5时LRU的命中率为:33.3333ZleaflinkL 3=8lea flin k 4=0最佳淘汰:卜 0=9 a tl=8 aC2=8 a3=2 a4=3卜 5=6 a6=4 a?=8 aC8=3 a9=7a10J=2 a tll=9请输入选择算法(0:最佳淘汰L:最近最少使用):0lea f link0J=0 lea f lin k 1=0 leaflin k C 2=9lea flin k 0=0
39、有相同lea flin k 0=0le a flin k =9le a flin k 0=8le a flin k 0=2lea f lin k =3leaflin k 0=6lea flin k 0=4leaflin k 0=8lea flin k 0=3lea flin k 0=7|M=3时FIFO的命中率为:25%le a flin k l=9le a flin k tl=9le a flin k 1 J=8le a flin k tl=2le a flin k C l=3le a flin k 1=6lea lin k l=4le a flin k 13=8le a flin k tl
40、=3lea lin k l=7lea f lin k 13=2leaflinkC 23=8lea flin k 2=8le a flin k 21=2le a flin k 2=3le a flin k 21=6le a flin k 23=4lea flin k 2=8lea flin k 2=3lea flin k t2=7lea flin k 2=2lea flin k 2=9lea f link0J=0 le a flin k 1 J=0 leaflinkC 2=0 lea flin k 3=9lea flin k 0=0有相同le a flin k =0lealin k 0=0lea
41、 flin k 0=9lea f lin k =8lea flin k 0=2lea flin k 0=3有相同leaflin k 0=3lea f lin k 0=6lea flin k 0=4le a flin k 0=8 le a flin k L l3=7 lea f lin k 2=2M=4时FIFO的命中率为:33.3333Zle a flin k tl=0le a flin k U=0le a flin k tl=9le a flin k 1=8le a flin k tl=2lea f lin k 1=3le a flin k ll=6le a flin k tl3=6le a
42、 flin k tl=4le a flin k l=8lea f lin k 2=9leaflin k C 2=9le a flin k 2=8le a flin k 121=2lea flin k 2=3lea flin k 2=6leaflinkC 2=4lea flin k 2=4le a flin k 2=8le a flin k 2=7leaflinkC 3=8lea f lin k 3=8leaflin k 3=2le a flin k 3=3lea flin k t3=6lea f lin k 3=4leaflinkC 3=8lea f lin k 3=8le a flin k
43、3=7le a flin k 3 3=2leaflinkC 3=9实验体会:通过这次实验,我了解了采用页式分派存储管理方案,并对页式分派存储管理的两个算法最佳淘汰算法和最近最少使用页淘汰算法有了更进一步的了解,为之后的学习奠定了基础。计算机操作系统实验四报告实 验 四 题 目:文献操作与管理姓 名:张 佳 慧 学 号:12122544 实验日期:2023.1实验环境:M icrosoft V i sua I S t ud i o实验目的:随着社会信息量的极大增长,规定计算机解决的信息与日俱增,涉及到社会生活的各个方面。因此,文献管理是操作系统的一个极为重要的组成部分。学生应独立地用高级语言编写
44、和调试一个简朴的文献系统,模拟文献管理的工作过程。从而对各种文献操作命令的实质内容和执行过程有比较进一步的了解,掌握它们的实行方法,加深理解课堂上讲授过的知识。实验内容:1 .规定:(1)实际一个n个用户的文献系统,每个用户最多可保存m个文献。(2)限制用户在一次运营中只能打开1个文献。(3)系统应能检查打入命令的对的性,犯错要能显示犯错因素。(4)对文献必须设立保护措施,如只能执行,允许读、允许写等。在每次打开文献时根据本次打开的规定,再次设立保护级别,即可有二级保护。(5)对文献的操作至少应有下述几条命令:c r e a t 建立文献。d e l e t e 删除文献。ope n 打开文献
45、。clo s e关闭文献。r ead读文献。w r i t e 写文献。2 .示例:(1)程序采用二级文献目录,即设立了主文献目录(M F D)和用户文献目录(U F D)。前者应包含文献主(即用户)及他们的目录区指针;后者应给出每个文献主占有的文献目录,即文献名,保护码,文献长度以及他们存放的位置等。此外为打开文献设立了运营文献目 录(AFD),在文献打开时应填入打开文献号,本次打开保护码和读写指针等。3.算法与框图(1)因系统小,文献目录的检索使用了简朴的线性搜索,而没有采用Has h等有效算法。(2)文献保护简朴实用了三位保护码,相应于允许读、允许写和运营执行,如下所示:111允许写允许
46、读允许执行如 相 应 位 为 0,则不允许。实验源码:#i nc I u de#inc 1 u de#in e lu d e#inc 1 ude#incl u d e#in c lude#include u s in g names p a c e s t d;struc t UFDin t fna me;i nt len;i n t p r ocode3;ufd10;s tract M F D i nt user;UFD p 5;m f d 1 0 ;i n t m a i n ()i n t x,n=1 0,f 1 a g 1 =lzf 1 a g 2=1,f I a g 3 =1 ;i
47、f (f l a g l Xf o r (i n t i=0 ;i 1 0;i +)u f d i .f name=i;i n t t=1 0 0+r a n d()%9 0 0 ;u f d i .l e n=t;f o r(i n t j=0;j 3;j+)u f d i .p r o c o d e j =r a n d()%2;)s r a n d (u n s i g n e d)t i m e(N U L L);b o o l f 1 0 ;f o r(i n t i=0;i 1 0;i+)m f d i u s e r=i;m e m s e t (f ,0,s i ze o f
48、 f);f o r(i n t j=0;j 5;j+Xi n 1 1;d ot =r a n d()%1 0;w h i I e (f t );f t =l;二u f d t ;)wh i Ie(n-&f 1 ag 2)c outHinput user:endl;c i nx;i f(x=10)c ou t try again end I;break;fo r(in t j=O;j5;j+)cout mfd x .pj.fn a m e mf d x.p j.1 e n *mf dx.p j.procode 0 mfdx.p j.procod e lmfdx.pj.procode 2 end
49、I;coutHinpu t th e c ommand:s;switch(s)c ase 1:if (fla g 3)cout“输入你要创建的文献的名字:end 1;cinm f dx.p 0.f n ame;cout 输入你要创建的文献的长度/mfd x.p 0.len;cout 输入你要创建的文献的权限:e ndl;for(in t i=0;i3;i+)c inmf d x.p 0.pro c ode i;for(int j=0;j5;j+)cou t mfdx.p j.f n a me um f d x.pj Jen mfd x.p j.p roc o d e0 mfdx.p j .p
50、r o co d e 1 mfdx.p j.p r o code 2 end 1;cout i nput the command:endI;elsecout“输入你要创建的文献的名字:endl;c i n m f d x .p index.f name;cout叫俞入你要创建的文献的长度:e n dl;ci n mfd x.p index.len;cou t “输入你要创建的文献的权限:“e n d I;for(int i=0;i m fdx .pindex.p r o co d e i;for(int j=O;j5;j+)cout m f d x.p j.f name H*mfdx.pj J