操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告_第1頁(yè)
操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告_第2頁(yè)
操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告_第3頁(yè)
操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告_第4頁(yè)
操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、NORTH CHINA UNIVERSITY OF TECHNOLOGY操作系統(tǒng)(2014年秋季學(xué)期)序號(hào):8 實(shí) 驗(yàn) 報(bào) 告系別:計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):信安12-1班姓名:李勇學(xué)號(hào):07101020112實(shí)驗(yàn)名稱:進(jìn)程調(diào)度總成績(jī):評(píng)語(yǔ): 日期:操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱進(jìn)程調(diào)度實(shí)驗(yàn)序號(hào)1實(shí)驗(yàn)日期2014.1.2實(shí)驗(yàn)人李勇一、實(shí)驗(yàn)?zāi)康?、要求與環(huán)境1目的:編寫一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)實(shí)現(xiàn)程序,加深對(duì)文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)的理解。2.要求:(1)用C語(yǔ)言(或其它語(yǔ)言,如Java)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)設(shè)計(jì),加深對(duì)文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)的理解。要求模擬采用二級(jí)目錄結(jié)構(gòu)的磁盤文件系統(tǒng)的文件

2、操作, 實(shí)現(xiàn)用戶的創(chuàng)建、查詢、登錄、刪除,和文件的添加、刪除、打開、關(guān)閉、讀、寫等基本命令,用在屏幕上輸入命令來模擬用戶程序中調(diào)用的文件操作。(2)為了清楚地觀察文件的管理過程,程序應(yīng)將每個(gè)文件操作的結(jié)果顯示出來。(3)分析程序運(yùn)行的結(jié)果,談一下自己的收獲。3.環(huán)境:1. 硬件設(shè)備:PC機(jī)一臺(tái)2. 軟件環(huán)境:安裝Windows操作系統(tǒng)或者Linux操作系統(tǒng),并安裝相關(guān)的程序開發(fā)環(huán)境,如C C+Java 等編程語(yǔ)言環(huán)境。二、相關(guān)背景知識(shí)最基本的文件操作 (1)創(chuàng)建文件 在創(chuàng)建一個(gè)新文件時(shí),系統(tǒng)首先要為新文件分配必要的外存空間,并在文件系統(tǒng)的目錄中,為之建立一個(gè)目錄項(xiàng)。目錄項(xiàng)中應(yīng)該記錄新文件的文件

3、名及其在外存的地址等屬性。 (2)刪除文件 當(dāng)已不再需要某文件時(shí),可將它從文件系統(tǒng)中刪除。在刪除時(shí),系統(tǒng)應(yīng)該先從目錄中找到要?jiǎng)h除的文件的目錄項(xiàng),使之成為空項(xiàng),然后回收該文件所占用的存儲(chǔ)空間。 (3)讀文件 在讀一個(gè)文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出文件名和應(yīng)該讀入的內(nèi)存目標(biāo)地址。此時(shí),系統(tǒng)同樣要查找目錄,找到制定的目錄項(xiàng),從中得到被讀文件在外存中的位置。在目錄項(xiàng)中,還有一個(gè)指針用于對(duì)文件的讀/寫。 (4)寫文件 在寫一個(gè)文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出該文件名及該文件在內(nèi)存中的(源)地址。為此,也同樣須先查找目錄,找到指定文件的目錄項(xiàng),在利用目錄中的寫指針進(jìn)行寫操作。 (5)截?cái)辔募?如果一個(gè)文

4、件的內(nèi)容已經(jīng)陳舊而需要全部更新文件的內(nèi)容時(shí),一種方法是將此文件刪除,再重新創(chuàng)建一個(gè)新文件。但如果文件名及其屬性均無(wú)改變時(shí),則可采取另一種所謂的截?cái)辔募姆椒ǎ思磳⒃形募拈L(zhǎng)度設(shè)置為0,或說放棄原有的文件內(nèi)容。 (6)設(shè)置文件的讀/寫位置 前述的文件讀/寫操作,都只提供了對(duì)文件順序存取的手段,即每次都是從文件的始端讀或?qū)憽TO(shè)置文件讀/寫位置的操作,用于設(shè)置文件讀/寫指針的位置,以便每次讀/寫文件時(shí),不是從其始端而是從所設(shè)置的位置開始操作。也正因如此,才能改順序存取為隨機(jī)存取。 三、實(shí)驗(yàn)設(shè)計(jì)說明(寫你實(shí)驗(yàn)相關(guān)的設(shè)計(jì),別寫這么少,多寫點(diǎn)。)本次實(shí)驗(yàn)采用C語(yǔ)言模擬二級(jí)文件系統(tǒng),可以在多用戶環(huán)境下實(shí)

5、現(xiàn)用戶的創(chuàng)建、查詢、登錄、刪除,和文件的添加、刪除、打開、關(guān)閉、讀、寫等基本操作,很好地模擬了操作系統(tǒng)對(duì)文件的管理過程。四、實(shí)驗(yàn)設(shè)計(jì)的流程圖(寫你實(shí)驗(yàn)相關(guān)的設(shè)計(jì)流程圖,下面的流圖是有問題的。)選擇操作命令及命令對(duì)象文件實(shí)施該命令輸出錯(cuò)誤信息顯示已經(jīng)完成操作的信息開始進(jìn)行該用戶的下個(gè)操做直到退出該用戶權(quán)限結(jié)束有操作權(quán)限?是否要?jiǎng)?chuàng)建新文件?退出?輸入文件名等信息;顯示已經(jīng)完成操作的信息YNYNNY選擇用戶四、程序代碼(換上你自己的程序代碼,下面的程序代碼是有問題的。)#include "stdlib.h"#include <iostream>#define NULL

6、 0int count=0;struct filechar name10;int code;/保護(hù)碼int size;char pwrite;/讀寫指針;struct userchar name10;struct file *list;/目錄指針;/struct file one10="a1",0,10,0,"a2",2,10,0,"a3",1,10,0,"a4",2,10,0,"a5",2,10,0,"a6",2,10,0,"a7",1,10,0,&qu

7、ot;0",0,0,0,"0",0,0,0,"0",0,0,0;struct file two10="b1",0,10,0,"b2",2,10,0,"b3",1,10,0,"b4",2,10,0,"b5",2,10,0,"b6",2,10,0,"b7",2,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file

8、 three10="c1",0,10,0,"c2",2,10,0,"c3",1,10,0,"c4",2,10,0,"c5",2,10,0,"c6",2,10,0,"c7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file four10="d1",0,10,0,"d2",2,10,0,"d3"

9、,1,10,0,"d4",2,10,0,"d5",2,10,0,"d6",2,10,0,"d7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file fine10="e1",0,10,0,"e2",2,10,0,"e3",1,10,0,"e4",2,10,0,"e5",2,10,0,"e6",

10、2,10,0,"e7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file six10="f1",0,10,0,"f2",2,10,0,"f3",1,10,0,"f4",2,10,0,"f5",2,10,0,"f6",2,10,0,"f7",1,10,0,"0",0,0,0,"0",0,0,0

11、,"0",0,0,0;struct file seven10="g1",0,10,0,"g2",2,10,0,"g3",1,10,0,"g4",2,10,0,"g5",2,10,0,"g6",2,10,0,"g7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file eight10="h1",0,10,0,&qu

12、ot;h2",2,10,0,"h3",1,10,0,"h4",2,10,0,"h5",2,10,0,"h6",2,10,0,"h7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file nine10="j1",0,10,0,"j2",2,10,0,"j3",1,10,0,"j4",2,10,0,&quo

13、t;j5",2,10,0,"j6",2,10,0,"j7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file ten10="k1",0,10,0,"k2",2,10,0,"k3",1,10,0,"k4",2,10,0,"k5",2,10,0,"k6",2,10,0,"k7",1,10,0,"

14、0",0,0,0,"0",0,0,0,"0",0,0,0;struct file UFD10;struct file AFD5="0",0,0,0,"0",0,0,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;/struct user use10="number1",one,"number2",two,"number3",three,"number4"

15、;,four,"number5",fine,"number6",six,"number7",seven,"number8",eight,"number9",nine,"number10",ten;struct user MFD1="0",0;/voidrunning();void delet(); voidwrite();voidopen();voidclose();voidbye();voidread();voidcreate();void input(

16、);/using namespace std;void main()input();running();cout<<"操作己結(jié)束"<<endl;/void running()char order;int i;cout<<endl<<"*"<<endl;cout<<"用戶的所有文件如下:"<<endl;for(i=0;i<10;i+)cout<<UFD<<"t"cout<<endl

17、<<"*"<<endl;cout<<" 請(qǐng)選擇操作命令(輸入代號(hào)):"<<endl;cout<<"c-create d-deleteo-opens-close r-read w-writeb-byet.exit(重選用戶)"<<endl;cout<<endl<<"*"<<endl;cout<<"請(qǐng)輸入命令:"<<endl;cin>>order;switc

18、h(order)case 'c' : create();break;case 'd' : delet();break;case 'o' : open();break;case 's' : close();break;case 'r' : read();break;case 'w' : write();break;case 'b' : bye();break;case 't' : input();break;default : cout<<"輸入命

19、令出錯(cuò),請(qǐng)重輸"<<endl<<endl;running();/void delet()char name10;int i,flag;docout<<"請(qǐng)輸入文件名:"<<endl<<endl;cin>>name;flag=0;for(i=0;i<10;i+)if(strcmp(UFD,name)/如果沒有這個(gè)文件flag=1;/break;elseflag=0;strcpy(UFD,"0");/清空文件UFDi.code=0;UFDi.pwr

20、ite=0;UFDi.size=0;cout<<"該文件己被刪除"<<endl;break;if(flag=1)cout<<"無(wú)此文件,請(qǐng)重新輸入"<<endl;while(flag=1);cout<<endl;running();/void open()char name10;int i,j,flag;if(count=5)cout<<"運(yùn)行文件隊(duì)列己滿"<<endl;running();elsedocout<<"請(qǐng)輸入文件名:

21、"<<endl;cin>>name;flag=0;for(i=0;i<10;i+)if(strcmp(UFD,name)/如果沒有這個(gè)文件flag=1;/break;elseflag=0;break;if(flag=1)cout<<"無(wú)此文件,請(qǐng)重新輸入"<<endl;while(flag=1);for(j=0;j<5;j+)if(strcmp(AFD,name)/如果沒有這個(gè)文件flag=1;elseflag=0;break;if(flag=1)for(j=0;j<5;j+

22、)if(!strcmp(AFD,"0")AFDj=UFDi;cout<<"文件己打開"<<endl;count+;break;else cout<<"該文件己經(jīng)在打開隊(duì)列中"<<endl;cout<<endl;running();/void close()char name10;int j,flag;cout<<"請(qǐng)輸入文件名:"<<endl;cin>>name;flag=0;for(j=0;j<5;j

23、+)if(strcmp(AFD,name)/如果沒有這個(gè)文件flag=1;/break;elseflag=0;strcpy(AFD,"0");/清空文件AFDj.code=0;AFDj.pwrite=0;AFDj.size=0;cout<<"運(yùn)行隊(duì)列中的該文件己被關(guān)閉"<<endl;break;if(flag=1)cout<<"運(yùn)行隊(duì)列中無(wú)此打開的文件,請(qǐng)重新操作"<<endl;cout<<endl;running();/void bye()int i

24、,j;for(i=0;i<5;i+)for(j=0;j<10;j+)if(!strcmp(AFD,UFD)UFDi=AFDi;break;cout<<"文件目錄己保存"<<endl;cout<<endl;/void read()char name10;int j,flag=0;cout<<"請(qǐng)輸入文件名:"<<endl;cin>>name;for(j=0;j<5;j+)if(!strcmp(AFD,name)/如果AFD有這個(gè)文件

25、flag=1;break;if(flag=1)if(AFDj.code=0|AFDj.code=2)AFDj.pwrite='R'cout<<"文件的狀態(tài)是正在讀"<<endl;else cout<<"無(wú)權(quán)限寫此文件"<<endl;else cout<<"運(yùn)行隊(duì)列中無(wú)此文件,請(qǐng)先打開文件"<<endl;cout<<endl;running();/ void write()char name10;int j,flag=0;cout<

26、<"請(qǐng)輸入文件名:"<<endl;cin>>name;for(j=0;j<5;j+)if(!strcmp(AFD,name)/如果AFD有這個(gè)文件flag=1;break;if(flag=1)if(AFDj.code=1|AFDj.code=2)AFDj.pwrite='W'cout<<"文件的狀態(tài)是正在寫"<<endl;else cout<<"無(wú)權(quán)限寫此文件"<<endl;else cout<<"運(yùn)行

27、隊(duì)列中無(wú)此文件,請(qǐng)先打開文件"<<endl;cout<<endl;running();/void create()char name10;int i,j=0,flag;for(i=0;i<10;i+)if(!strcmp(UFD,"0")j+;if(j>9)cout<<"文件夾己滿,請(qǐng)先刪除"<<endl;/cout<<j;running();elsedocout<<"請(qǐng)輸入文件名:"<<endl;cin>>

28、;name;flag=0;for(i=0;i<10;i+)if(!strcmp(UFD,name)/如果有重名的文件cout<<"文件名重復(fù),請(qǐng)重新輸入"<<endl;flag=1;break;while(flag=1);for(i=0;i<10;i+)if(!strcmp(UFD,"0")/找到第一個(gè)空的文件strcpy(UFD,name);docout<<"請(qǐng)輸入保護(hù)碼(選擇-2,0-可讀,-可寫,-可讀寫):"<<endl;cin&g

29、t;>UFDi.code;if(UFDi.code!=0&&UFDi.code!=1&&UFDi.code!=2)cout<<"輸入錯(cuò)誤,重新輸入保護(hù)碼"<<endl;while(UFDi.code!=0&&UFDi.code!=1&&UFDi.code!=2);cout<<"請(qǐng)輸入文件長(zhǎng)度(選擇數(shù)字):"<<endl;cin>>UFDi.size;cout<<"己建立文件"<<UF

30、D<<endl;break;running();/void input()char name;int i;cout<<endl<<"*"<<endl;cout<<" 請(qǐng)選擇以下用戶名(輸入數(shù)字):"<<endl;cout<<"1.one2.two3.three4.four5.fine6.six7.seven8.eigh9.nine0.ten"<<endl;cout<<"*"<<endl

31、<<endl;cout<<"請(qǐng)輸入用戶名:"cin>>name;switch(name)case '1': for(i=0;i<10;i+)UFDi=onei;MFD0=use1;running();break;case '2': for(i=0;i<10;i+)UFDi=twoi;MFD0=use1;running();break;case '3': for(i=0;i<10;i+)UFDi=threei;MFD0=use2;running();break;case '4': for(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論