作業系統實驗5 簡易檔案管理系統

URNOTJANET發表於2017-12-13

說明:由於我這次作業完成的很敷衍,所以我在這裡暫時不貼出我的程式碼,關鍵部分其實是找到getblk和putblk對應的系統呼叫函式即可

功能要求 ①至少支援普通檔案和目錄檔案兩種型別 ②建立新檔案,刪除已有檔案 ③根據檔名(絕對路徑)檢索到相應的檔案(/d0/d1/filename) ④支援的操作:open、close、read、write ⑤至少支援三層目錄(/d0/d1/filename) ⑥能讀取外部提供的檔案並存入到檔案系統中(即從模擬的磁碟空間之外拷貝檔案) ⑦提供命令列介面,能夠顯示目錄內容和檔案內容

實現要求 ①使用一個空檔案模擬一塊磁碟,大小為 1MB,可預先建立好。磁碟大致結構如下: Boot block Super block Data block bitmap Inode bitmap Inode table Data block …… Super block 包含有關檔案系統的屬性和資訊,基本塊大小、/目錄 inode 的位置等 Data block bitmap 標記塊的使用情況,每一 bit 對應相應位置的塊(1=使用,0=空 閒) Inode bitmap 標記 inode 的使用情況,每一 bit 對應一個 inode(1=使用,0=空閒) Inode table 存放 inode,多塊(inode table 大小固定,即 inode 的最大數量固定) Data block 存放檔案內容,多塊 ②以塊為存取的基本單位,大小為 1KB ③每個檔案最多佔有 8 塊,即檔案的最大大小為 8KB ④檔名最長 8B ⑤簡易檔案系統支援最多 80 個檔案(含目錄檔案) ⑥索引節點(inode):  每個索引節點大小 64B(1 個塊可以存放 16 個 inode)  系統需要維護 inode bitmap,記錄每個索引節點分配與否
 每個索引節點至少包含:檔案識別符號、檔案涉及的塊(地址或塊號)、檔案 建立時間等  採用直接索引方式獲取塊位置  根節點已知(即/目錄對應的索引節點位置已知) ⑦需要實現兩個基本函式:
GETBLK(buf, blk_no); PUTBLK(buf, blk_no);  兩個函式用於讀取和寫入指定塊。buf 為記憶體緩衝區,大小與基本塊大小相同,用於存放讀取或待寫入的塊內容;blk_no 為物理塊號  檔案系統的其他功能函式實現在這兩個基本函式的上層,即其他函式不直接訪問磁碟

相關文章