版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
os.采用二級目錄實現(xiàn)文件管理PAGEPAGE15操作系統(tǒng)原理課程設計報告題目:采用二級目錄實現(xiàn)文件管理所在學院:班級:學號:姓名:指導教師:2013年1月15日目錄課程設計目的………………1二、課題內容………………1三、總體路線………………1四、概要設計………………21.數(shù)據(jù)結構………………22.所使用函數(shù)及其功能……3五、詳細設計………………41.主函數(shù)流程圖…………42.創(chuàng)建文件函數(shù)流程圖……53.刪除文件函數(shù)流程圖……74.分解命令函數(shù)流程圖……10六、測試、修改及運行結果………………10七、結束語………………13八、參考文獻………………14課程設計目的文件系統(tǒng)是現(xiàn)代OS用來存儲和管理信息機構,具有按名存取的功能,不僅能方便用戶對信息的使用,也有效提高了信息的安全性。本課題模擬文件系統(tǒng)的目錄結構,并在此基礎上實現(xiàn)文件的各種操作方法。通過本課題,深入理解文件文件目錄的作用和功能,掌握文件打開結構,熟悉與文件有關的系統(tǒng)調用,從而更好地掌握文件系統(tǒng)概念。課題內容1.文件目錄采用二級目錄結構,第一級為主文件目錄master_file_directory;第二級為用戶文件目錄user_file_directory。用戶名用戶文件目錄地址圖1master_file_directory結構文件名文件保護方式文件設置長度文件所在地址圖2user_file_directory結構2.為加速文件存取,為每個用戶建立一張用戶打開表fileTable,用以記錄該用戶當前正在使用的文件。文件名文件長度文件所在地址文件類型創(chuàng)建文件時間圖3fileTable結構3.為該系統(tǒng)提供6條操作命令:創(chuàng)建、打開、讀、寫、關閉、刪除等。4.在該模擬系統(tǒng)中,應先建立主文件目錄、用戶目錄和用戶打開文件表,然后接受合法用戶,給出一個菜單,按用戶選擇執(zhí)行相關操作??傮w路線1.在內存中開辟一個虛擬磁盤空間作為文件存儲器,在其上實現(xiàn)一個簡單的單用戶文件系統(tǒng)。在退出這個簡單的文件系統(tǒng)時,應將該虛擬文件系統(tǒng)保存到磁盤上,以便下次可以再將它恢復到內存的虛擬磁盤空間中。2.文件存儲空間的分配采用顯式鏈接分配。為了實現(xiàn)創(chuàng)建和刪除文件必須要有一棵初始的文件樹存在,以便在文件樹的根節(jié)點下實現(xiàn)創(chuàng)建和刪除文件。3.文件目錄結構采用二級目錄結構。為了簡單起見,可以使用文件結構體,結構體內容包括:文件名,文件目錄識別標示,文件鏈接數(shù),以及他的左孩子右孩子左兄弟右兄弟指4.要有分解函數(shù)對輸入的命令進行分解。以識別那部分是哪部分是命令,哪部分是路徑和文件名。5.最后要有執(zhí)行函數(shù)。來執(zhí)行輸入的創(chuàng)建文件命令。四、概要設計數(shù)據(jù)結構(1)函數(shù)中的主要結構體//兩級目錄結構體typedefstructmaster_file_directory//主文件目錄MFD{ charuserName[10]; charpassword[10]; UFD*user;}MFD;MFDuserTable[MaxUser];intused=0;//定義MFD目錄中用已有的用戶數(shù)typedefstructuser_file_directory//用戶文件目錄文件UFD{ //charfileName[10]; fileTable*file; user_file_directory*next;}UFD;//UFD*headFile;typedefstructfileTable//文件塊結構體{ charfileName[10]; intstrat;//文件在磁盤存儲空間的起始地址 intlength;//文件內容長度 intmaxlength;//文件的最大長度 charfileKind[3];//文件的屬性——讀寫方式 structtm*timeinfo; boolopenFlag;//判斷是否有進程打開了該文件 //fileTable*next;};(2)結構體相互之間的調用關系圖:圖4結構體關系圖模塊結構(1)所用函數(shù)及其功能:voidInit();//初始化文件樹intParseCommand();//接受輸入的命令并把其分解成操作名和路徑文件名voidExecuteCommand();//執(zhí)行命令,分別執(zhí)行edit,del,dir,exit命令inteditComd();//處理edit命令,即創(chuàng)建文件,只要創(chuàng)建表示文件的節(jié)點即可,內容及大小不考慮intdelComd();//處理del命令,即刪除指定文件,不存在是給出錯誤信息intdirComd();//處理dir命令。問了能顯示的看出創(chuàng)建文件和刪除文件是否成功,把根目錄的文件都顯示出來intFindFilename(charPara2[]);//查找文件名structFileNode*CreateFileNode(charfilename[],intisdir,inti_nlink);//創(chuàng)建結點intGetInput(char*buffer,unsignedintbuffer_len);//獲取輸入(2)所使用變量structFileNode*cp,*tp,*root;//*cp,*tp,*root是根目錄節(jié)點charpath[INPUT_LEN-COMMAND_LEN];//記錄當前走過的路徑charPara1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1數(shù)組存儲輸入的命令,para2數(shù)組存儲輸入的文件名charfilename[FILENAME_LEN],tmp;unsignedinti,j;五、詳細設計主函數(shù)流程圖圖5主函數(shù)流程圖創(chuàng)建文件函數(shù)流程圖圖6創(chuàng)建文件函數(shù)流程圖具體函數(shù)實現(xiàn)過程如下:inteditComd(){ //chartmp; structFileNode*temp=CreateFileNode("",0,0); intsign; structFileNode*tp; //路徑不能為空 if(strlen(Para2)==0) { printf("\n命令格式有錯誤.\n"); return0; } //長度檢查 if(strlen(Para2)>50) { printf("\n文件名過長\n"); return0; } //格式檢查 if(!(isalpha(Para2[0])||Para2[0]=='_'||Para2[0]=='\0'||Para2[0]=='/')) { printf("文件名格式有錯!\n");/*文件首字母可以為'字母'或'數(shù)字'或'_'或'/'或'回車'*/ return0; } //獲取文件名 sign=FindFilename(Para2); if(sign==0) return0; if(cp->isdir!=1)//如當前指針指向的是文件,則報錯 { printf("youcannoteditafileinunderafile!\n"); return0; } //創(chuàng)建文件結點,并插入到指定目錄下 tp=CreateFileNode("",1,0); strcpy(tp->filename,filename); tp->isdir=0; tp->i_nlink=0; if(cp->child==NULL) { tp->parent=cp; tp->child=NULL; cp->child=tp; tp->sibling_prev=NULL; tp->sibling_next=NULL; } else { temp=cp; //用temp找到新結點插入處 temp=temp->child; while(temp->sibling_next)//findthelastsibingnode { temp=temp->sibling_next; if(strcmp(temp->filename,filename)==0&&temp->isdir==0) { printf("此文件名已存在\n");//重名報錯 return0; } }//找到了最后一個結點 temp->sibling_next=tp; tp->parent=NULL; tp->child=NULL; tp->sibling_prev=temp; tp->sibling_next=NULL; } return1;}刪除文件函數(shù)流程圖圖7刪除函數(shù)流程圖具體函數(shù)實現(xiàn)過程如下:intdelComd(){ // chartmp; intsign; structFileNode*temp; //參數(shù)不能為空 if(strlen(Para2)==0) { printf("\n命令格式有錯誤.\n"); return0; } //獲取文件名 sign=FindFilename(Para2); if(sign==0)return0; //用temp指向要刪除的結點 if(cp->child) { temp=cp->child; while(temp->sibling_next&&(strcmp(temp->filename,filename)!=0||temp->isdir!=0)) temp=temp->sibling_next; if(strcmp(temp->filename,filename)!=0) { printf("不存在該文件!\n"); return0; } } else { printf("不存在該文件!\n"); return0; } //要刪除的不能是目錄 if(temp->isdir!=0) { printf("ERROR!該命令只能刪除文件,不可刪除目錄!\n"); return0; } //如仍有用戶使用該文件,則不能刪除 if(temp->i_nlink!=0) { printf("還有用戶共享了該文件,不能刪除!\n"); return0; } //刪除工作if(temp->parent==NULL)//不是第一個孩子 { temp->sibling_prev->sibling_next=temp->sibling_next; if(temp->sibling_next)//處理是最后一個兄弟的情況 temp->sibling_next->sibling_prev=temp->sibling_prev; temp->sibling_prev=temp->sibling_next=NULL; }//if else//第一個孩子 { if(temp->sibling_next)//處理是最后一個兄弟的情況 temp->sibling_next->parent=temp->parent; temp->parent->child= temp->sibling_next; }//else free(temp); return1;}分解命令函數(shù)流程圖圖8分解命令函數(shù)流程圖六、測試修改及運行結果1.實際運行結果:初始界面2.鍵入用戶名和密碼創(chuàng)建賬號登陸文件操作(1)創(chuàng)建文件(2)寫文件(3)讀文件(4)顯示文件(5)關閉文件(6)刪除文件七、結束語雖然我們做過很多次課程設計了,但是感覺自己還有好多需要學習的地方,接到題目要求時,設計大體的框架,考慮好所使用的數(shù)據(jù)結構,然后用高級編程語言分模塊的把架子的思路編寫出來,調試,運行,再看看是不是符合題目的要求,上網(wǎng)找些資料,看看想想是不是要提高要求,才可以滿足實際的需要,最后把收集的勞動成果組合起來,一個小程序終于成型了,雖然每次的過程差不多都一樣,但是每次都會有不同的體會。在這中間,敲代碼,調試程序的過程比較枯燥,每次思考一個問題很久不能解決的時候,真的很想放棄它,試著找客觀的原因,幸好,我的周圍有學習好的同學,他們不僅幫我解答了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《護理專業(yè)就業(yè)指導》課件
- 《淺析中國對外貿易》課件
- 《伽瑪星產(chǎn)品介紹》課件
- 西瓜行業(yè)銷售工作總結
- 團隊文化建設的必要性計劃
- 交通工具制造技術研究
- 黃頁廣告前臺工作總結
- 門診輸液室護理工作總結
- 《單片機技術交通》課件
- 2021年安徽省蕪湖市公開招聘警務輔助人員輔警筆試自考題1卷含答案
- 10以內連加減口算練習題完整版139
- 2022-2023學年廣東省廣州市海珠區(qū)六年級(上)期末英語試卷(含答案)
- 2024至2030年中國瀝青攪拌站行業(yè)市場現(xiàn)狀調研及市場需求潛力報告
- 《平凡的世界》整本書閱讀指導教學設計基礎模塊上冊
- 2024政務服務綜合窗口人員能力與服務規(guī)范考試試題
- (高清版)AQ 2002-2018 煉鐵安全規(guī)程
- 虛擬現(xiàn)實與增強現(xiàn)實
- 08J933-1體育場地與設施(一)
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題庫及答案
- 課題論文:引領新經(jīng)濟加速新質生產(chǎn)力發(fā)展
- 《五年級上冊科學蘇教版F》期末檢測
評論
0/150
提交評論