一、課程設計基礎任務描述
為 linux 設計乙個簡單的二級檔案系統。本實驗用某個大檔案,如 c:\mydisk.img , 儲存整個檔案卷中的所有資訊。乙個檔案卷實際上就是一張邏輯磁塊盤,磁碟中儲存的資訊以塊為單位。每塊 512 位元組。 複習並深入領會 unix v6 檔案管理系統的核心設計思想。 要求做到以下幾點:
可以實現下列基礎 api void ls();
列目錄int fopen(char *name, int mode);
void fclose(int fd); int fread(int fd, char *buffer, int length);
int fwrite(int fd, char *buffer, int length);
int flseek(int fd, int position);
int fcreat(char *name, int mode);
int fdelete(char *name)
同時做到建立目錄,進入目錄等簡單的輔助功能,同樣對應三個 api:
void mkdir(char* dirname);
void cd(char* dirname);
void backdir()
二、設計思想說明
2.1 任務分析
乙個檔案系統從功能上劃分程式為四個部分:
第一部分是有關高速緩衝區的管理程式,主要實現了對硬碟等塊裝置進行資料高速訪問的函式
第二部分**描述了檔案系統的底層通用函式,說明了檔案索引節點的管理、磁碟資料塊的分配和釋放以及檔名與 i 節點的轉換演算法
第三部分程式是有關對檔案中資料進行讀寫操作,包括對字元裝置、管道、塊讀寫檔案中資料的訪問
第四部分的程式與檔案的系統呼叫介面的實現有關,主要涉及檔案開啟、關閉、建立以及有關檔案目錄操作等的系統呼叫
二級檔案系統不專門設計驅動程式,要模擬檔案系統的設計、實現和功能,就不能把它 直接作為作業系統實際的檔案系統進行掛接。鑑於此,我在實際的硬碟上建立乙個檔案,把它作為我們的檔案系統的磁碟進行各種對磁碟的模擬操作,這樣做的好處是可以對它進行連 續操作,只要在退出檔案系統時,及時儲存它的狀態。
為了達到這樣的效果,能方便該「磁碟檔案」的操作,我們在實際的程式中呼叫 mmap 函式,將「磁碟檔案」對映到記憶體中,將對映到的大記憶體空間當作整個二級檔案系統的磁碟,直接對它進行操作。在退出或手動重新整理磁碟內容時,只需呼叫 msync 函式將該記憶體空間的值 重新寫入「磁碟檔案」中,這樣就儲存了本次執行的一系列操作,在下一次再進入二級檔案 系統時能夠繼續操作。
基於redis的二級快取
以下內容是在github上專案hibernate redis 的基礎上做的優化,優化的版本號為1.6.1。關於二級快取的配置方法和使用方法可以參考github上的專案。在hibernate二級快取需要實現的主要介面有 regionfactory region regionaccessstrategy...
基於C 實現的構建二級檔案模擬系統
1 需求分析 題目 構建二級檔案模擬系統 題目說明 使用乙個普通的大檔案 如 c mydisk.img 稱之為一級檔案 來模擬 unix v6 的乙個檔案卷 乙個檔案卷實際上就是一張邏輯磁碟,磁碟中儲存的資訊以塊為單位。每塊 512 位元組。磁碟檔案結構 定義自己的磁碟檔案結構,superblock...
基於C 實現的構建二級檔案模擬系統
1 需求分析 題目 構建二級檔案模擬系統 題目說明 使用乙個普通的大檔案 如 c mydisk.img 稱之為一級檔案 來模擬 unix v6 的乙個檔案卷 乙個檔案卷實際上就是一張邏輯磁碟,磁碟中儲存的資訊以塊為單位。每塊 512 位元組。磁碟檔案結構 定義自己的磁碟檔案結構,superblock...