檔案系統設計考慮

2021-08-10 23:08:14 字數 1677 閱讀 1536

乙個磁碟可以有數個分割槽,典型的unix系統中每個磁碟分割槽會有幾個檔案系統。順序介紹幾個概念,會對以後的問題更為清晰。

主引導記錄(master boot record),整個磁碟的0號扇區。它的最基本作用就是引導載入計算機的作業系統。過程如下:

1.計算機啟動bios

2.bios讀入執行mbr

3.mbr的結尾有分割槽表。

就是c,d分割槽在磁碟的物理起始位置和結束位址。另外,其中大多數情況下,c盤會被標記為活動分割槽(作業系統所在的地方)。

4.讀入活動分割槽的第乙個塊,這個塊叫做引導塊

5.引導塊記錄著怎麼裝載作業系統,之後是一些和檔案系統相關的系統。

ps:關於磁碟分割槽中的結構有待進一步研究。

這個問題根本不用闡述,但系統考慮問題,就是需要把基本問題羅列。

況且只知道檔案和目錄層級關係遠遠是不夠的,深入檔案系統的實現:

檔案系統通過目錄管理檔案,每個檔案都有屬性和記錄其物理磁碟塊位址的資訊。如果對於windows,那應該先說檔案,對於unix那應該先說目錄。

關於windows的實現請參考:

作者andrew s. tanenbaum的《modern operating system》

unix把檔案抽象成乙個稱為

i 節點的資料結構。i節點的結構如下:

i 節點結構結構

描述檔案屬性列表

包括所有者,建立日期等內容

磁碟塊位址列表

記錄檔案的實際實體地址

(可選)指標塊

通常i節點是固定長度的,大檔案需要指向另乙個額外列表

這樣unix的目錄就變成了這樣:

元素名i節點指標

one.png

檔案one的i節點

second.doc

檔案second的i節點

這個實現簡單而且節省開銷,為什麼呢?緊接著看下面

上下文:由於檔案包含數個磁碟塊在磁碟上的不連續分配,我們需要乙個指標對應檔案的乙個磁碟塊。

windows

因為windows對目錄項的處理每個檔案構造乙個鍊錶,檔案從起始位置開始可以獲得整個檔案。而所有檔案的鍊錶儲存在乙個表中,這個表叫

fat-檔案分配表(file allocation table)

假設檔案sample的磁碟塊組成如下:

4->7->2->10->12

物理塊序號

下乙個物理塊01

21034

7(檔案開始)67

28910

1211

1213

14-1(檔案結尾)15

這個開銷和磁碟上的檔案數是成正比的。如果檔案佔的總磁碟數為n,那麼目錄項數也是n。

unix

這個就非常簡單了,在記憶體中載入i節點。這就增大了靈活性,如果在目錄下你開啟檔案,目錄項會存在乙個硬連線指向 i 節點,然後動態載入記憶體。開銷是你開啟的所有檔案的所佔的磁碟塊數總數。明顯,unix取出所有檔案的子集。

看來動態分配和抽象封裝的思想是多麼偉大啊!動態分配降低成本,而抽象封裝為動態分配提供了基礎,即管理的方便。

1166 設計檔案系統

題目描述 你需要設計乙個能提供下面兩個函式的檔案系統 create path,value 建立乙個新的路徑,並盡可能將值 value 與路徑 path 關聯,然後返回 true。如果路徑已經存在或者路徑的父路徑不存在,則返回 false。get path 返回與路徑關聯的值。如果路徑不存在,則返回 ...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

FAT 檔案系統設計思想

1 fat1 fat2 緊挨保留扇區之後 2 fat1 fat2 中內容都是關於檔案 目錄的簇號連線。3 資料區中檔案和目錄的屬性。檔案為使用者的資料集。目錄為檔案和子目錄的目錄項集。1 保留扇區 fat12 16 通常為1扇區,fat32 通常為32 扇區 2 db t12 16 只有乙個 損壞不...