操作系統(tǒng)課程設計報告多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)_第1頁
操作系統(tǒng)課程設計報告多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)_第2頁
操作系統(tǒng)課程設計報告多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)_第3頁
操作系統(tǒng)課程設計報告多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)_第4頁
操作系統(tǒng)課程設計報告多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設 計 報 告設計題目:多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)班 級:組長學號:組長姓名:指導教師:設計時間:2015年7月設計分工組長學號及姓名: 分工:構建系統(tǒng)框架,實現(xiàn)磁盤i節(jié)點調入內存,以及內存i節(jié)點的申請分配與回收,新建文件和目錄,文件的讀寫組員1學號及姓名:分工:實現(xiàn)成組鏈接法分配與回收,實現(xiàn)用戶登陸和注銷,實現(xiàn)格式化初始化函數(shù),參與系統(tǒng)界面的設計組員2學號及姓名:分工:組員3學號及姓名:分工:組員4學號及姓名:分工:摘要文件系統(tǒng)是操作系統(tǒng)用于明確存儲設備(常見的是磁盤,也有基于nand flash的固態(tài)硬盤)或分區(qū)上的文件的方法和數(shù)據(jù)結構;即在存儲設備上組織文件的方法。

2、操作系統(tǒng)中負責管理和存儲文件信息的軟件機構稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。文件系統(tǒng)由三部分組成:文件系統(tǒng)的接口,對對象操縱和管理的軟件集合,對象及屬性。從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統(tǒng)。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等。關鍵詞:操作系統(tǒng),文件系統(tǒng)摘要31概述52課程設計任務與要求62.1設計任務62.2設計要求63算法及數(shù)據(jù)結構73.1算法的總體流程73.2超級塊83.2.1功能83.2.2數(shù)據(jù)結構83.2.3算法93.3磁盤i節(jié)點與內存i節(jié)點93.

3、3.1功能103.3.2數(shù)據(jù)結構103.3.3算法113.4文件夾操作123.4.1功能133.4.2數(shù)據(jù)結構133.4.3算法133.5文件的操作143.5.1功能153.5.2數(shù)據(jù)結構153.5.3算法154程序設計與實現(xiàn)164.1程序流程圖174.2程序說明174.3實驗結果235結論246參考文獻257收獲、體會和建議261概述unix采用樹型目錄結構,每個目錄表稱為一個目錄文件。一個目錄文件是由目錄項組成的。每個目錄項包含16b,一個輔存磁盤塊(512b)包含32個目錄項。在目錄項中,第1、2字節(jié)為相應文件的外存i節(jié)點號,是該文件的內部標識;后14b為文件名,是該文件的外部標識。所以

4、,文件目錄項記錄了文件內、外部標識的對照關系。根據(jù)文件名可以找到輔存i節(jié)點號,由此便得到該文件的所有者、存取權、文件數(shù)據(jù)的地址健在等信息。unix的存儲介質以512b為單位劃分為塊,從0開始直到最大容量并順序加以編號就成了一個文件卷,也叫文件系統(tǒng)。unix中的文件系統(tǒng)磁盤存儲區(qū)分配圖如下:0#1#2#k#k+1#k+2#k+3#n#i節(jié)點區(qū)文件存儲區(qū)引導區(qū)管理區(qū)本次課程設計是要實現(xiàn)一個簡單的模擬unix文件系統(tǒng)。我們在磁盤中申請一個二進制文件模擬unix內存,依次初始化建立位示圖區(qū),i節(jié)點區(qū),數(shù)據(jù)塊區(qū)。并給已打開的文件建立文件打開表。本文件系統(tǒng)采用兩級目錄,其中第一級對應于用戶賬號,第二級對應

5、于用戶帳號下的文件。另外,為了簡便文件系統(tǒng)未考慮文件共享,文件系統(tǒng)安全以及管道文件與設備文件等特殊內容。 首先應確定文件系統(tǒng)的數(shù)據(jù)結構:主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。用戶創(chuàng)建的文件,可以編號存儲于磁盤上。如:file0,file1,file2并以編號作為物理地址,在目錄中進行登記。2課程設計任務與要求2.1設計任務多用戶、多級目錄結構文件系統(tǒng)的設計與實現(xiàn)。2.2設計要求1、在深入理解操作系統(tǒng)基本原理的基礎上,對于選定的題目,以小組為單位,先確定設計方案;2、設計系統(tǒng)的數(shù)據(jù)結構和程序結構,設計每個模塊的處理流程。要求設計合理;3、編程序實

6、現(xiàn)系統(tǒng),要求實現(xiàn)可視化的運行界面,界面應清楚地反映出系統(tǒng)的運行結果;4、確定測試方案,選擇測試用例,對系統(tǒng)進行測試;5、運行系統(tǒng)并要通過驗收,講解運行結果,說明系統(tǒng)的特色和創(chuàng)新之處,并回答指導教師的提問;6、提交課程設計報告。3算法及數(shù)據(jù)結構3.1算法的總體流程3.2超級塊3.2.1功能 超級塊位于塊組的最前面,描述文件系統(tǒng)整體信息的數(shù)據(jù)結構,主要描述文件系統(tǒng)的目錄和文件的靜態(tài)分布情況,以及描述文件系統(tǒng)的各種組成結構的尺寸、數(shù)量等。3.2.2數(shù)據(jù)結構/超級塊#define nicfree 50/成組鏈接法中的每組50塊#define nicinod 50/超級塊中空閑節(jié)點的最大塊typedef

7、 structunsigned short s_isize;/索引節(jié)點塊塊數(shù)unsigned long s_fsize;/數(shù)據(jù)塊塊數(shù)unsigned int s_nfree;/空閑塊塊數(shù)unsigned short s_pfree;/棧深unsigned int s_freenicfree;/空閑塊堆棧unsigned int s_ninode;/空閑索引節(jié)點數(shù)unsigned short s_pinode;/空閑索引節(jié)點指針unsigned int s_inodenicinod;/空閑索引節(jié)點數(shù)組unsigned int s_rinode;/銘記索引節(jié)點char s_fmod;/超級塊修改標

8、志filsys;#endif3.2.3算法3.3磁盤i節(jié)點與內存i節(jié)點3.3.1功能linux中,文件查找不是通過文件名稱來查找的。實際上是通過i節(jié)點來實現(xiàn)文件的查找定位的。我們可以形象的將i節(jié)點看做是一個指針。當文件存儲到磁盤上去的時候,文件肯定會存放到一個磁盤位置上,i節(jié)點其實就是可以這么認為,把i節(jié)點看作是一個指向磁盤上該文件存儲區(qū)的地址。事實上,i節(jié)點不僅包含了文件數(shù)據(jù)存儲區(qū)的地址,還包含了很多信息,比如數(shù)據(jù)大小,等等文件信息。文件名是保存在一個目錄項中。每一個目錄項中都包含了文件名和i節(jié)點。我們可以通過一個圖來看看目錄項,i節(jié)點,文件數(shù)據(jù)四者之間的關系。3.3.2數(shù)據(jù)結構/內存i節(jié)點

9、#define naddr 10/每個i節(jié)點最多指向10塊typedef struct inodestruct inode *i_forw;char i_flag; unsigned int i_ino;/磁盤索引節(jié)點編號unsigned int i_count;/引用計數(shù)unsigned short di_number;/關聯(lián)計數(shù)unsigned short di_mode;/文件模式unsigned short di_uid;/所屬用戶unsigned short di_gid;/所屬用戶組unsigned long di_size;/文件大小unsigned short di_addrn

10、addr;/物理塊號inode;/磁盤索引節(jié)點#define naddr 10/每個i節(jié)點最多指向10塊typedef struct unsigned short di_number;/關聯(lián)文件數(shù)unsigned short di_mode;/存取權限unsigned short di_uid;/所屬用戶unsigned short di_gid;/所屬用戶組unsigned long di_size;/文件大小unsigned short di_addrnaddr;/物理塊號dinode; 開始3.3.3算法n 結束y返回該i節(jié)點的指針查看磁盤i節(jié)點在內存利用iget()函數(shù)將磁盤i節(jié)點調入

11、內存插入到hash鏈表中從當前目錄查找文件名對應的磁盤i節(jié)點編號3.4文件夾操作3.4.1功能新建一個文件夾,文件夾的跳轉,當前目錄下的文件展示。對應的函數(shù)原型為:void _dir()/顯示當前目錄列表; void mkdir(char *dirname)/目錄創(chuàng)建函數(shù); void cd(char *dirname)/跳轉到指定目錄下;3.4.2數(shù)據(jù)結構/目錄結構#define dirnum 128/每個目錄所包含的最大文件數(shù)typedef struct direct directdirnum;/最大存儲128個文件int size;/實際文件的個數(shù)dir;/目錄項結構#define dir

12、siz 14/每個目錄項文件名所占字節(jié)數(shù)typedef struct char d_namedirsiz;/目錄名unsigned short d_ino;/目錄對應的磁盤i節(jié)點編號direct;3.4.3算法 總得來說就是根據(jù)目錄的數(shù)據(jù)結構,再結合i節(jié)點去實現(xiàn)對文件夾的操作。顯示列表函數(shù):因為我們的direct數(shù)據(jù)結構里每次保存的都是當前目錄下的列表,所以調用_dir()函數(shù)就等于把當前direct結構里的文件名顯示出來。新建一個文件夾:創(chuàng)建一個目錄時,先申請一個內存i節(jié)點,再分配相應的磁盤i節(jié)點,在當前目錄表中進行登記,初始化自己的一些信息,記錄該目錄的上級目錄,跳轉的時候要用到。文件夾跳

13、轉:因為在新建的時候已經把當前目錄的上級目錄給記錄下來,所以只需找到上級目錄的磁盤i節(jié)點信息,然后保存當前目錄,調出上級目錄的磁盤i節(jié)點,再重新顯示上級目錄的列表信息。3.5文件的操作3.5.1功能新建一個文件,我們可以對其進行讀、寫、刪除操作。關閉文件之后如果還想對其進行讀、寫、刪除操作,那么我們就要重新打開文件,即將其i節(jié)點信息先調入內存。具體函數(shù)原型如下:int create(int user_id,char *filename,short mode)/返回值代表用戶打開文件的編號;int open(int user_id,char *filename,short openmode)/從

14、用戶打開文件表找到系統(tǒng)打開文件表再找到文件的i節(jié)點;void close(int user_id,int fd1)/修改一下系統(tǒng)打開文件表和用戶打開文件表;bool _delete(char *filename)/更新目錄表,釋放i節(jié)點;int read(int fd1,char *&buf,int size)/讀文件操作;int write(int fd1,char *buf,int size)/文件內存i節(jié)點指針,數(shù)據(jù),數(shù)據(jù)大?。?.5.2數(shù)據(jù)結構/系統(tǒng)打開表#includeinode.htypedef structunsigned short f_flag;/文件操作標志unsigned

15、 int f_count;/引用計數(shù)inode *f_inode;/指向內存索引節(jié)點unsigned long f_off;/讀寫指針file;#endif3.5.3算法總得來說就是根據(jù)系統(tǒng)打開文件表去找到內存i節(jié)點指針,只有找到了內存i節(jié)點指針才能對文件進行操作。創(chuàng)建一個新的文件:先查看要創(chuàng)建的這個名字是否存在,若存在就不允許在繼續(xù)創(chuàng)建了,因為不允許重名是文件系統(tǒng)的基本要求。若不存在就說明允許創(chuàng)建此文件。先申請一個內存i節(jié)點,在當前目錄表中進行登記,在系統(tǒng)打開文件表中也進行登記一下,返回該文件在系統(tǒng)打開文件表的位置,以便將接下來進行讀寫操作。打開一個文件:當我們把一個文件關閉之后又想繼續(xù)對此

16、文件進行操作就必須先把文件的i節(jié)點信息調入內存。關閉一個文件:當我們對一個文件讀寫完畢之后,不想再對此文件操作,出于保護的目的,防止別的用戶找到我們的內存i節(jié)點信息,就需要我們把該文件的i節(jié)點信息從內存里注銷掉,即關閉一個文件。刪除一個文件:更新目錄表,釋放i節(jié)點。釋放i節(jié)點信息時還要考慮有沒有被別的用戶關聯(lián)。讀一個文件:從系統(tǒng)打開文件表中獲取內存i節(jié)點信息,找到其對應的文件物理塊信息,將其讀入到內存并顯示出來。寫一個文件:從系統(tǒng)打開文件表中找到內存i節(jié)點信息,獲取相應的物理磁盤塊的分配情況以及文件的訪問模式(涉及到權限問題),根據(jù)將要寫入的信息的大小為其分配相應的磁盤塊,寫入之后保存。4程序

17、設計與實現(xiàn)4.1程序流程圖 結束4.2程序說明運行程序,首先跳出界面為一個歡迎界面,如圖4-1所示: 圖4-1運行程序歡迎界面點擊確定進入用戶登陸界面,如圖4-2所示:(第一次必須格式化登陸)圖4-2用戶登陸界面格式化登陸后的界面如圖4-3所示: 圖4-3用戶操作界面新建文件夾界面,如圖4-3-1所示: 圖4-3-1新建文件夾界面 新建文件界面,如圖4-3-2所示:(單選按鈕一定要選到文件,然后再點擊新建。本來想實現(xiàn)文件夾一個圖片,文件一個圖片,能力有限沒有實現(xiàn)) 圖4-3-2用戶新建文件界面 單擊想要刪除的文件夾,單擊之后點擊刪除文件夾按鈕,會彈出一個對話框,詢問是否刪除。點是就會刪除,點取

18、消就會取消。界面如圖4-4所示:圖4-4刪除文件夾操作界面新建一個文件之后,我們可能要對其進行讀、寫、刪除操作,單擊文件會彈出功能對話框讓你進行選擇。例如我們新建了一個名字為su的文件,當我們單擊這個文件的時候就會彈出一個界面,界面如圖4-5所示: 圖4-5用戶對文件操作功能選擇界面如果我們選擇了寫功能,就在目錄右邊的編輯框里輸入我們想要寫入的信息,寫完之后點擊輸入完畢,即可保存。界面效果如圖4-5-1所示: 圖4-5-1寫操作界面提示如果我們選擇了讀功能,他會讀出文件內容并顯示在目錄右邊的編輯框里,這個時候我們可以在其后面追加信息,追加完畢之后點擊輸入完畢按鈕,即可保存我們追加的信息,這個算

19、是隱藏的功能。別如我們在寫文件時對su這個文件寫了“我是東北大學的一名學生”,在讀的時候就應該讀出剛才寫的信息。界面如圖4-5-2所示: 圖4-5-2用戶讀文件界面如果我們選擇了刪除文件的功能,那我們就會刪除該文件,不在記錄中出現(xiàn)。比如我們要刪除su這個文件,點完確定之后再次顯示該目錄列表時就不會顯示出su這個文件。界面如圖4-5-3所示: 圖4-5-3用戶刪除一個文件操作停機按鈕,是我們最后退出程序的時候,要對我們的信息進行一下保存。保存到相應的文件中,以便下次非格式化登陸時能讀取出來信息。這個就不用界面來演示了。隱藏的功能還有文件夾的跳轉,這個我們在實現(xiàn)的時候就是想做到跟windows一樣

20、雙擊文件夾進入文件夾里面顯示里面的內容,然后我們根據(jù)mfc利用雙擊函數(shù)實現(xiàn)了類似windows的文件跳轉功能,這個地方有必要說明一下。 另外,多用戶登陸和切換用戶這個地方也有實現(xiàn),但是功能比較低級就不再演示。4.3實驗結果 我們的系統(tǒng)基本實現(xiàn)了老師的要求,多用戶下的多級目錄,用戶登陸和退出,系統(tǒng)的初始化,文件的創(chuàng)建,文件的打開,文件的讀,文件的寫,文件的關閉,刪除文件,創(chuàng)建目錄,改變目錄,列出文件目錄,格式化登陸,以及非格式化登陸。其實實驗結果在程序說明的時候已經舉出了實例,我們這里不再重復說明,只說在說明里沒有提到的非格式化登陸一個用戶。指定用戶名3966,用戶密碼20123966。假定在m

21、ain目錄里創(chuàng)建一個文件夾3966,跳轉到3966文件夾里,在3966文件夾里創(chuàng)建一個名字叫3966的文件(邏輯上是可以的,實際上我們也實現(xiàn)了),對這個文件進行寫操作,寫入“我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的

22、學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。我們是東北大學的學生,來自計算機1206班,我們班的學生操作系統(tǒng)課設都做的可好了。(重復7遍,內容盡量多一點)”。停機之后,我們非格式化登陸,依然可以找到這些信息。這一點老師在驗收的時候已經看到了,所以就不再繼續(xù)展示了。5結論操作系統(tǒng)課程設計是本課程重要的實踐教學環(huán)節(jié)。課程設計的目的,一方面使學生更透徹地理解操作系統(tǒng)的基本概念和原理,使之由抽象到具體;另一方面,通過課程設計加強學生的實驗手段與實踐技能,培養(yǎng)學生獨立分析問題、解決問題、應用知識的能力和創(chuàng)新精神。與本課程的實驗教學相比,課程設計獨立設課,具有更多的學時,給學生更多自

23、行設計、自主實驗的機會,充分放手讓學生真正培養(yǎng)學生的實踐動手能力,全面提高學生的綜合素質?,F(xiàn)代操作系統(tǒng)都有文件管理功能,通過本次操作系統(tǒng)的課程設計我對于c+語言中的磁盤文件輸入和輸出操作的運用有了很大的進步,基本搞懂了操作系統(tǒng)中文件的管理方法和文件的讀取方式。同時也對于操作系統(tǒng)中的文件存取方式,文件的邏輯結構和文件在系統(tǒng)中的存儲方法有了比較清晰的理解。在本次實驗中開始的時候遇到了很多困難,比如對人文件的存儲方式,怎樣管理多用戶下的文件都不了解,但是通過看書、網上查資料有了了解。通過開始的簡單的實現(xiàn)一兩個模塊來慢慢的前進,最終基本實現(xiàn)了系統(tǒng)的設計,雖然還是有一些缺陷但是已經比較接近指導書上的要求

24、。6參考文獻1. 徐虹等編著.操作系統(tǒng)實驗指導基于linux內核.北京: 清華大學出版社.2004.2. 陳向群等編著. windows內核實驗教程. 北京: 機械工業(yè)出版社.2002.3. 周蘇等編著. 操作系統(tǒng)原理實驗. 北京: 科學出版社.2003.4. 張堯學編著. 計算機操作系統(tǒng)教程習題解答與實驗指導. 北京: 清華大學出版社.2000.5.msdn幫助文檔7收獲、體會和建議 操作系統(tǒng)是計算機科學與技術領域中最為活躍的學科之一,因而操作系統(tǒng)課程也自然是計算機專業(yè)的一門核心專業(yè)基礎課。操作系統(tǒng)課程內容綜合了基礎理論教學、課程實踐教學、最新技術追蹤等多項內容。但由于操作系統(tǒng)的高度復雜性,

25、使得它成為專業(yè)課中最難學的課程之一。通過對操作系統(tǒng)原理的學習,要求理解操作系統(tǒng)在計算機系統(tǒng)中的作用、地位和特點,熟練掌握和運用操作系統(tǒng)在進行計算機軟硬件資源管理和調度時常用的概念、方法、策略、算法、手段等。 操作系統(tǒng)課程概念多、內容廣、難度大,抽象強。因此,操作系統(tǒng)課程的學習面臨這樣一些難題:如何形象化地學習和理解抽象的操作系統(tǒng)概念及原理,如何緊跟飛速發(fā)展的操作系統(tǒng)技術。為了解決這些問題,我們認為不但要學好操作系統(tǒng)原理,還要加強操作系統(tǒng)實驗。操作系統(tǒng)實驗可幫助學生理論聯(lián)系實際,鞏固和復習所學過的操作系統(tǒng)概念與原理;也增強學生的實踐能力,培養(yǎng)學生的動手能力,提高學生綜合分析問題和解決問題的能力。 linux是目前常用的流行操作系統(tǒng)之一,其最大的特點是開放源代碼。使用linux操作系統(tǒng)和分析nux內核代碼是學習操作系統(tǒng)課程的很好選擇。通過對linux操作系統(tǒng)內核源代碼的分析和實踐,可以幫助學生對操作系統(tǒng)的用戶界面和編程界面、體系結構、各組成部分的實現(xiàn)技術等,有更深入的整體認識;幫助學生進一步掌握操作系統(tǒng)原理。linux內核的學習可以分兩個階段:在linux內核分析階段,通過閱讀linux內核源代碼,改變部分內核源程序,改變系統(tǒng)行為,從而學習操作系統(tǒng)各個組成部分的實現(xiàn)機理,鞏固操作系統(tǒng)原理知識。在linux內核改進階段,通過深人、綜合分析linux操作系統(tǒng)的實現(xiàn)機理,通過一定

溫馨提示

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

評論

0/150

提交評論