操作系統(tǒng)課程設(shè)計文件系統(tǒng)管理_第1頁
操作系統(tǒng)課程設(shè)計文件系統(tǒng)管理_第2頁
操作系統(tǒng)課程設(shè)計文件系統(tǒng)管理_第3頁
操作系統(tǒng)課程設(shè)計文件系統(tǒng)管理_第4頁
操作系統(tǒng)課程設(shè)計文件系統(tǒng)管理_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、操作系統(tǒng)課程設(shè)計 文件系統(tǒng)管理 學(xué) 院 計算機學(xué)院 專計算機科學(xué)與技術(shù)班級姓名學(xué)號201318廣東工業(yè)大學(xué)計算機學(xué)院制文件系統(tǒng)管理一、實驗?zāi)康哪M文件系統(tǒng)的實現(xiàn)的基本功能,了解文件系統(tǒng)的基本結(jié)構(gòu)和文件系統(tǒng)的管理方法看,加深了解文件 系統(tǒng)的內(nèi)部功能的實現(xiàn)。通過高級語言編寫和實現(xiàn)一個簡單的文件系統(tǒng),模擬文件管理的工作過程,從而 對各種文件操作系統(tǒng)命令的實質(zhì)內(nèi)容和執(zhí)行過程有比較深入的了解。二、實驗內(nèi)容和要求編程模擬一個簡單的文件系統(tǒng),實現(xiàn)文件系統(tǒng)的管理和控制功能。在用戶程序中通過使用文件系統(tǒng)提 供的create, open , read , write , close, delete等文件命令,對文

2、件進(jìn)行操作。 以下報告主要包括:1 .可行性分析2 .需求分析3 .概要設(shè)計4 .詳細(xì)設(shè)計5 .測試6 .總結(jié)三、可行性分析1、技術(shù)可行性對于圖形編程還不了解,但是經(jīng)過本學(xué)期的三次實驗的練習(xí),可以設(shè)計好命令操作界面。利用大二期間學(xué) 習(xí)的數(shù)據(jù)結(jié)構(gòu)可以模擬出此課程設(shè)計的要求。2、經(jīng)濟可行性課程設(shè)計作為本課程的練習(xí)及進(jìn)一步加深理解。與經(jīng)濟無關(guān),可以不考慮。(零花費,零收益)3.法律可行性自己編寫的程序,僅為練習(xí),不作其他用途,與外界沒什么聯(lián)系,可行。四、需求分析編寫程序?qū)崿F(xiàn)文件系統(tǒng),主要有以下幾點要求:1、實現(xiàn)無窮級目錄管理及文件管理基本操作2、實現(xiàn)共享“別名”3、加快了文件檢索五、概要設(shè)計為了克服

3、單級目錄所存在的缺點,可以為每一位用戶建立一個單獨的用戶文件目錄UFD ( User FileDirectory ) o這些文件目錄可以具有相似的結(jié)構(gòu),它由用戶所有文件的文件控制塊組成。此外,在系統(tǒng)中 再建立一個主文件目錄MFD (Master File Directory );在主文件目錄中,每個用戶目錄文件都占有一個目錄項,其目錄項中包括用戶名和指向該用戶目錄的指針。 本設(shè)計主要實現(xiàn)下面幾個數(shù)據(jù)結(jié)構(gòu):M D FU F DA F D用戶名文件名打開文件名文件目錄指針保護(hù)碼打開保護(hù)碼用戶名文件長度讀寫的文件目錄指針文件名總體的流程圖如下:六、詳細(xì)設(shè)計主要數(shù)據(jù)結(jié)構(gòu):(Master File Di

4、rectory ),主要用以存放用戶,可以增加存放密碼的字符數(shù)組,本設(shè)計沒有保密安全方面 的憂慮,為了使用時操作更簡單省去密碼。所以, MFD結(jié)構(gòu)僅包括用戶名和指向子目錄的一個指針,以 及指向下一用戶的連接點,為線性結(jié)構(gòu)。struct MFD(char name20; UFD ( User File Directory ),用于存放文件的數(shù)據(jù)結(jié)構(gòu)。由于本設(shè)計為了加快檢 索速度,使用了二叉排序樹的結(jié)構(gòu),所以UFD結(jié)構(gòu)中相應(yīng)加入了用于樹結(jié)構(gòu)的parent , leftchild ,和rightchild記錄鏈接情況。當(dāng)本文件為普通文件時,為下級記錄申請AFD (file) , folder為空。同

5、樣,當(dāng)本文件為文件夾時,為它申請相應(yīng)的空間, AFD為空。以此來達(dá)到無窮級別目錄的存儲。struct UFD(UFD *parent;UFD *leftchild;UFD *rightchild;UFD *folder;);temp=temp-link;)void BSTtraverse(UFD *fileBST)以區(qū)分文件夾printf(.t); elseprintf(t);if(fileBST-leftchild!=NULL)創(chuàng)建文件n);printf(2.創(chuàng)建文件夾n);printf(3.取消n);printf(請選擇:n);scanf(%c,&s);fflush(stdin);if(s

6、=3)return;if(s!=1&s!=2)printf(輸入錯誤,請重新輸入! n);n);n);while(s!=1&s!=2);if(strcmp(fileBST-name,NULL)=0) 追力口printf(2.重寫n);printf(3.取消printf(請選擇:n);scanf(%c,&s);fflush(stdin);if(s=3)return;if(s!=1&s!=2)printf(輸入錯誤,請重新輸入! n);while(s!=1&s!=2);printf(請輸入要重寫或追加的內(nèi)容(link;printf(n是否嘗試在共享文件夾中打開(y/n):);dos=getchar

7、();if(s=n|s=N)return NULL;else if(s=y|s=Y)break;else printf(輸入錯誤,請重新輸入:);while(s!=y&s!=n&s!=Y&s!=N);stemp=share_file;while(stemp!=NULL) if(strcmp(stemp-file-name,name)=0) temp=stemp-file;break; stemp=stemp-link;return temp;UFD *operations(UFD *fileBST)while(1)char s;system(cls);if(open_file!=NULL) p

8、rintf(已打開文件,請及時關(guān)閉!n);printf(文件名t文件長度t讀寫t共享t內(nèi)容) printf(n);print_open_file();printf(n);printf(當(dāng)前路徑:);print_path(fileBST);printf(n);if(strcmp(fileBST-name,NULL)=0) printf(本層文件為空!n);else printf(本文件夾包含以下文件:BSTtraverse(fileBST);n);printf(n);printf(1.創(chuàng)建文件createn);printf(2.刪除文件deleten);printf(3.打開文件openn);p

9、rintf(4.關(guān)閉文件closen);printf(5.讀文件readn);printf(6.寫文件writen);printf(0.返回上一層/注銷nn);printf(請選擇:);printf();scanf(%c,&s); fflush(stdin); switch(s) case 1:fcreate(fileBST); break;case 2:fileBST=fdelete(fileBST);break;case 3:fopen(fileBST);break;case 4:fclose();break;case 5:case 6:fread_write(fileBST,s);bre

10、ak; case 0:return fileBST; default:break;void Log_in()MFD *temp=NULL;char name30;char flag=0;if(mfd_link=NULL),請創(chuàng)建后再登陸!);printf(目前還沒有創(chuàng)建用戶 getch();return; do printf(請輸入用戶名:); scanf(%s,name); fflush(stdin);登錄n);2.添加新用戶n);3.查看已注冊用戶n);0.退出nn)if(strcmp(name,cancel)=0) return;printf( printf( printf( print

11、f(請選擇:); printf();scanf(%c,&s); fflush(stdin);if(s!=0&s!=1&s!=2&s!=3) printf(輸入錯誤,請重新輸入:);getch();fflush(stdin);continue;)switch(s) case 1:Log_in();break;case 2:Init_user();break;case 3:Check_user();break;case 0:return 1; default:break;)return 0;)七、測試登錄操作:以下為對文件的六個基本操作:無窮級文件、文件路徑的顯示,以及打開一個不存在的文件的示例:

12、打開普通文件后的情況,此時不能刪除文件:本系統(tǒng)未能實現(xiàn)級聯(lián)刪除,操作被禁止: 關(guān)閉文件后刪除操作成功:逐個刪除后“文件系統(tǒng)”文件夾也可以刪除了:八、總結(jié)本次課程設(shè)計設(shè)計的知識比較廣,需要較好的理解能力和編程能力。在本次設(shè)計中,花費時間比較多的應(yīng)該是數(shù)據(jù)結(jié)構(gòu)的設(shè)計與更改了。在開始時僅僅按照實驗指導(dǎo)書 上的MDF、UFD、AFD做了相應(yīng)的數(shù)據(jù)結(jié)構(gòu),而且里面包含的數(shù)據(jù)比較少。初衷是在以后的實現(xiàn)時需要再 加進(jìn)去。但是,在以后加進(jìn)去的時候發(fā)現(xiàn)有不少細(xì)節(jié)需要增加,例如創(chuàng)建一個文件,需要對里面的各個 變量進(jìn)行初始化,在結(jié)構(gòu)體中增加變量的時候就忘記了其他地方的初始化,顧此失彼。另外,在設(shè)計之 初是想在 MFD和UFD中增加一個BST鏈接以加快檢索的,代碼打了一半之后有覺得麻煩,代碼過長而把 它刪除改變,變動比較大。所以,經(jīng)過這次教訓(xùn),我覺得以后再設(shè)計程序之前就應(yīng)該考慮到具體的數(shù)據(jù) 結(jié)構(gòu),盡量想得全面一點,這樣后面的修改就可以省不少時間,還有就是,盡量不要改數(shù)據(jù)結(jié)構(gòu)。以上 是關(guān)于數(shù)據(jù)結(jié)構(gòu)的。設(shè)計了一個號的數(shù)據(jù)結(jié)構(gòu),本課程設(shè)計的實現(xiàn)就容易多了,但是某些操作還是需要取舍的。例如在建立共享鏈的時候,本來是在UFD中再加入一個指針以指示共享文件的,但后來發(fā)現(xiàn)一個結(jié)構(gòu)體如果吧太多不相關(guān)的變量都放在一起的話會變得很混亂,最后決定另建一個鏈結(jié)構(gòu)

溫馨提示

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

評論

0/150

提交評論