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