上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)_第1頁(yè)
上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)_第2頁(yè)
上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)_第3頁(yè)
上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)_第4頁(yè)
上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

上海大學(xué)操作系統(tǒng)(二)實(shí)驗(yàn)報(bào)告(全)評(píng)分:SHANGHAIUNIVERSITY操作系統(tǒng)實(shí)驗(yàn)報(bào)告學(xué)院計(jì)算機(jī)工程與科學(xué)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)號(hào)學(xué)生姓名2、調(diào)度程序應(yīng)包含2~3種不同的調(diào)度算法,運(yùn)行時(shí)可任意選一種,以利于各種算法的分析比較。3、系統(tǒng)應(yīng)能顯示或打印各進(jìn)程狀態(tài)和參數(shù)的變化情況,便于觀察諸進(jìn)程的調(diào)度過程。操作過程:1、本程序可選用優(yōu)先數(shù)法或簡(jiǎn)單輪轉(zhuǎn)法對(duì)五個(gè)進(jìn)程進(jìn)行調(diào)度。每個(gè)進(jìn)程處于運(yùn)行R(run)、就緒W(wait)和完成F(finish)三種狀態(tài)之一,并假設(shè)起始狀態(tài)都是就緒狀態(tài)W。為了便于處理,程序進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位計(jì)算。進(jìn)程控制塊結(jié)構(gòu)如下:進(jìn)程控制塊結(jié)構(gòu)如下:PCB進(jìn)程標(biāo)識(shí)數(shù)鏈指針優(yōu)先數(shù)/輪轉(zhuǎn)時(shí)間片數(shù)占用CPU時(shí)間片數(shù)進(jìn)程所需時(shí)間片數(shù)進(jìn)程狀態(tài)進(jìn)程控制塊鏈結(jié)構(gòu)如下:其中:RUN—當(dāng)前運(yùn)行進(jìn)程指針;HEAD—進(jìn)程就緒鏈鏈?zhǔn)字羔?;TAID—進(jìn)程就緒鏈鏈尾指針。2、算法與框圖(1)優(yōu)先數(shù)法。進(jìn)程就緒鏈按優(yōu)先數(shù)大小從高到低排列,鏈?zhǔn)走M(jìn)程首先投入運(yùn)行。每過一個(gè)時(shí)間片,運(yùn)行進(jìn)程所需運(yùn)行的時(shí)間片數(shù)減1,說明它已運(yùn)行了一個(gè)時(shí)間片,優(yōu)先數(shù)也減3,理由是該進(jìn)程如果在一個(gè)時(shí)間片中完成不了,優(yōu)先級(jí)應(yīng)該降低一級(jí)。接著比較現(xiàn)行進(jìn)程和就緒鏈鏈?zhǔn)走M(jìn)程的優(yōu)先數(shù),如果仍是現(xiàn)行進(jìn)程高或者相同,就讓現(xiàn)行進(jìn)程繼續(xù)進(jìn)行,否則,調(diào)度就緒鏈鏈?zhǔn)走M(jìn)程投入運(yùn)行。原運(yùn)行進(jìn)程再按其優(yōu)先數(shù)大小插入就緒鏈,且改變它們對(duì)應(yīng)的進(jìn)程狀態(tài),直至所有進(jìn)程都運(yùn)行完各自的時(shí)間片數(shù)。(2)簡(jiǎn)單輪轉(zhuǎn)法。進(jìn)程就緒鏈按各進(jìn)程進(jìn)入的先后次序排列,進(jìn)程每次占用處理機(jī)的輪轉(zhuǎn)時(shí)間按其重要程度登入進(jìn)程控制塊中的輪轉(zhuǎn)時(shí)間片數(shù)記錄項(xiàng)(相當(dāng)于優(yōu)先數(shù)法的優(yōu)先數(shù)記錄項(xiàng)位置)。每過一個(gè)時(shí)間片,運(yùn)行進(jìn)程占用處理機(jī)的時(shí)間片數(shù)加1,然后比較占用處理機(jī)的時(shí)間片數(shù)是否與該進(jìn)程的輪轉(zhuǎn)時(shí)間片數(shù)相等,若相等說明已到達(dá)輪轉(zhuǎn)時(shí)間,應(yīng)將現(xiàn)運(yùn)行進(jìn)程排到就緒鏈末尾,調(diào)度鏈?zhǔn)走M(jìn)程占用處理機(jī),且改變它們的進(jìn)程狀態(tài),直至所有進(jìn)程完成各自的時(shí)間片。(3)程序框圖運(yùn)行結(jié)果:Priority算法:RoundRobin算法:實(shí)驗(yàn)代碼://操作系統(tǒng)實(shí)驗(yàn)--進(jìn)程調(diào)度#include<cstdio>#include<ctime>#include<cstring>#include<cstdlib>constlongn=5;structpcbtype //進(jìn)程控制塊結(jié)構(gòu){ longid,priority,runtime,totaltime; charstatus; //R,W,F->運(yùn)行,就緒,完成}PCB[n+1]; longlink[n+1]; //鏈表結(jié)構(gòu) longRUN,HEAD,TAIL;//選擇算法 longChooseAlgo() { chars[128]; printf("PleasetypetheAlgorithm(Priority\\RoundRobin):"); gets(s); if(s[0]=='P'||s[0]=='p') return1; return0; }//初始化 voidinit() { longi; for(i=1;i<=n;i++) { PCB[i].id=i; PCB[i].priority=rand()%4+1; PCB[i].runtime=0; PCB[i].totaltime=rand()%8+1; PCB[i].status='W'; } }//顯示進(jìn)程調(diào)度狀況 voidshowit() { longi; printf("=====================================================\n"); printf("%-25s","ID"); for(i=1;i<=n;i++)printf("%4ld",PCB[i].id); printf("\n%-25s","PRIORITY//TURNTIME"); for(i=1;i<=n;i++)printf("%4ld",PCB[i].priority); printf("\n%-25s","CPUTIME"); for(i=1;i<=n;i++)printf("%4ld",PCB[i].runtime); printf("\n%-25s","ALLTIME"); for(i=1;i<=n;i++)printf("%4ld",PCB[i].totaltime); printf("\n%-25s","STATUS"); for(i=1;i<=n;i++)printf("%4c",PCB[i].status); printf("\n=====================================================\n"); if(RUN!=-1)printf("RUNNINGPROCESS:%ld\n",RUN); elseprintf("RUNNINGPROCESS:NULL\n"); printf("WAITINGQUEUE:"); for(i=HEAD;i!=-1;i=link[i])printf("%ld",i); printf("\n\n"); }//優(yōu)先數(shù)調(diào)度算法 voidmain_priority() { longi,j,k;longsort[n+1]; init(); //設(shè)置就緒鏈 for(i=1;i<=n;i++) { sort[i]=i; } for(i=1;i<=n;i++) //根據(jù)優(yōu)先數(shù)排序 { for(j=n;j>i;j--) { if(PCB[sort[j]].priority>PCB[sort[j-1]].priority) { k=sort[j];sort[j]=sort[j-1];sort[j-1]=k; } } } HEAD=sort[1]; for(i=1;i<n;i++) { link[sort[i]]=sort[i+1]; } TAIL=sort[n]; link[TAIL]=-1; RUN=-1; //就緒鏈設(shè)置完畢 RUN=HEAD; PCB[RUN].status='R'; HEAD=link[HEAD]; //運(yùn)行鏈?zhǔn)走M(jìn)程 while(RUN!=-1) { showit(); PCB[RUN].totaltime--; PCB[RUN].priority-=3;//優(yōu)先級(jí)減3 PCB[RUN].runtime++; if(PCB[RUN].totaltime==0) //進(jìn)程運(yùn)行完成 { PCB[RUN].status='F'; RUN=HEAD; if(HEAD!=-1) HEAD=link[HEAD]; PCB[RUN].status='R'; } else { if(HEAD!=-1&&PCB[RUN].priority<PCB[HEAD].priority) { k=HEAD; PCB[RUN].status='W'; //尋找等待鏈中的合適位置 while(k!=TAIL&&PCB[link[k]].priority>PCB[RUN].priority) k=link[k]; if(k==TAIL) { link[k]=RUN; //插入鏈尾之后 TAIL=RUN; link[RUN]=-1; RUN=HEAD; HEAD=link[HEAD]; PCB[RUN].status='R'; } else { link[RUN]=link[k]; //插入鏈中 link[k]=RUN; RUN=HEAD; //鏈?zhǔn)走M(jìn)程開始運(yùn)行 HEAD=link[HEAD]; PCB[RUN].status='R'; } } } } showit(); }//輪轉(zhuǎn)調(diào)度算法 voidmain_round_robin() { longi; init(); //設(shè)置就緒鏈 HEAD=1; for(i=1;i<n;i++) { link[i]=i+1; } TAIL=n; link[TAIL]=-1; RUN=-1; //就緒鏈設(shè)置完畢 RUN=HEAD; PCB[RUN].status='R'; HEAD=link[HEAD];//運(yùn)行首進(jìn)程 while(RUN!=-1) { showit(); PCB[RUN].totaltime--; PCB[RUN].runtime++; if(PCB[RUN].totaltime==0)//進(jìn)程運(yùn)行完成 { PCB[RUN].status='F'; RUN=HEAD; if(HEAD!=-1) HEAD=link[HEAD]; PCB[RUN].status='R'; } else { if(HEAD!=-1&&PCB[RUN].runtime%PCB[RUN].priority==0)//輪轉(zhuǎn)時(shí)間到 { PCB[RUN].status='W'; //插入鏈尾 link[TAIL]=RUN; link[RUN]=-1; TAIL=RUN; RUN=HEAD;//鏈?zhǔn)走M(jìn)程開始運(yùn)行 HEAD=link[HEAD]; PCB[RUN].status='R'; } } } showit(); }//主函數(shù) intmain() { longalgo; srand(time(NULL)); algo=ChooseAlgo(); if(algo==1) { main_priority();//優(yōu)先數(shù)法 } else { main_round_robin();//簡(jiǎn)單輪轉(zhuǎn)法 } printf("SYSTEMFINISHED\n"); return0; }實(shí)驗(yàn)體會(huì):通過寫代碼的過程更加清晰地了解了兩種算法的思想和用處,對(duì)算法的了解加深的同事也鍛煉了寫代碼的能力?!队?jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)三報(bào)告實(shí)驗(yàn)三題目:請(qǐng)求頁(yè)式存儲(chǔ)管理姓名:張佳慧學(xué)號(hào):12122544實(shí)驗(yàn)日期:2015.1實(shí)驗(yàn)環(huán)境:MicrosoftVisualStudio實(shí)驗(yàn)?zāi)康模航陙?,由于大?guī)模集成電路(LSI)和超大規(guī)模集成電路(VLSI)技術(shù)的發(fā)展,使存儲(chǔ)器的容量不斷擴(kuò)大,價(jià)格大幅度下降。但從使用角度看,存儲(chǔ)器的容量和成本總受到一定的限制。所以,提高存儲(chǔ)器的效率始終是操作系統(tǒng)研究的重要課題之一。虛擬存儲(chǔ)技術(shù)是用來擴(kuò)大內(nèi)存容量的一種重要方法。學(xué)生應(yīng)獨(dú)立地用高級(jí)語(yǔ)言編寫幾個(gè)常用的存儲(chǔ)分配算法,并設(shè)計(jì)一個(gè)存儲(chǔ)管理的模擬程序,對(duì)各種算法進(jìn)行分析比較,評(píng)測(cè)其性能優(yōu)劣,從而加深對(duì)這些算法的了解。實(shí)驗(yàn)內(nèi)容:為了比較真實(shí)地模擬存儲(chǔ)管理,可預(yù)先生成一個(gè)大致符合實(shí)際情況的指令地址流。然后模擬這樣一種指令序列的執(zhí)行來計(jì)算和分析各種算法的訪問命中率。本實(shí)驗(yàn)采用頁(yè)式分配存儲(chǔ)管理方案,并通過分析計(jì)算不同頁(yè)面淘汰算法情況下的訪問命中率來比較各種算法的優(yōu)劣。另外也考慮到改變頁(yè)面大小和實(shí)際存儲(chǔ)器容量對(duì)計(jì)算結(jié)果的影響,從而可為算則好的算法、合適的頁(yè)面尺寸和實(shí)存容量提供依據(jù)。實(shí)驗(yàn)是按下述原則生成指令序列的:(1)50%的指令是順序執(zhí)行的。(2)25%的指令均勻散布在前地址部分。(3)25%的指令均勻散布在后地址部分。示例中選用最佳淘汰算法(OPT)和最近最少使用頁(yè)面淘汰算法(LRU)計(jì)算頁(yè)面命中率。公式為假定虛存容量為32K,頁(yè)面尺寸從1K至8K,實(shí)存容量從4頁(yè)至32頁(yè)。(1)最佳淘汰算法(OPT)這是一種理想的算法,可用來作為衡量其他算法優(yōu)劣的根據(jù),在實(shí)際系統(tǒng)中是難以實(shí)現(xiàn)的,因?yàn)樗仨毾戎乐噶畹娜康刂妨?。由于本示例中已預(yù)生成了全部的指令地址流,故可計(jì)算出最佳命中率。該算法的準(zhǔn)則是淘汰已滿頁(yè)表中不再訪問或是最遲訪問的的頁(yè)。這就要求將頁(yè)表中的頁(yè)逐個(gè)與后繼指令訪問的所有頁(yè)比較,如后繼指令不在訪問該頁(yè),則把此頁(yè)淘汰,不然得找出后繼指令中最遲訪問的頁(yè)面淘汰。可見最佳淘汰算法要花費(fèi)比較長(zhǎng)的運(yùn)算時(shí)間。(2)最近最少使用頁(yè)淘汰算法(LRU)這是一種經(jīng)常使用的方法,有各種不同的實(shí)施方案,這里采用的是不斷調(diào)整頁(yè)表鏈的方法,即總是淘汰頁(yè)表鏈鏈?zhǔn)椎捻?yè),而把新訪問的頁(yè)插入鏈尾。如果當(dāng)前調(diào)用頁(yè)已在頁(yè)表內(nèi),則把它再次調(diào)整到鏈尾。這樣就能保證最近使用的頁(yè),總是處于靠近鏈尾部分,而不常使用的頁(yè)就移到鏈?zhǔn)?,逐個(gè)被淘汰,在頁(yè)表較大時(shí),調(diào)整頁(yè)表鏈的代價(jià)也是不小的。操作過程:編寫程序:#include<iostream>#include<process.h>#include<cstdlib>#include<algorithm>#include<ctime>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>usingnamespacestd;intadress[32];//全局變量數(shù)組,地址流intp;//全局變量p是一共有多少地址流voidinit(){//初始化函數(shù),intt; srand(time(0));//隨機(jī)產(chǎn)生指令序列p=12+rand()%32;cout<<"地址流個(gè)數(shù)P="<<p<<endl; cout<<"隨機(jī)產(chǎn)生的地址流序列\(zhòng)n"; for(inti=0,j=0;i<p;i++,j++){ t=1+rand()%9; adress[i]=t;//將隨機(jī)產(chǎn)生的指令數(shù)存入頁(yè)面流printf("a[%d]=%d",i,t);j=j%5;if(i<10)printf("");if(j==4)printf("\n"); } cout<<endl;}voidOPT(intn){//FIFO算法,n是M的值 inte,q=p,m=n-1; intflag; intflag1; intqueye=0; intleaflink[32];memset(leaflink,0,sizeof(leaflink)); for(intx=0;x<q;x++){ e=x; flag=0; for(inti=0;i<n;i++){ if(leaflink[i]==adress[x]){ flag=1; flag1=i; printf("有相同\n"); break; } } if(flag==0){intk=0;for(intj=0;j<m;j++){//012 leaflink[k]=leaflink[k+1];k++; }leaflink[m]=adress[e];if(e>=m){queye++; } } if(flag==1){inttemp[10]={0};for(inti=0;i<=m;i++){for(inta=e+1;a<q;a++){if(leaflink[i]==adress[a]){temp[i]++;}}}intindex=0;for(inti=0;i<m;i++){intmin=temp[0];if(min>temp[i]){min=temp[i];index=i;}}intl=leaflink[index];leaflink[index]=leaflink[0];leaflink[0]=l; }for(intj=0;j<n;j++)printf("leaflink[%d]=%d",j,leaflink[j]);cout<<endl;} cout<<"M="<<n<<"時(shí)FIFO的命中率為:"<<(1-((double)queye/p))*100<<"%"<<""<<endl;}voidLRU(intn){//LRU算法 inti; intm=n-1; intq=p; inte; intqueye=0; intflag; intflag1; inty; intleaflink[32]; memset(leaflink,0,sizeof(leaflink)); for(intx=0;x<q;x++){ flag=0; e=x; for(i=0;i<n;i++){ if(leaflink[i]==adress[x]){ flag=1; flag1=i; printf("X=%d,lru[%d]=adress[%d]=%d,flag=1\n",x,i,x,adress[x]); break; } } if(flag==0){intk=0; for(intj=0;j<m;j++){//012 leaflink[k]=leaflink[k+1];k++; } leaflink[m]=adress[e]; queye++; } elseif(flag==1){y=flag1; for(intj=0;j<m;j++){ leaflink[flag1]=leaflink[flag1+1]; flag1++;} leaflink[3]=adress[e]; printf("發(fā)現(xiàn)相同后,改變leaflink[%d]=%d\n",m,leaflink[3]);} for(intj=0;j<n;j++)printf("leaflink[%d]=%d",j,leaflink[j]);cout<<endl; } cout<<"發(fā)生替換次數(shù):"<<queye<<endl; cout<<"M="<<n<<"時(shí)LRU的命中率為:"<<(1-((double)queye/p))*100<<"%"<<endl;}intmain(){ init(); charc; printf("請(qǐng)輸入選擇算法(O:最佳淘汰L:最近最少使用):"); cin>>c; if(c=='O') for(inti=3;i<4;i++){ OPT(i); } elseif(c=='L'){for(inti=4;i<5;i++){ LRU(i); cout<<endl; } } return0;}運(yùn)行結(jié)果:最近最少使用:最佳淘汰:實(shí)驗(yàn)體會(huì):通過這次實(shí)驗(yàn),我了解了采用頁(yè)式分配存儲(chǔ)管理方案,并對(duì)頁(yè)式分配存儲(chǔ)管理的兩個(gè)算法最佳淘汰算法和最近最少使用頁(yè)淘汰算法有了更深入的了解,為之后的學(xué)習(xí)奠定了基礎(chǔ)?!队?jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)四報(bào)告實(shí)驗(yàn)四題目:文件操作與管理姓名:張佳慧學(xué)號(hào):12122544實(shí)驗(yàn)日期:2015.1實(shí)驗(yàn)環(huán)境:MicrosoftVisualStudio實(shí)驗(yàn)?zāi)康模弘S著社會(huì)信息量的極大增長(zhǎng),要求計(jì)算機(jī)處理的信息與日俱增,涉及到社會(huì)生活的各個(gè)方面。因此,文件管理是操作系統(tǒng)的一個(gè)極為重要的組成部分。學(xué)生應(yīng)獨(dú)立地用高級(jí)語(yǔ)言編寫和調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過程。從而對(duì)各種文件操作命令的實(shí)質(zhì)內(nèi)容和執(zhí)行過程有比較深入的了解,掌握它們的實(shí)施方法,加深理解課堂上講授過的知識(shí)。實(shí)驗(yàn)內(nèi)容:1.要求:(1)實(shí)際一個(gè)n個(gè)用戶的文件系統(tǒng),每個(gè)用戶最多可保存m個(gè)文件。(2)限制用戶在一次運(yùn)行中只能打開l個(gè)文件。(3)系統(tǒng)應(yīng)能檢查打入命令的正確性,出錯(cuò)要能顯示出錯(cuò)原因。(4)對(duì)文件必須設(shè)置保護(hù)措施,如只能執(zhí)行,允許讀、允許寫等。在每次打開文件時(shí)根據(jù)本次打開的要求,再次設(shè)置保護(hù)級(jí)別,即可有二級(jí)保護(hù)。(5)對(duì)文件的操作至少應(yīng)有下述幾條命令:creat建立文件。delete刪除文件。open打開文件。close關(guān)閉文件。read讀文件。write寫文件。2.示例:(1)程序采用二級(jí)文件目錄,即設(shè)置了主文件目錄(MFD)和用戶文件目錄(UFD)。前者應(yīng)包含文件主(即用戶)及他們的目錄區(qū)指針;后者應(yīng)給出每個(gè)文件主占有的文件目錄,即文件名,保護(hù)碼,文件長(zhǎng)度以及他們存放的位置等。另外為打開文件設(shè)置了運(yùn)行文件目錄(AFD),在文件打開時(shí)應(yīng)填入打開文件號(hào),本次打開保護(hù)碼和讀寫指針等。3.算法與框圖(1)因系統(tǒng)小,文件目錄的檢索使用了簡(jiǎn)單的線性搜索,而沒有采用Hash等有效算法。(2)文件保護(hù)簡(jiǎn)單實(shí)用了三位保護(hù)碼,對(duì)應(yīng)于允許讀、允許寫和運(yùn)行執(zhí)行,如下所示:111允許寫允許讀允許執(zhí)行如對(duì)應(yīng)位為0,則不允許。實(shí)驗(yàn)源碼:#include<iostream>#include<cstdlib>#include<algorithm>#include<ctime>#include<cstring>#include<cstdio>#include<cmath>usingnamespacestd;structUFD{intfname;intlen;intprocode[3];}ufd[10];structMFD{intuser;UFDp[5];}mfd[10];intmain(){intx,n=10,flag1=1,flag2=1,flag3=1;if(flag1){for(inti=0;i<10;i++){ufd[i].fname=i;intt=100+rand()%900;ufd[i].len=t;for(intj=0;j<3;j++)ufd[i].procode[j]=rand()%2;}srand((unsigned)time(NULL));boolf[10];for(inti=0;i<10;i++){mfd[i].user=i;memset(f,0,sizeoff);for(intj=0;j<5;j++){intt;dot=rand()%10;while(f[t]);f[t]=1;mfd[i].p[j]=ufd[t];}}}while(n--&&flag2){cout<<"inputuser:"<<endl;cin>>x;if(x<0||x>=10){cout<<"tryagain"<<endl;break;}for(intj=0;j<5;j++)cout<<mfd[x].p[j].fname<<""<<mfd[x].p[j].len<<""<<mfd[x].p[j].procode[0]<<mfd[x].p[j].procode[1]<<mfd[x].p[j].procode[2]<<endl;cout<<"inputthecommand:"<<endl;cout<<"creat1;delete2;open3;bye4;close5;read6;write7"<<endl;ints,index,flag=1;while(flag){cin>>s;switch(s){case1:if(flag3){cout<<"輸入你要?jiǎng)?chuàng)建的文件的名字:"<<endl;cin>>mfd[x].p[0].fname;cout<<"輸入你要?jiǎng)?chuàng)建的文件的長(zhǎng)度:"<<endl;cin>>mfd[x].p[0].len;cout<<"輸入你要?jiǎng)?chuàng)建的文件的權(quán)限:"<<endl;for(inti=0;i<3;i++)cin>>mfd[x].p[0].procode[i];for(intj=0;j<5;j++)cout<<mfd[x].p[j].fname<<""<<mfd[x].p[j].len<<""<<mfd[x].p[j].procode[0]<<mfd[x].p[j].procode[1]<<mfd[x].p[j].procode[2]<<endl;cout<<"inputthecommand:"<<endl;}else{cout<<"輸入你要?jiǎng)?chuàng)建的文件的名字:"<<endl;cin>>mfd[x].p[index].fname;cout<<"輸入你要?jiǎng)?chuàng)建的文件的長(zhǎng)度:"<<endl;cin>>mfd[x].p[index].len;cout<<"輸入你要?jiǎng)?chuàng)建的文件的權(quán)限:"<<endl;for(inti=0;i<3;i++)cin>>mfd[x].p[index].procode[i];for(intj=0;j<5;j++)cout<<mfd[x].p[j].fname<<""<<mfd[x].p[j].len<<""<<mfd[x].p[j].procode[0]<<mfd[x].p[j].procode[1]<<mfd[x].p[j].procode[2]<<endl;cout<<"inputthecommand:"<<endl;}break;case2:flag3=0;cout<<"輸入要?jiǎng)h除的文件:"<<endl;intt;cin>>t;for(inti=0;i<5;i++){if(mfd[x].p[i].fname==t){index=i;mfd[x].p[i].fname=0;mfd[x].p[i].len=000;memset(mfd[x].p[i].procode,0,sizeof(mfd[x].p[i].procode));}}for(intj=0;j<5;j++)cout<<mfd[x].p[j].fname<<""<<mfd[x].p[j].len<<""<<mfd[x].p[j].procode[0]<<mfd[x].p[j].procode[1]<<mfd[x].p[j].procode[2]<<endl;cout<<"inputthecommand:"<<endl;break;case3:cout<<"輸入要打開的文件:"<<endl;intfile;cin>>file;for(inti=0;i<5;i++){if(mfd[x].p[i].fname==file){if(mfd[x].p[i].procode[2]==0)cout<<"你沒有權(quán)限"<<endl;elsecout<<"可以打開"<<endl;}}cout<<"inputthecommand:"<<endl;break;case4:for(intj=0;j<5;j++)cout<<mfd[x].p[j].fname<<""<<mfd[x].p[j].len<<""<<mfd[x].p[j].procode[0]<<mfd[x].p[j].procode[1]<<mfd[x].p[j].procode[2]<<endl;cout<<"goodbye~"<<endl;flag=0;flag2=0;flag1=0;break;case5:flag=0;flag1=0;break;case6:cout<<"輸入要讀的文件:"<<endl;intfile1;cin>>file1;for(inti=0;i<5;i++){if(mfd[x].p[i].fname==file1){if(mfd[x].p[i].procode[1]==0)cout<<"你沒有權(quán)限"<<endl;elsecout<<"可以讀"<<endl;}}cout<<"inputthecommand:"<<endl;break;case7:cout<<"輸入要寫的文件:"<<endl;intfile2;cin>>file2;for(inti=0;i<5;i++){if(mfd[x].p[i].fname==file2){if(mfd[x].p[i].procode[0]==0)cout<<"你沒有權(quán)限"<<endl;elsecout<<"可以寫"<<endl;}}cout<<"inputthecommand:"<<endl;break;}}}return0;}實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)體會(huì):本次實(shí)驗(yàn)主要是模擬了一下文件系統(tǒng),文件是我們平時(shí)接觸最多也是最廣的形式,即便是不會(huì)計(jì)算機(jī)的人們也可以通過這種操作文件來很方便地完成操作,而本次實(shí)驗(yàn)讓我了解到了文件系統(tǒng)的內(nèi)部實(shí)現(xiàn),雖然僅僅是通過C++模擬的,但還是讓我對(duì)它的原理有了更好的理解,也是對(duì)我們上課的內(nèi)容的一個(gè)鞏固?!队?jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)六報(bào)告實(shí)驗(yàn)六題目:FAT文件系統(tǒng)實(shí)驗(yàn)姓名:張佳慧學(xué)號(hào):12122544實(shí)驗(yàn)日期:2015.1實(shí)驗(yàn)環(huán)境:win95虛擬機(jī)實(shí)驗(yàn)?zāi)康模簭南到y(tǒng)分析的角度出發(fā),了解FAT文件系統(tǒng)的組織結(jié)構(gòu)和文件的存儲(chǔ)方式。進(jìn)一步理解操作系統(tǒng)文件管理的基本思想。實(shí)驗(yàn)內(nèi)容:1.了解3吋軟盤的FAT文件系統(tǒng)結(jié)構(gòu)。2.察看文件分配表的簇號(hào)鏈。3.察看文件目錄表中文件目錄結(jié)構(gòu)。4.了解用簇號(hào)鏈映射的文件鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。5.分析目錄文件的組成。實(shí)驗(yàn)步驟:1.進(jìn)入DEBUG環(huán)境,裝入FAT文件系統(tǒng)結(jié)構(gòu)。執(zhí)行命令:L00021說明:將0號(hào)驅(qū)動(dòng)器中,邏輯扇區(qū)號(hào)從0開始的共21H個(gè)扇區(qū)讀入內(nèi)存,放在DS:0000為起始的地址中。2.觀察1.44M軟盤中FAT12文件系統(tǒng)結(jié)構(gòu)。執(zhí)行命令:D0000連續(xù)執(zhí)行D命令,每次顯示128個(gè)字節(jié),可見文件系統(tǒng)結(jié)構(gòu)。FAT文件系統(tǒng)結(jié)構(gòu)如下:邏輯扇區(qū)號(hào)其中:Boot引導(dǎo)程序FAT文件分配表FDT文件目錄表1.44M軟盤邏輯扇號(hào)與物理扇區(qū)的對(duì)應(yīng)關(guān)系邏輯扇號(hào)0#——0道0面1扇邏輯扇號(hào)1H~11H——0道0面2~18扇邏輯扇號(hào)12H~23H——0道1面1扇~18扇邏輯扇號(hào)24H~35H——1道0面1扇~18扇軟盤有兩面,每面80個(gè)磁道,每個(gè)磁道18個(gè)扇區(qū),每個(gè)扇區(qū)512個(gè)字節(jié),所以軟盤的容量是2*80*18*512=1474560,1474560/1024/1024大約為1.44M。3.分析文件分配表結(jié)構(gòu),了解用簇鏈映射的文件的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。執(zhí)行命令:D200思考:上面屏幕顯示首簇號(hào)為003的文件共包括幾個(gè)扇區(qū)?它分布在哪幾個(gè)物理扇區(qū)上?答:首簇號(hào)為003的文件共包括2個(gè)扇區(qū),它分布在0道0面2、3扇。4.觀察1.44M軟盤中文件目錄表FDT以及文件目錄結(jié)構(gòu)執(zhí)行命令:L00021說明:將邏輯扇區(qū)0H開始的共21H個(gè)物理扇區(qū)裝入DS:0000H起始的內(nèi)存。執(zhí)行命令:D2600說明:顯示從2600H地址開始的FDT文件表。思考:①計(jì)算1.44M的軟盤根目錄最多可以容納多少文件?答:1.44MB軟盤的文件目錄表FDT共14個(gè)扇區(qū),每個(gè)文件的目錄登記項(xiàng)占用32個(gè)字節(jié),用作目錄的一個(gè)扇區(qū)(512字節(jié))最多只能裝入512/32=16個(gè)文件。因此,1.44MB軟盤的根目錄下最多可建文件或子目錄224個(gè)。②上圖屏幕顯示的文件的目錄項(xiàng)中標(biāo)示該文件的首簇號(hào)在何處?該文件是什么屬性?答:首簇號(hào)在第2行的1A~1B字節(jié)處,首簇號(hào)為002,該文件屬于歸檔文件。書上顯示的文件首簇號(hào)在第6行的1A~1B字節(jié)處,首簇號(hào)為091,屬歸檔文件。③書上面的屏幕顯示第1~2行目錄項(xiàng)表示的是什么項(xiàng)目?答:第1~2目錄項(xiàng)表示卷標(biāo)。5.觀察1.44M軟盤中文件目錄表的長(zhǎng)文件名目錄結(jié)構(gòu)思考:①書上面屏幕顯示的2~3行是什么目錄項(xiàng)?答:長(zhǎng)名的第一項(xiàng),也是最后一項(xiàng)。②若有一個(gè)文件名共長(zhǎng)34個(gè)字符,要占多少目錄項(xiàng)?答:四個(gè)目錄項(xiàng),三個(gè)長(zhǎng)目錄項(xiàng)和一個(gè)短目錄項(xiàng)。6.自己動(dòng)手做:①觀察測(cè)試軟盤的FDT區(qū),找到名為BAK的文件目錄。該文件是什么類型的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論