《操作系統(tǒng)》課程設計設計一個簡單二級文件系統(tǒng)_第1頁
《操作系統(tǒng)》課程設計設計一個簡單二級文件系統(tǒng)_第2頁
《操作系統(tǒng)》課程設計設計一個簡單二級文件系統(tǒng)_第3頁
《操作系統(tǒng)》課程設計設計一個簡單二級文件系統(tǒng)_第4頁
《操作系統(tǒng)》課程設計設計一個簡單二級文件系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、操作系統(tǒng)課程設計題目: 設計一個簡單二級文件系統(tǒng) 專業(yè): 計算機科學與技術 年級: 文專計0811 姓 名: 學 號: 指導教師: 時間: 2010.7.12-2010.7.16 2010年 7 月15日一、設計內容1、可以實現(xiàn)下列幾條命令。format 格式化dir 列文件目錄create 創(chuàng)建文件delete 刪除文件deldir 刪除目錄open 打開文件close 關閉文件search 查詢文件copy 拷貝文件cut 剪切文件二、開發(fā)環(huán)境windows操作系統(tǒng) microsoft visualc+三、分析設計(一)實驗原理通過程序模擬linux文件系統(tǒng),用一個二進制文件(filesy

2、stem.disk)來模擬磁盤.設計一個多用戶的二級文件系經統(tǒng)、實現(xiàn)一般的創(chuàng)建文件、目錄,刪除文件、目錄,切換目錄,打開、關閉文件、讀寫文件等操作。文件系統(tǒng),包含格式化,顯示文件(目錄),創(chuàng)建文件等幾個簡單命令的實現(xiàn),而且能完成超級塊的讀寫,節(jié)點的讀寫等過程. 本文件系統(tǒng)采用兩級目錄,其中第一級對應于用戶賬號,第二級對應于用戶賬號下的文件。另外,為了簡單本文件系統(tǒng)未考慮文件共享、文件系統(tǒng)安全以及管道文件與設備文件等特殊內容。1.程序執(zhí)行流程圖: 開始 初始化 選擇程序刪除目錄、文件查看目錄、文件進入指定目錄返回上一目錄級查詢創(chuàng)建目錄、文件 格式化 結束2.數(shù)據(jù)塊的分配和回收開始系統(tǒng)是否有空塊?

3、返回當前空閑塊地址;超級塊空閑指針加1開啟新的塊組,將其地址信息讀入超級塊;返回該塊組首地址結束超級塊中是否有空塊?(二)程序結構設計filesystem類負責管理磁盤空間和磁盤內存節(jié)點,負責對磁盤空間和磁盤數(shù)據(jù)進行優(yōu)化管理。并提代接口言方法供用戶或程序調用。內存system用戶1磁盤用戶2用戶3用戶n(3) 數(shù)據(jù)結構int physic100; /文件地址緩沖區(qū)int style=1; /文件的類型char cur_dir10=root; /當前目錄 int search_i=0;struct command char com10;cmd20;struct block int n; /空閑的

4、盤快的個數(shù) int free50; /存放空閑盤快的地址 int a; /模擬盤快是否被占用memory20449;struct block_super int n; /空閑的盤快的個數(shù) int free50; /存放進入棧中的空閑塊 int stack50; /存放下一組空閑盤快的地址super_block;struct node /i結點信息 int file_style; /i結點 文件類型 int file_length; /i結點 文件長度 int file_address100; /i結點 文件的物理地址 char file_message100; i_node640;struct

5、 dir /目錄項信息 char file_name10; /文件名 int i_num; /文件的結點號 char dir_name10; /文件所在的目錄 root640;4. 運行示例及結果分析菜單刪除目錄文件查詢拷貝剪切五、程序實現(xiàn)詳細程序請參見源文件, 在此只列舉點1、剪切文件程序片段:void cut(char *tmp,char *newname) int i; /,j char t20; _strtime(t); for(i=0;i640;i+) if(strcmp(newname,rooti.file_name)=0) break; if(i=640) printf(目錄不存

6、在,不能剪切!n); return; for(i=0;i640;i+) if(strcmp(tmp,rooti.file_name)=0) strcpy(rooti.dir_name,newname); strcpy(i_noderooti.i_num.change_t,t);/ printf(剪切成功!n);/ return; if(i=640) printf(文件不存在,執(zhí)行失?。);2.無文件查詢程序片段:void search(char* filename)int sign=0; for(search_i=0;search_i640;search_i+) if(strcmp(root

7、search_i.file_name,filename)=0) /查詢文件中 所在目錄信息和當前目錄信息相同的數(shù)據(jù) sign=1; int k=rootsearch_i.i_num; printf(%st,rootsearch_i.file_name); /文件名 printf( %dt,i_nodek.file_style); /文件的類型 printf( %dtt,i_nodek.file_length); /文件的長度 printf(%sn,rootsearch_i.dir_name); /文件所在的目錄 if (sign=0) printf(%sn,未找到該文件!); 六、心得與體會

8、這次設計中遇到最難的問題就是拷貝功能的實現(xiàn),由于之前沒有接觸過拷貝的原理,所以通過和同伴的討論和試驗,終于突發(fā)奇想的運用改變文件路徑的源代碼和創(chuàng)建文件相結合,終于實現(xiàn)了拷貝功能,能夠將一個文件從一個目錄拷貝到另一目錄(即先移動過去然后再在原位置創(chuàng)建一個原文件),可是卻無法拷貝到root根目錄,為了解決這個問題,又在創(chuàng)建文件的程序里添加了一個判斷是否為根目錄的語句,可是后來又發(fā)現(xiàn)了真?zhèn)€系統(tǒng)存在重命名的問題。設計在逐步深入,功能在逐漸健全,可是問題也就隨之暴露的更多,逐步的解決問題,我想,這才是我們課程設計的意義吧。 主要解決了拷貝問題,剪切問題和無文件查詢問題??墒怯捎赾+編程語言掌握的不是很好,程序編寫的很普通,而且很多不足,例如:查詢的編寫過程中沒有做出模糊查詢,只做到了精確查詢,而且是用了將全部磁盤塊查詢一遍的方法;拷貝中文件可以重名,無法提示用戶文件重名;剪切無法做到從一子目錄剪切到根目錄。這些問題還有待深入學習和探討。 通過幾天來的設計和學習,真的學習到了很多東西。通過這次的操作系統(tǒng)的課程設計,在老師的細心指導和同學的

溫馨提示

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

評論

0/150

提交評論