版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)實習(xí),南京工業(yè)大學(xué)信息學(xué)院計算機系,2,實驗題目,文件管理系統(tǒng)的設(shè)計,實驗?zāi)康?了解有關(guān)文件管理的知識;理解FAT16的存儲格式;掌握文件管理系統(tǒng)的開發(fā)方法。,3,基本要求,目錄操作命令:cd [] 改變當(dāng)前目錄 create [] del dir[ [ ]] md rd ,設(shè)計并實現(xiàn)以下文件和目錄系統(tǒng)操作命令:,4,文件操作命令:open write [][insert] read [
2、 []] close type copy ren attrib [ ],5,程序初始化時構(gòu)造如圖1所示的目錄結(jié)構(gòu)。,7,目錄項(FCB)結(jié)構(gòu),struct FCB//每個目錄項16個字節(jié){char FileName[11];//文件名最多10個字符且以'\0'結(jié)尾char Fattrib;//文件屬性short int Addr;//文件首塊號short int F
3、size;//文件長度};,詳細說明參見《指導(dǎo)書》,8,1表示目錄,1表示系統(tǒng),1表示隱藏,1表示只讀,,,,,目錄項中的屬性字節(jié):,9,根目錄,本系統(tǒng)的根目錄存儲在1~30號盤塊中,即存儲在Disk[1]~Disk[30]的盤塊中。因每個盤塊64B,每個目錄項16B,故每個盤塊可存儲4個目錄項,因此本系統(tǒng)根目錄中的文件目錄項及子目錄項最多共計120個。從31號盤塊開始為文件區(qū),用于存儲文件及子目錄。子目錄中的文件目錄項個數(shù)任意
4、(即不受“最多120個”的限制),只要磁盤文件區(qū)有空余空間。,10,用戶已打開文件表(UOF),設(shè)置一張“用戶已打開文件表”(UOF),用于記錄用戶當(dāng)前正在使用文件的情況。,struct UOF { //定義用戶打開文件表的結(jié)構(gòu) char fname[PATH_LEN]; //文件全路徑名 char attr;//文件屬性,1=只可讀;0=可讀寫 short int faddr;//文件的首塊號 sho
5、rt int fsize;//文件大小(字節(jié)數(shù)) FCB *fp;//指向該文件的目錄項指針 short int state;//狀態(tài):0=空表項;1=新建;2=打開 short int readp;//讀指針,0=空文件 short int writep;//寫指針};,本程序中,用戶打開文件表用數(shù)組UOF uof[32]表示,即最多允許同時打開32個文件。,11,當(dāng)前目錄curpath數(shù)據(jù)結(jié)構(gòu),
6、struct CurPath { short int fblock;//當(dāng)前目錄的首塊號 char cpath[PATH_LEN];//當(dāng)前目錄路徑名};,當(dāng)前目錄用全局變量CurPath curpath存儲。根目錄的路徑字符串cpath是“/”,首塊號為1。,12,刪除文件恢復(fù)表udtab數(shù)據(jù)結(jié)構(gòu),struct UnDel //恢復(fù)被刪除文件信息表的數(shù)據(jù)結(jié)構(gòu){ char gpath[PATH_LE
7、N]; //被刪除文件的全路徑名(不含文件名) char ufname[FILENAME_LEN]; //被刪除文件名 short ufaddr;//被刪除文件的首塊號 short fb;//存儲被刪除文件塊號的鏈表頭指針};,本系統(tǒng)的被刪除文件恢復(fù)表用全局數(shù)組udtab存儲,定義為:UnDel udtab[40]; 退出系統(tǒng)時,該數(shù)組以文件名“UdTab2008.dat”存盤,以便下次啟動時調(diào)入使用。,13,
8、fb所指的盤塊中記錄了對應(yīng)的被刪除文件的所有盤塊號(包括文件首塊號)。由于只用一個盤塊存儲被刪除文件的塊號,因此只適用于盤塊數(shù)不超過31的情況(以-1作為結(jié)束標(biāo)記)。功能完整程序"OS實驗.exe"中已作了如下改進:,udtab表存于Disk[][]的一片連續(xù)盤塊空間;修改了struct UnDel,使之包含F(xiàn)CB的全部信息,這樣即使原先的目錄項位置已被占用,仍可能恢復(fù)該文件;文件的塊號允許用多個盤塊存儲,即被
9、刪除文件長度不受最多31個盤塊的限制。盤塊大小改為256B, UnDel表項128B,每個盤塊存儲2個表項, UnDel表占20個連續(xù)盤塊。,14,全局變量ffbp和Udelp,short Udelp; 它是udtab表的第一個空表項的下標(biāo),系統(tǒng)初始化時為0。short ffbp; 它是分配盤塊時FAT表的起始指針(下標(biāo)),這樣使得分配盤塊類似于分區(qū)存儲管理的“循環(huán)首次適應(yīng)”分配算法,這有利于被刪除文件的恢復(fù)。退出系統(tǒng)時,
10、Udelp和ffbp保存到0號盤塊Disk[0]中?!肮δ芡暾绦颉敝校瑄dtab表的首塊號以及回收站recycled的首塊號也存儲在0號盤塊中。,15,定義的若干符號常量,#define S 32//假設(shè)最多同時打開32個文件 #define K 5000//假設(shè)磁盤共有5000個盤塊#define SIZE 64//假設(shè)磁盤的大小是64字節(jié)#define CK 8//命令分解后的段數(shù)#define INPUT_L
11、EN 128//輸入緩沖區(qū)長度#define COMMAND_LEN 11 //命令字符串長度#define FILENAME_LEN 11 //文件名長度#define PATH_LEN INPUT_LEN-COMMAND_LEN#define DM 40//恢復(fù)被刪除文件表的表項數(shù),16,命令行緩沖區(qū)char cmd[INPUT_LEN]; 用于存儲輸入的命令。全局數(shù)組char comd[CK][PATH_LEN];
12、用于存儲分解命令后各個參數(shù)。其中CK=8,因此本系統(tǒng)的命令最多允許有8段。執(zhí)行語句k=ParseCommand(cmd);分解命令后comd[0]中為命令字符串;comd[1]中為命令的第一個參數(shù);comd[2]中為命令的第二個參數(shù);……comd[7]中為命令的第七個參數(shù);k=參數(shù)個數(shù)。例如,輸入的命令為copy test box,則分解該命令后comd[0]="copy",comd[1]=&quo
13、t;test",comd[2]="box"k=2,17,主程序的簡單流程如下:,等待輸入命令cmd,顯示提示符,調(diào)用ParseCommand(cmd)分解命令,調(diào)用ExecComd(k)執(zhí)行命令,,,,,,,,,ParseCommand(cmd)中以空格或"/"作為分隔符來分解命令; ExecComd(k)中用comd[0]匹配命令表,然后執(zhí)行匹配的命令或報錯。,18,ExecComd
14、(k)函數(shù)的程序清單示意如下:,19,本系統(tǒng)命令不區(qū)分大小寫,但文件名和子目錄名區(qū)分大小寫。同學(xué)們很容易修改程序,使后者也不區(qū)分大小寫。同學(xué)們在自己編寫程序前,除了搞清程序的總體結(jié)構(gòu)、讀懂有關(guān)命令函數(shù)外,還應(yīng)仔細讀懂一些重要的函數(shù),例如FindPath()、FindFCB()等與目錄查找有關(guān)的函數(shù)。例如執(zhí)行命令:,copy /usr/user/abc /bin/xyz,此命令的功能是將根目錄下usr子目錄中user子目錄中的文件復(fù)制
15、到根目錄下bin子目錄中,新文件名為xyz。命令執(zhí)行過程中要調(diào)用目錄查找函數(shù)。,20,實驗任務(wù),《指導(dǎo)書》的4.1~4.17實驗任務(wù)中,每個學(xué)生可在4.1~4.8中任選6項任務(wù)(浦計學(xué)生可任選4項)。4.9~4.17為“選做內(nèi)容”,能力較強的學(xué)生可在完成上述必做題目基礎(chǔ)上,選擇幾項“選做”任務(wù)并努力完成之。4.1~4.17中的各項功能,在“OS實驗.exe”程序都已實現(xiàn),同學(xué)們可運行該程序,觀察各項功能的執(zhí)行情況并模仿之。,21,學(xué)生
16、應(yīng)提交的實驗材料,每個學(xué)生至少應(yīng)提交如下三種材料:,實驗報告 源程序清單 程序測試、運行的結(jié)果,上述材料以電子文檔形式發(fā)送到下列郵箱中:qjiang_njut2004@163.com發(fā)送時請將多個電子文檔打包壓縮成一個文件。壓縮文件、實驗報告、源程序、程序測試運行結(jié)果(文本文件)的文件名統(tǒng)一使用學(xué)號命名。如:計080140.rar、計080140實驗報告.doc、計080140.cpp、計080140測試結(jié)果.txt
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)實驗
- android 操作系統(tǒng)的介紹
- 操作系統(tǒng)linux主存管理操作系統(tǒng)實驗 5
- 操作系統(tǒng)實驗大綱
- 操作系統(tǒng)實驗三
- 操作系統(tǒng)上機實驗
- 操作系統(tǒng)實驗2
- 操作系統(tǒng)實驗一
- 2009-2010os操作系統(tǒng)b
- 操作系統(tǒng)實驗四存儲管理
- 《操作系統(tǒng)》實驗6內(nèi)容要求
- 操作系統(tǒng)課程實驗報告
- 操作系統(tǒng)實驗指導(dǎo)書
- 操作系統(tǒng)實驗報告 (5)
- 操作系統(tǒng)實驗報告模板
- 北大 nachos 操作系統(tǒng) 實驗 答案
- 操作系統(tǒng)用戶接口實驗
- 操作系統(tǒng)課程設(shè)計-- 操作系統(tǒng)
- geekos操作系統(tǒng)全部實驗實現(xiàn)報告
- 淺談操作系統(tǒng)(操作系統(tǒng)論文)
評論
0/150
提交評論