如何實現乙個檔案系統(六)

2021-06-19 02:12:30 字數 1139 閱讀 4416

[1][1] 請參見  operation systems internals and design principles 一書第12章

[2][2] 扇區是磁碟的最小定址單元,而檔案塊是核心操作檔案的最小單位,乙個塊可以包含乙個或數個扇區。這些磁碟塊被讀入記憶體後即刻被存入緩衝中,同樣,檔案塊被寫出也要通過緩衝。

[3][3] 如果檔案按記錄形式組織,那麼資料在成為檔案塊前,還要經過記錄形式的階段。

[4][4] 摘自linux 核心開發 中第 11 章中檔案系統抽象層一節

[5][5] 請看linux 核心開發 一書第11章

[6][6] 在2.6核心以後,緩衝頭的作用並不象以前那麼重要了。因為2.6中緩衝頭僅僅作為核心中的i/o操作單元,而在2.6以前緩衝頭不但是磁碟塊到物理記憶體的對映,而且還是所有塊i/o操作的容器。

[7][7] 這裡安裝的檔案系統屬於非根檔案系統的安裝方法。根檔案系統安裝方法有所區別,請檢視相關資料。

[8][8] 無論讀檔案或寫檔案,檔案中的資料都是必須經過記憶體中的頁快取記憶體做中間儲存才能夠被使用。快取記憶體由乙個叫做address_space的特殊資料結構表示,其中含有對頁快取記憶體宿主(address_space->host)的操作表。

[9][9] 這期間要要處理一些預讀,以此提高未來訪問的速度。

[10]

[10]  緩衝與相應的塊一一對應,它的作用相當於磁碟塊在記憶體中的表示。

[11]

[11] tq_disk是專門負責磁碟請求的任務佇列,任務佇列是用來推後非同步執行的一種機制。2.6核心中已經用工作佇列代替了任務佇列。

[12]

[12]  塊裝置驅動程式可以劃分為兩部分:低階驅動程式(blk_dev_struct)和高階裝置驅動(block_device)。低階裝置驅動程式作用是記錄每個高階驅動程式送來的請求組成的佇列。

[13]

[13]檔案讀取操作必須同步進行,在讀取的資料返回前,工作無法繼續進行。而且如果結果在30秒內回不來,則使用者必將無法忍受,所以讀操作執行緊迫。而對於寫操作,則可以非同步執行,因為寫入操作一般不會影響下一步的執行,所以緊迫性也低。

[14]

[14]bdflush和kupdate 分別是當空閒記憶體過低時釋放髒頁和當髒緩衝區在記憶體中存在時間過長時重新整理磁碟的。而在2.6核心中,這兩個函式的功能已經被pdflush統一完成。

如何在wince下實現乙個檔案系統驅動

如何在wince下實現乙個檔案系統驅動 應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如 可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果...

如何在wince下實現乙個檔案系統驅動

如何在wince下實現乙個檔案系統驅動 應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如 可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果...

如何在wince下實現乙個檔案系統驅動

如何在wince下實現乙個檔案系統驅動 應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如 可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果...