上海大学操作系统(二)实验报告(全).._第1页
上海大学操作系统(二)实验报告(全).._第2页
免费预览已结束,剩余45页可下载查看

下载本文档

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

文档简介

1、评分:上浴大孝SHANGHAI UNIVERSITY操作系统实验报告学 院计算机工程与科学 专 业计算机科学与技术 学 号学生姓名计算机操作系统实验一报告实验一题目:操作系统的进程调度姓名: 张佳慧 学号:12122544实验日期:2015.1实验环境 :Microsoft Visual Studio实验目的:进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。实验内容:1、 设计一个有n个进程工行的进程调度程

2、序。每个进程由一个进程控制块(PCB表示。进 程控制块通常应包含下述信息: 进程名、进程优先数、进程需要运行的时间、占用CPU的时 间以及进程的状态等,且可按调度算法的不同而增删。2、 调度程序应包含23种不同的调度算法,运行时可任意选一种,以利于各种算法的分析 比较。3、系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程。操作过程:1、本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W为了便于处理,程序进程的运行时间以时间片为单位计算。进程控制块结构如下:进

3、程控制块结构如下:PCB进程标识数链指针优先数/轮转时间片数占用CPU时间片数进程所需时间片数进程状态进程控制块链结构如下:其中:RU当前运行进程指针;HEAD进程就绪链链首指针;TAID进程就绪链链尾指针。2、算法与框图(1)优先数法。进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。 每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插

4、入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。(2)简单轮转法。进程就绪链按各进程进入的先后次序排列, 进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾, 调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。(3)程序框图说W H UE.9LA人小muTHl rrnhiri列虽艸忡制族Si F而眄珂區垃I 代|n| M

5、l IRUNTAIL运行结果:Priority算法:1.1PHIOKITZZTUHHTEHECPWr1 ME hLLTIHESTfiiTUSIDPHI OfC I TYZZT U HHT I WECPUTIHEKILLTIHESTfiiTUSIDPHI OHI TVZITUHHT I HECMJT I HEnLLTIMESTATUSFXai-diifut Jiv Rli,uii7xtini.n RLIHMINQPROCESS t yAil TIHGQUEUE : 25RUNNINGWAITI MGPROCESSS 2QUEUE: 2S1 4RLIlNHING PROCFS SITIHG QUE

6、UE:- -= =- =- =- = RLIHHIHCyAlTIMG-PROCESSQUEUE? 3l &f 1 4 2IDPHI OJKI TYZZT U HHT L HliGP1JT I MEALLTIHEEfTAlTUS!4107RUNNIHG PROCESS: 4UAITI NG QUEUE: 2 5 13HIORirV/ZTUIWTIME :PUTHEILLII HE:TRIMSPRIORIIV/ZIURNIIME :PUTI HEILLTIHESTATUSHUNHINC PROCESS: 3 UAITINGQUEUE:1425ID1 2345PRIORITV/zTURNTI

7、ME10111CPUTINE11101ALLII HE53673STATUSUWnWVHIINNING PROCESS: 1 WAITINGQUEUE: 4253RIORITV/ZTURHIIME :PUT I HEILIiTIHE:TUTUSRUNNING FROCKS: 2IFfl 111 NG OUEUE:5 4 13Round Robin算法:the A Igo rit hniCPlopit y SRaun d JRcbin i:PUTIMEfeLLTIIIE HTftTUCNNING PROCESSi 1I TING QUEUE:2 3 4 5lORJTVZZTIJRNTIHi:PU

8、TIME feLLTiriETAT(JNHING PROCESS z 1ITI QUEUE: 2 3 4 5IDPTIiaRTTzzTUWTirfE CPU TIMERJLLTiriESTfiTUSAUNNIHG PfiiCESS: 2WrTIHCi QUEUE:3 15 1IDPHIORITVz/TmTIttECPUTirlEALLTIMESTATUSRUNNING:2WnrTIHG QUEUE:31510fitlpHlCiRm/TURHTIME 2PUTIHEILLUMEHATUSFlUNNIHG PROCESS:5 lAITIHaQUEUE:lfcRIOBIT/xrUflMTIIHE :

9、PUTIttEULLTIHESTATUSFtUNNIHG PROCESS- 5 MITINGQUEUE:PRIORITV/TUJUHIIME :PUTIME(LLTIHEHATUEKUNNI HQ PROCESS = 5 WAITINGQUBUE:PRIORIW/TUHMrIHE PUTIttE aLTIHEHATUSKUHHIHG PROCESS: HULL IAITIHGQUEUE:实验代码:/操作系统实验-进程调度#in elude #in elude #in elude #i nclude const long n=5;struct pcbtype/进程控制块结构long id, pr

10、iority, ru ntime, totaltime;char status;/R, W, F - 运行,就绪,完成PCB n+1;long linkn+1;/链表结构long RUN, HEAD, TAIL;/选择算法long ChooseAlgo()char s128;printf(Please type the Algorithm(PriorityRound Robin):);gets(s);0 0 0 3 3 F F F F B0HHuuif (s0=P | s0=p)return 1;return 0;/初始化void in it()long i;for (i=1; i=n; i+

11、)PCBi.id = i;PCBi.priority = ran d()%4+1;PCBi.ru ntime = 0;PCBi.totaltime = ran d()%8+1;PCBi.status = W;/显示进程调度状况void showit()long i;prin tf(=n);pri ntf(%25s,ID);for (i=1; i=n; i+)prin tf(%4ld, PCBi.id);pri ntf(n%-25s,PRIORITY/TURNTIME);for (i=1; i=n; i+)prin tf(%4ld, PCBi.priority);prin tf(n%-25s,

12、CPUTIME);for (i=1; i=n; i+)prin tf(%4ld, PCBi.ru ntime);prin tf(n%-25s, ALLTIME);for (i=1; i=n; i+)prin tf(%4ld, PCBi.totaltime);pr in tf(n%-25s,STATUS);for (i=1; i=n; i+)prin tf(%4c, PCBi.status);prin tf(n=n);if (RUN != -1)pr in tf(RUNNING PROCESS: %ldn, RUN);else printf(RUNNING PROCESS: NULLn);pri

13、ntf(WAITING QUEUE:);for (i=HEAD; i!=-1; i=li nki)prin tf(%ld , i);pri ntf(inn);/优先数调度算法void main_priority()long i, j, k;long sort n+1;ini t();/设置就绪链for (i=1; i=n; i+)sorti = i;for (i=1; ii; j-)if (PCBsortj.priority PCBsortj-1.priority)k=sortj; sortj=sortj-1; sortj-1=k;HEAD=sort1;for (i=1; in; i+)lin

14、 ksorti = sorti+1;TAIL = sort n;lin kTAIL = -1;RUN = -1;/就绪链设置完毕RUN = HEAD;PCBRUN.status = R;HEAD = linkHEAD;/运行链首进程while (RUN != -1)showit();PCBRUN.totaltime-;PCBRUN.priority -= 3;PCBRUN.ru ntime+;if (PCBRUN.totaltime = 0)/ 进程运行完成/优先级减 3PCBRUN.status=F;RUN = HEAD;if (HEAD != -1)HEAD = lin kHEAD;PCB

15、RUN.status=R;elseif (HEAD != -1 & PCBRUN.priority PCBRUN.priority) k=li nkk;if (k = TAIL)linkk = RUN;/插入链尾之后TAIL = RUN;lin kRUN = -1;RUN = HEAD;HEAD = lin kHEAD;PCBRUN.status = R;elselinkRUN = linkk;/ 插入链中lin kk = RUN;RUN = HEAD;/链首进程开始运行HEAD = lin kHEAD;PCBRUN.status = R;showit();/轮转调度算法void ma

16、in_roun d_rob in()long i;ini t();/设置就绪链HEAD = 1;for (i=1; in; i+)li nki = i+1;TAIL = n;li nkTAIL = -1;RUN = -1;/就绪链设置完毕RUN = HEAD;PCBRUN.status = R;HEAD = lin kHEAD;/运行首进程while (RUN != -1)showit();PCBRUN.totaltime-;PCBRUN.ru ntime+;if (PCBRUN.totaltime = 0)/进程运行完成PCBRUN.status = F;RUN = HEAD;if (HEA

17、D != -1)HEAD = lin kHEAD;PCBRUN.status = R;elseif (HEAD != -1 & PCBRUN.runtime % PCBRUN.priority=0)轮转时间到PCBRUN.status=W;/ 插入链尾lin kTAIL=RUN;lin kRUN=-1;TAIL=RUN;RUN=HEAD; 链首进程开始运行HEAD=li nkHEAD;PCBRUN.status=R;showit();/主函数int mai n()long algo;sran d(time(NULL);algo = ChooseAlgo();if (algo = 1)m

18、ain_priority();优先数法elsemain_roun d_rob in();/简单轮转法pri ntf(SYSTEM FINISHEDn);return 0;实验体会:通过写代码的过程更加清晰地了解了两种算法的思想和用处, 也锻炼了写代码的能力。对算法的了解加深的同事计算机操作系统实验三报告实验三题目:请求页式存储管理姓名: 张佳慧 学号:12122544实验日期:2015.1实验环境 :Microsoft Visual Studio实验目的:近年来,由于大规模集成电路(LSI)和超大规模集成电路(VLSI)技术的发 展,使存储器的容量不断扩大,价格大幅度下降。但从使用角度看,存储

19、器的容 量和成本总受到一定的限制。所以,提高存储器的效率始终是操作系统研究的重 要课题之一。虚拟存储技术是用来扩大内存容量的一种重要方法。学生应独立地 用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对 各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。实验内容:为了比较真实地模拟存储管理,可预先生成一个大致符合实际情况的指令地址流。然后模拟这样一种指令序列的执行来计算和分析各种算法的访问命中率。本实验采用页式分配存储管理方案,并通过分析计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣。另外也考虑到改变页面大小和实际存储器容量对计算结果的影响,从而可

20、为算则好的算法、合适的页面尺寸和实存容量提供依据。实验是按下述原则生成指令序列的:(1)50%的指令是顺序执行的。(2)25%的指令均匀散布在前地址部分。(3)25%的指令均匀散布在后地址部分。示例中选用最佳淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。公式为假定虚存容量为32K,页面尺寸从1K至8K,实存容量从4页至32页。(1)最佳淘汰算法(OPT)这是一种理想的算法,可用来作为衡量其他算法优劣的根据,在实际系统中是难以实现的,因为它必须先知道指令的全部地址流。由于本示例中已预生成了全部的指令地址流,故可计算出最佳命中率。该算法的准则是淘汰已满页表中不再访问或是最迟

21、访问的的页。这就要求将页表中的页逐个与后继指令访问的所有页比较,如后继指令不在访问该页,则把此页淘汰,不然得找出后继指令中最迟访问的页面淘汰。可见最佳淘汰算法要花费比较长的运算时间。(2)最近最少使用页淘汰算法(LRU)这是一种经常使用的方法,有各种不同的实施方案,这里采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。如果当前调用页已在页表内,则把它再次调整到链尾。 这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。操作过程:编写程序:#in elude #in elude #in el

22、ude #in elude #in elude #in elude #in elude #in elude #in elude using n amespaee std;int adress32;全局变量数组,地址流int p; 全局变量 p 是一共有多少地址流void init()初始化函数,int t;sran d(time(0);随机产生指令序列p=12+ra nd()%32;cout地址流个数 P=vvpve ndl;coutvv随机产生的地址流序列n;for(i nt i=O,j=O;ip;i+,j+)t=1+ra nd()%9;adressi=t;将随机产生的指令数存入页面流pri

23、n tf(a%d=%d,i,t);j=j%5;if(i10) prin tf(); if(j=4) pri ntf(n);coute ndl;void OPT(int n) /FIFO 算法,n 是 M 的值int e,q=p,m=n-1;int flag;int flagl;int queye=O;int leafli nk32;memset(leafli nk,0,sizeof(leafli nk); for(i nt x=O;xq;x+)e=x;flag=0;for(i nt i=0;i n ;i+)if(leafli nki=adressx) flag=1; flag 仁 i;prin

24、tf(” 有相同 n);break;if(flag=0)int k=0;for(i nt j=0;j=m)queye+;if(flag=1)int temp10=0;for(int i=0;i=m;i+)for(i nt a=e+1;aq;a+) if(leafli nki=adressa) tempi+;int in dex=0;for(int i=0;itempi)mi n=tempi;in dex=i;int l=leafl in ki ndex;leafli nki ndex=leafli nkO;leafli nk0=l;for(i nt j=O;j n ;j+)prin tf(le

25、afli nk%d=%d ,j,leafli nkj); coute ndl;coutvvM=vvn时 FIFO 的命中率为:v(1-(double)queye/p)*100vv%vvoid LRU(i nt n) /LRU算法int i;in t m=n-1;int q=p;int e;int queye=0;int flag;int flag1;int y;int leaflink32;memset(leafli nk,0,sizeof(leafli nk);for(i nt x=0;xq;x+)flag=0;e=x;for(i=0;i n ;i+)if(leafli nki=adress

26、x)flag=1;flag 仁 i;prin tf(X=%d,lru%d = adress%d=%d ,flag= 1n ,x,i,x,adress x); break;if(flag=0)int k=0;for(i nt j=0;jm;j+)/0 1 2leafli nkk=leafli nkk+1;k+;leafli nkm=adresse;queye+;endl;else if(flag=1)y=flag1;for( int j=O;jm;j+)leafli nkflag1=leafli nkflag1+1;flag1+;leafl in k3=adresse;pri ntf(发现相同后

27、,改变leafli nk%d=%dn,m,leafli nk3);for(i nt j=0;j n ;j+)printf(leaflink%d=%d ,j,leaflinkj);coute ndl;cout发生替换次数:vvqueyevve ndl;coutvM=vvn时 LRU 的命中率为:(1-(double)queye/p)*100% c;if(c=O)for(int i=3;i4;i+)OPT(i);else if(c=L)for(int i=4;i5;i+)LRU(i);coute ndl; return0;运行结果:最近最少使用:5帝j址F也证机ffi-逋LSI=91B1-5a6

28、J=5aClllLal71=2a(121-8aL8 J=9a13=6aL9J=2a(14=8:=leaflinktlJ=0leaFlinktlJ=0leaflinkfl1=3La&fllnkEll-ELeaflinkElJ-9leaflink2J=0leaflink2J=3leaflinkt2=5leaflink2J=9laafllnk21*l发现相同后,改变筋GnkRl巧leaf link Ptl=l leaf link 11=8 leaf link2 1 = 9 leaflinkL0J=e leaflinkEl 1=9 lz珂ink巧薛同;X =8,LrUl = adress8=?

29、 ,lag= 1发相同后.衣变laaflinktai-?leaflinkEM=B leaFlinkEl 1=5 leaflink21=2有相同:X=9,lruT2 = adrets=2 ,flag= 1发现希同后,改变W旳ink=2 leafllnkCOJ-e leaflinktl1-5 leaflinkE2-V百相同:IPULI J adress 1U J =5Rf lig- 1发现相同后,改变Tflink=5 leaflinkBJ=eleaflinkr01=9 leaflink0=2 leaf1inkL0J=5有相同:X=14,lri*r21 =发现相同后,改变leaflinK3V8 le

30、aflink0=5leaflinkLl =1 leaflnk2=6发生賛换W= 9时LRU的命中率为:40leaf link1J=9leaflink Cl 1-2leaFlinkCl1=5leaflinkLll-1leaflinkL2J=2loaflinkE2-5leaflink2=lloaf linkE2-Sadress L14 J=8J.Flag= 1leaFlink31=3 leaflinkL3 1=5 leaf linkL3J=9lBafllnkE3-lleaflinJir31=alaaFlink3-9leafllnkt3J=5 leafllnk3J-2leaflink(3J=9lea

31、flink31=5 leaflink9 J=2leaf Link31=9leaf link31=2lealink3 J=5 leaflink3 J-lleaflink3=8 leaflink3 J=6leaflink31=8leaflinkQJ=8leafLink0=2lBafllnk(0)-3leaflink0=6leafLink0J=4leaflink01=8leaflinktl1=2leaflinkl=3 leaf linkLI 1-6 leaflinktl 1=4leafHnkElJ=8leaflinkCll-3lBaflink2-3leaflnk2=bloafllnk2-4leafl

32、inkE2=8leaflink21=3laafllnk2-7leaflinkW=3leaFlinktl=?leaflink2=2leaflinklL0=7 leaf link El 1=2H=3时FIFO的命中率为i,leftflink0J-0leaflinkr01=0帽相同leaflinkT01-0leaflink01=0 leaf llnkEG19 lflaflinkEOl leafLink0=2lBafllnkE)-3恫湘同leaflinkt0=3leaflinkr0-6leaflink0=4leaflinklBJ =8leaflinkEll-0leaFlinktl1=0laaflink

33、Cl1-0leaflinktl1=9leaflinkEll-8leaflinktlJ=2leaflink11 =3leaflinkLI1-GleaflinkElJ=6laaflinkCl1-4leaflinktl1=8leaflink1 =7laaflink2-flleaflinkr21=9lBafllnk2J-9leaflink2J=8lflafllnk2-2lBaflink21-3leaflnk2J=i6leflink2=4leaflinkt21=4lBafllnk2-8leaflink2J=7leaflink 2 =2leaflink3J-9leaflink31=8leaflink3-8

34、leaflink31=2leaflink3J=3leaflinkJJ=6leaflink31=4leaf llnkO 1-8leaflink3J=8leaflink3J-7leaflink3J=2leaFllnk31-9leaflinkT0=3 leaFlinkLl =5 leaflinkr2=1商相同:X =6,lrutl - adressGJ=5 ,flag- 1发现相同后,改变Flink=5 leaflinkL0J=3 leaf link1=1leaflink2= lBAflink(0J=l leaflinktlJ=9 leflinkt2=5馬湘同:X-8,lrutl adress8 J

35、=9 ,flag- 1发现相同后,leafl ink T41=9leaflinkIB1=1 leaflinkFl1=5 leaflink21-0leaflink31=?leaflink4J=Qleaflinkf0=5 leaflinktlJ=0 le*flink2J=9有相同:Xlru0 - dr#ss(1015 l*g- 1发现相同后,改变我link41=5 leaflinkLB)=0 leaflinkFl1=9 leaflink2=0 leaflinkf0=9leaflinktlJ=0 leaflink2J=5leaflink01=0leaflink1J=5leaflink2J=2leAf

36、link0-5leaflinkElJ-2 leflink(2=1有相同:X=14,lru31 = adress14)=8 lag- 1发现相同后改变leaflinkr41=8leafLink01=5 leaf link11=2 leaflink21=1发生管换w= 10M=507LRU的命中率为;33.3333K最佳淘汰:leaf link 13 J=5 leaflink 31=0leaflink3J=9 leaflink 31=0leaf link3 J=5leaflink(3=2leaflink3J=l leaflink3 J-8leaflink31=8a0=9 atll=8AE21-8

37、a3H2 at4Jl=3 at5=6 at=1 aC7=8 jd8】=3 a?=7aL101=2all9请输入选择算法( (0:最佳淘汰L:最近最少使用):0leaf link0=0 leaFlinktl3=0 leaflinkt21=9leaflink0=B leaflinktl1=9 leaflnk2=8有相同leaflink0=0 leaflinktl 1=9 leaflinj;2 1=8 leaflinhL0J=9 leaf link1 J=8leaflln21=2leaf llnkCI 1=0 leaflink41=2leafllnk43=0leaflinl4-2leaf link4

38、J=2leariink4J=l leaflink4J=8leaflink4 -6leaflink4J=0leaflink2=9n=4时FIFO的命中率为i 33.3333X实验体会:通过这次实验,我了解了采用页式分配存储管理方案,并对页式分配存储管理的两个 算法最佳淘汰算法和最近最少使用页淘汰算法有了更深入的了解,为之后的学习奠定了基 础。计算机操作系统实验四报告实验四题目:文件操作与管理姓名: 张佳慧 学号:12122544实验日期:2015.1实验环境 :Microsoft Visual Studio实验目的:随着社会信息量的极大增长, 要求计算机处理的信息与日俱增, 涉及到社会生活的各个

39、 方面。因此,文件管理是操作系统的一个极为重要的组成部分。 学生应独立地用高级语言编 写和调试一个简单的文件系统, 模拟文件管理的工作过程。 从而对各种文件操作命令的实 质内容和执行过程有比较深入的了解, 掌握它们的实施方法,加深理解课堂上讲授过的知识。实验内容:1.要求:(1)实际一个n个用户的文件系统,每个用户最多可保存m个文件。(2) 限制用户在一次运行中只能打开I个文件。(3)系统应能检查打入命令的正确性,出错要能显示出错原因。(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时 根据本次打开的要求,再次设置保护级别,即可有二级保护。(5)对文件的操作至少应有下

40、述几条命令:creat建立文件。delete删除文件。open打开文件。close关闭文件。read读文件。write写文件。2.示例:(1)程序采用二级文件目录,即设置了主文件目录(MFD和用户文件目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录, 即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置了运行文件 目录(AFD,在文件打开时应填入打开文件号,本次打开保护码和读写指针等。3.算法与框图(1)因系统小,文件目录的检索使用了简单的线性搜索,而没有采用Hash等有效算法。(2)文件保护简单实用了三位保护码,对应于允许读、允许

41、写和运行执行,如下所示:1 1 1允许写允许读允许执行如对应位为0,则不允许。实验源码:#in elude #inelude #in elude #in elude #in elude #in elude #in elude using n amespaee std;struet UFDint fn ame;int len;int procode3;ufd10;struet MFDint user;UFD p5;mfd10;int mai n()int x, n=10,flag1=1,flag2=1,flag3=1;if(flagl)for(i nt i=0;i10;i+)ufdi.f nam

42、e=i;int t=100+ra nd()%900; ufdi.le n=t;for(i nt j=0;j3;j+) eodej=ra nd()%2;sra nd(u nsig ned)time(NULL);bool f10;for(i nt i=0;i10;i+)mfdi.user=i; memset(f,0,sizeof f); for(i nt j=0;j5;j+) int t;dot=ra nd()%10;while(ft);ftl=1;mfdi.pj=ufdt;while( n-&flag2)cout x;if(x=10)couttry aga inen dl

43、;break;for(i nt j=0;j5;j+)coutmfdx.pj.f code2vve ndl; couti nput the command:e ndl;coutcreat 1; delete 2; ope n 3; bye 4; close 5; read 6; write 7 s;switch(s)case 1:if(flag3)cout输入你要创建的文件的名字: mfdx.pO.fname;cout输入你要创建的文件的长度: mfdx.p0.le n;cout输入你要创建的文

44、件的权限:e ndl;for(int i=0;i3;i+)cinm codei;for(i nt j=0;j5;j+)coutmfdx.pj.f code2vve ndl; couti nput the command:e ndl;elsecout输入你要创建的文件的名字: mfdx.pi ndex.f name;cout输入你要创建的文件的长度: mfdxl.pi ndex l.len;mfd x.pj.le nmfd x.pj.le ncoutvv输入你要创建的文件的权

45、限:e ndl;for(int i=0;i3;i+)cinm fdx.pi codei;for(i nt j=0;j5;j+)coutmfdx.pj.f code2vve ndl; couti nput the command:e ndl;break;case 2:flag3=0;coutvv输入要删除的文件: t;for(int i=0;i5;i+)if(mfdx.pi.fname=t)in dex=i;mfdx.pi.fname=O;mfdx .pi.le n=000; m

46、emset(code,0,sizeof(code);for(i nt j=0;j5;j+)coutmfdx.pj.f namevvvmfdx.pj.le code2vve ndl; couti nput the command:e ndl;break;case 3:coutvv输入要打开的文件: file;for(int i=0;i5;i+)if(mfdx.pi.fname=file) if(code2=0)coutvv你没有权限en

47、dl;else coutvv可以打开vvendl;coutvvi nput the comma nd:vve ndl;vvmfd x.pj.lenvvbreak;case 4:for(i nt j=0;j5;j+)coutmfdx.pj.f namevvmfdx.pje code2vve ndl; coutvgoodbyeve ndl;flag=O;flag2=0;flag 仁 0;break;case 5:flag=0;flag 仁 0;break;case 6:cout输入要读的文件: file

48、1;for(int i=0;i5;i+)if(mfdx.pi.fname=file1) if(code1=0)cout你没有权限endl;else cout可以读endl;couti nput the comma nd:e ndl;break;case 7:cout输入要写的文件: file2;for(int i=0;i5;i+)if(mfdx.pi.fname=file2)if(code0=0)cout你没有权限endl;else cout可以写endl;couti nput the comma nd:e ndl; break;return 0;实

49、验结果:input user1你没有权限inpuc the command:闇入要打开的文件: 论以打开input the conmand:勵入要读的文件:0协没有杈限input the command:制入要读的文件: 节以读input the conkmand:7输入要写的文件:6的没有权限00input the conmand: ereAt1;delete 2:爲入要删|除的文件:2open 3;hue 4;close 5;re ad b;write 7570s1812y14乎991310001000in put the cofTimiandl-藉入你要创建的文件的名字:1输入你要创建的

50、文件的长度;100羸入你要创建的文件的权限;1 1991001918 110141 100the GoviiiTiandJxn put粘入要打开的文件;input the contmand:7输入要写的文件. 和以写input the conmand:45 991 BB17 918 1100 141 1036 392 0101 100 111goodbe实验体会:本次实验主要是模拟了一下文件系统,文件是我们平时接触最多也是最广的形式,即便是不会计算机的人们也可以通过这种操作文件来很方便地完成操作,而本次实验让我了解到了文件系统的内部实现,虽然仅仅是通过C+模拟的,但还是让我对它的原理有了更好的

51、理解,也是对我们上课的内容的一个巩固。计算机操作系统实验六报告实验六题目:FAT文件系统实验姓名: 张佳慧 学号:12122544实验日期:2015.1实验环境:win95虚拟机实验目的:从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。进一步理解操作系统文件管理的基本思想。实验内容:1.了解3吋软盘的FAT文件系统结构。2察看文件分配表的簇号链。3察看文件目录表中文件目录结构。4了解用簇号链映射的文件链式存储结构。5分析目录文件的组成。实验步骤:1.进入DEBUG环境,装入FAT文件系统结构。执行命令:L 0 0 0 21说明:将0号驱动器中,逻辑扇区号从0开始的共21H个

52、扇区读入内 存,放在DS:0000为起始的地址中。2.观察1.44M软盘中FAT12文件系统结构。执行命令:D 0000连续执行D命令,每次显示128个字节,可见文件系统结构。FAT文件系统结构如下:逻辑扇区号EM*FAT 1“FAT卫F呼VK-iAhlfit.-其中:Boot引导程序FAT文件分配表FDT文件目录表1.44M软盘逻辑扇号与物理扇区的对应关系逻辑扇号0 #0道0面1扇逻辑扇号1 H 11H 0道0面2 18扇逻辑扇号12 H 23H 0道1面1扇18扇c vC: TINDDTSfyst e32 ca,d. exe “ debue软盘有两面,每面80个磁道,每个磁道18个扇区,每

53、个扇区512个字节,所以软盘的容量是2*80*18*512 = 1474560, 1474560/1024/1024大约为1.44M。3分析文件分配表结构,了解用簇链映射的文件的链式存储结构。执行命令:D 200思考: 上面屏幕显示首簇号为003的文件共包括几个扇区?它分布在哪几个物理逻辑扇号24 H 35H1道0面1扇18扇口1刈-L 0 0 0 21卜D 0000140F:Q006 EBE0F:Q01002: MMZM MH10F:003053140F:0046 FA 140F:005B IE U0F:e060F3 1WF:B070 F9 T140F:80806610F:009Q46k0F

54、:BBftA0314BF:0B08B1.RAMDSKHTp寻* B In -9 B B B. .RAHDISKNT FAT12 . *3x-v UUN-i C:IITO0ISsyste*32c*d, ext - debu140F:0Enfi込0F:0EBI3140F:0EC140F:0ED0L4(JF:0EE010F:0EFBkD 200 k羽F:毗腼140F:02iB E0F:0220 14BF:BZ30 140F:0240M0F:025R b.4BF:02G0 S0F:027B FD 2600h.4BF:260014BF:261R14BF:262010F:263B140F:264Q148F

55、:2650E40F:266BE0F:26703P胸湘00旳C00121C0阳41-J-w-isn-M000000F0702704000000FD02D04D0F0EDD0FPI0朗OtJ盹H5E0123EB丽43跑FFG1魄444(d盹FF090290401403400F04900FFF0FFD030胸M0腼012500阳45腼FFFF00317E朋FFFF00-0000-0000-0000-000U-0000-0060-0001-111B-C060-0203-313B-C060-0405-51FF-FFFF-FF44-0000-2E31-3050-5DFF-FFFF-PF0000000000

56、007017001D03D05CS1!M0302304393193901F03F0505025045FFO/000FF00F0F000F00F0B000F0F00740FF_MtSi_u-M000000000000B02B34B0M-6_M264600000-0扇区上?答:首簇号为003的文件共包括2个扇区,它分布在0道0面2、3扇。4.观察1.44M软盘中文件目录表FDT以及文件目录结构执行命令:L 0 0 0 21说明:将逻辑扇区0H开始的共21H个物理扇区装入DS:0000H起始的内存。执行命令:D 2600说明:显示从2600H地址开始的FDT文件表。思考:计算1.44M的软盘根目录最

57、多可以容纳多少文件?答:1.44MB软盘的文件目录表FDT共14个扇区, 每个文件的目录登记项占用32个字节,用作目录的一个扇区(512字节)最多只能装入512/32=16个文件。因此,1.44MB软盘的根目录下最多可建文件或子目录224个。2上图屏幕显示的文件的目录项中标示该文件的首簇号在何处?该文件是什么属性?答:首簇号在第2行的1A1B字节处,首簇号为002,该文件属于归档文件。 书上显示的文件首簇号在第6行的1A1B字节处,首簇号为091,属归档文件。3书上面的屏幕显示第12行目录项表示的是什么项目?答:第12目录项表示卷标。5.观察1.44M软盘中文件目录表的长文件名目录结构思考:书

58、上面屏幕显示的23行是什么目录项?答:长名的第一项,也是最后一项。若有一个文件名共长34个字符,要占多少目录项?答:四个目录项,三个长目录项和一个短目录项。6.自己动手做:观察测试软盘的FDT区,找到名为BAK的文件目录。该文件是什么类型的文件?文件放在磁盘的哪个位置?占用几个存储单位?调出其内容看看。该文件为BAK.txt,属于归档文件。察看其首簇号为002,对应了数据区21H逻辑扇区。执行:L 0 0 0 21D 260040F:023H0F:02400F:B25S40F:02604QF:0270D 2600 40F:260010F:266E1HBF:2t7fi -L80QB0-D8000

59、 140F:8000 140F:8010140F:8030140F:80410F:805S23E0Q343E0Q&FF61盹444000FF20402H40414041034500ITFF-FFFFFF-FFFF44-006?MW-2E0031-302650-5D40FF-FF FFFF-FF FF.PHQ317E86FFFF25&0 0203-313B-C060-04WS-51debug:2640ci C: VJNlM)VSf yst e32 cd. exe M.OQ.S&Wil?. -$QWDATft TAG .-ttQ &.,.R+.-x-.DfiTAl

60、CAB八*TQ-fiMDlS10 .-3PJP- . .Pit?.B0.FF00404020270370器2:|32021022FB4 F02A04029040F04900202020302D84BSF0 EDDSP0FQ4450F21C2424444402704EDED4D4D0F20100F85F5B5D2F00001B1B242442420D0D4232盘505554S:B04B0260-46FF0000FFFF0050FF1010i01050吕050502504-5030350030303020202003F00FLb_w_foIS-b-_h-294003494B0F05000P0F03000F0000000000000714000010009 SI-M-二1101020202304303E

温馨提示

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

评论

0/150

提交评论