




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、設計題目:模擬UNIX(Linux)文件系統學 院:信息科學與工程學院專 業:計算機科學與技術班 級:計信1302學 號:20131222171學生姓名: 張鐘月指導教師:蔡衛東2015 年 7 月 31 日目 錄1實驗內容31.1基本要求32數據結構設計42.1文件結構體的定義42.2文件夾結構體的定義42.3用戶名的數組定義42.4密碼的數組定義52.5操作的數組定義53算法設計53.1功能模塊圖53.1.1程序執行基本流程53.1.2用戶選擇函數63.2算法思路63.2.1實現方法63.2.2設計思想74測試數據及程序運行情況84.1歡迎界面84.2用戶選擇界面84.3 用戶登錄界面94
2、.4幫助界面94.5創建目錄94.6創建并顯示文件104.7創建另一個目錄并創建文件104.8寫文件114.9讀文件114.10顯示當前目錄和文件124.11在當前目錄下創建新目錄并創建文件進行讀寫操作124.12錯誤操作124.13顯示子目錄下的文件134.14退出當前操作134.15退出系統頁面145實驗過程中出現的問題及解決方法145.1關于文件的刪除問題145.2關于多用戶的權限問題145.3關于目錄創建的問題155.4關于目錄的修改操作問題156自我評析與總結15參考文獻161 實驗內容1.1 基本要求在任一OS下,建立一個大文件,把它假象成一張盤,在其中實現一個簡單的模擬UNIX文
3、件系統。(1) 在現有機器硬盤上開辟20M的硬盤空間,作為設定的硬盤空間。(2) 編寫一管理程序對此空間進行管理,以模擬UNIX(或Linux)文件系統,具體要求如下: 要求盤塊大小1k 正規文件 i結點文件類型 目錄文件 (共1byte) 塊設備 管道文件 物理地址(索引表) 共有13個表項,每表項2byte 文件長度 4byte 聯結計數 1byte 0號塊 超級塊 棧長度50 空閑盤塊的管理:成組鏈接(UNIX) 或位示圖法(Linux) 每建一個目錄,分配4個物理塊 文件名 14byte 目錄項信息 i結點號 2byte 結構:0#:超級塊 1# 20#號為i結點區 20# 30#號為
4、根目錄區功能:初始化 建立文件(需給出文件名,文件長度) 建立子目錄 打開文件(顯示文件所占的盤塊) 刪除文件 刪除目錄 顯示目錄(即顯示目錄下的信息,包括文件、子目錄等) 顯示整個系統信息 2數據結構設計2.1文件結構體的定義struct Filesstring filename; /文件名int f_Owner; /所有者(07) string r_time; /文件最后修改時間int f_size; /文件大小string cont; /文件內容 Files *next; / 指向下一個文件的指針;2.2文件夾結構體的定義struct Folderint Owner; / 所有者(07)
5、string foldername; / 文件夾名字string m_time; / 文件夾創建時間Folder *folders; / 存放文件夾指針Files *file; / 存放文件指針Folder *fparent; / 指向路徑父節點的指針Folder *next; / 指向同一層下一文件夾的指針;/多用戶:usr1,usr2,usr3,usr8 (1-8個用戶)、多級目錄:可有多級子目錄、具有login (用戶登錄)、/系統初始化(建文件卷、提供登錄模塊)、文件的創建: create、文件的打開:open、文件的讀:read、文件的寫:write、/文件關閉:close、刪除文件
6、:delete 、創建目錄(建立子目錄):mkdir、改變當前目錄:cd、列出文件目錄:dir、退出:logout。2.3用戶名的數組定義string UserName8 = "user0", "user1", "user2", "user3", "user4", "user5","user6", "user7"2.4密碼的數組定義string PassWord8 = "12345","12345"
7、;,"12345","12345","12345","12345","12345","12345"2.5操作的數組定義string const Methods11 = "create", "open", "read", "write", "close", "fdelete", "mkdir", "cd", "
8、dir","help", "logout"3算法設計3.1功能模塊圖3.1.1程序執行基本流程3.1.2用戶選擇函數3.2算法思路3.2.1實現方法列出系統中的所有函數并說明函數的功能char* Time()獲取當前時間void Mkdir(Folder* &Target, string &Name, int Unum)創建目錄void Cd(Folder* list, Folder* &Target, string &Name, string &path)改變當前目錄void Dir(Folder* &
9、amp;Target)列出文件目錄void Create(Folder* &Target, string &Name, int Unum)文件的創建Files* Open(Folder* &Target, string &Name)打開文件void Read(Folder* &Target, string &Name)文件的讀void Write(Folder* &Target, string &Name, int Unum)文件的寫void Close(Folder* &Target, string &Name)
10、文件關閉void Delete(Folder* &Target, string &Name, int Unum)刪除文件void logout()退出void Help()顯示菜單void Chose(Folder* &list, Folder* &Target, int Unum, string path) 用戶操作選擇函數void login(Folder* &list, Folder* &Target, int Unum, string path)登陸void Begin(Folder* &list, Folder* &Ta
11、rget, string &path) 程序初始化函數void Run(Folder* &list, Folder* &Target, int Unum, string path) 用戶登陸選擇void Wellcome()系統歡迎界面函數void Byebye()程序退出界面函數void main()主函數 3.2.2設計思想(1) 定義全局變量Folder *list = NULLFolder *Target = NULLstring pathint Unum = 0(2) 主函數模塊void main()Folder *list = NULL;Folder *Ta
12、rget = NULL;string path;int Unum = 0;system("color b");Wellcome();Begin(list, Target, path);Run(list, Target, Unum, path);Byebye();cout<<"輸入 enter 鍵退出程序!"<<endl;getchar();getchar();4測試數據及程序運行情況4.1歡迎界面4.2用戶選擇界面4.3 用戶登錄界面4.4幫助界面4.5創建目錄4.6創建并顯示文件4.7創建另一個目錄并創建文件4.8寫文件4.9讀
13、文件4.10顯示當前目錄和文件4.11在當前目錄下創建新目錄并創建文件進行讀寫操作4.12錯誤操作4.13顯示子目錄下的文件4.14退出當前操作4.15退出系統頁面5實驗過程中出現的問題及解決方法5.1關于文件的刪除問題刪除文件的設計剛開始因為算法設計的思想不夠完善所以很久不能實現這個功能。后來通過查閱資料然后完成了這個功能。首先刪除文件需要有權限限制,只有創建這個文件的用戶才能刪除目標文件。定義pfd指針指向要被刪除的目標文件pre指針指向目標文件的前一個文件,若是刪除文件鏈表的第一個文件的話,那就直接將指向表頭的指針指向第二個文件。如果是刪除最后一個文件的話,那就將pre指針直接指向NUL
14、L。否則,將pre的next指向pfd的next,然后釋放pfd指向的文件。5.2關于多用戶的權限問題因為UNIX系統是多用戶系統,所以相對于Windows系統來說,文件需要增加一個關于用戶的屬性,這樣在對文件進行寫操作和刪除操作時需要對文件的用戶進行查詢,確定當前用戶是否有權限進行寫操作和刪除操作。但是對于各個用戶來說,可以查看在磁盤上的各個文件,只是不能修改和刪除非自己創建的文件或是文件夾。5.3關于目錄創建的問題通過查詢資料自己便有了一個想法,所謂的目錄即路徑,即在當前目錄下創建一個新的文件夾。那創建一個新的文件夾首先要檢查這個文件夾的名字是否重名,如果重名了,則創建失敗,否則則在當前目
15、錄中的文件夾的鏈表的末尾插入一個新的文件夾,如果當前目錄下沒有其他文件夾,則把該目錄下的文件夾鏈表的頭指針指向新建的文件夾。5.4關于目錄的修改操作問題通過查閱資料我有了一個想法,修改目錄,即修改當前的路徑。如果修改為C,D,E盤的話,則直接將全局變量path修改為C:,D: E:。如果是在當前路徑下擴充下一級文件,如果要擴充的目錄在當前路徑下則在當前路徑上加上要擴充的目錄,否則找不到路徑。以鏈表的形式模擬鏈接C盤D盤E盤三個磁盤。以鏈表的形式模擬鏈接同一目錄下的各個文件夾。以鏈表的形式模擬鏈接同一目錄下的各個文件。這三個鏈表是相互獨立,互不影響的。6自我評析與總結本次的操作系統課程設計是對自
16、己的一個提高,自己分配的題目是模擬UNIX文件系統,剛開始自己對這個茫然無知,但是自己查詢資料借書自己看,慢慢的對UNIX系統有了初步的了解,同時對自己的課設任務也有了一定的認識,慢慢的覺得自己也可以做這個了。本學期的操作系統讓我對計算機的軟件基礎有了初步的認識,模擬UNIX文件系統也是基于操作系統的所做的一個方面的事情,要求是對于多用戶進行的文件管理,對于文件要進行一般的操作比如創建,打開,讀寫操作,以及目錄的建立和改變當前目錄,通過對UNIX系統的了解,我選擇了C+來設計改程序,在編寫源代碼的過程中,自己過對于目錄的創建,還有對當前目錄的修改方面還是很是不理解,但是經過自己在網上查詢資料,
17、再看別人寫的源程序關于這兩個方面的描述,自己在一段時間內將源程序寫出,并經過修改終于實現了所要求的功能,而后自己參考別人的源代碼,將自己的程序設計的更加合理化,加上時間方面的處理,使之在文件創建的時候記錄創建時間,并在最后查看的時候顯示時間,并且對于開始界面和結束界面也做了一定的處理。經過本次的課程設計,自己對于操作系統中的文件管理方面的認識更加的深刻,尤其是在對文件的處理方面自己做的更是得心應手了,而且自己查了很多的資料,完善了自己在這方面的不足,增強了自主學習的能力,我相信,下次自己能做的更好自評成績:90參考文獻1 B. Liu. Web Data Mining: Exploring hyperlinks, contents and usage dataM. Springer, 2006.2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園與生活關聯的數學題目及答案
- 文化與娛樂:2025年KOL內容營銷策略與效果評估報告
- 2025南航招聘面試題及答案
- 2025婦幼護士筆試題目及答案
- 虛擬現實教育產品在物理力學實驗課中的應用效果與教學策略分析
- 露營經濟背景下的戶外運動裝備行業市場細分研究報告
- 深化小學教師反思與教育實踐的研究試題及答案
- 建筑施工安全風險識別與管理試題及答案
- 新能源商用車輛在石材加工廠運輸中的應用場景分析報告
- 廣東初三一模試題及答案
- 2024年上海市中考數學真題試卷及答案解析
- 統編版2023-2024學年語文三年級下冊第五單元導讀課教學設計
- 2024年陜西延長石油(集團)有限責任公司校園招聘考試試題參考答案
- 地籍測量成果報告
- 2024年蘇州資產管理有限公司招聘筆試沖刺題(帶答案解析)
- 客車防雨密封性要求及試驗方法
- 農貿市場經營管理方案
- 新生兒胸腔穿刺術
- 液氣胸病人護理-查房
- 錯頜畸形預防課件
- 培訓行業用戶思維分析
評論
0/150
提交評論