4.2
磁碟檔案的儲存
UNIX檔案系統的儲存通過目錄和檔案系統結構共同完成,其中前者儲存了檔案的階層,後者儲存了檔案的位置與內容。
1目錄檔案
在UNIX中,目錄是一種特殊的檔案,它的內容是一系列的目錄項,每個目錄項由該目錄下的一個檔案名稱及此檔案佔用的i節點編號兩部分組成。可以通過”ls
–ai”命令查看各目錄項內容。
目錄搭建了一個樹狀檔案結構體系,並且記錄了檔案名稱和i節點之間的對應關係,從而在檔案名稱與檔案屬性,內容之間架起了一座橋樑。
2磁碟檔案
檔案系統通過目錄記載檔案名稱及其對應的i節點編號,通過i節點記錄檔案的資訊與內容。事實上,i節點直接記錄的只是檔案的屬性,檔案的具體內容儲存在資料區的資料區塊中,i節點中僅保留了一個”磁碟地址表”來記錄檔案內容儲存的位置。
“磁碟地址表”由13個塊號組成,每個塊號佔用4個位元組,代表了資料區的一個資料區塊編號。
UNIX檔案系統採用三級索引結構隱藏檔,它把”磁碟地址表”分為直接索引地址,一級間接索引地址,二級間接索引地址和三級間接索引地址四個部分。
UNIX檔案儲存體方式複雜,在處理大檔案時,由於間接索引的存在,導致磁碟利用率低,資料定址速度慢,但是在處理小檔案時卻非常便利,長度不高於10K的檔案可以直接定址,實際上,統計資料表明,在UNIX中,80%為小檔案,20%為大檔案,其中85%的檔案小於8K,48%的檔案小於1KB,只有1%的檔案為超大檔案。
3連結檔案
連結檔案分為永久連結檔案和符號連結檔案。建立檔案的永久連結並不佔用額外的磁碟塊,它在目錄檔案中增加一個目錄項。登記了檔案名稱和被連結檔案的i節點號,再將i節點中di_nlink(檔案連結數)欄位值加1即可。連結檔案是原檔案的另外一個訪問路徑,二者指向同一塊磁碟地區,因此,通過永久連結變更檔,就是更改原檔案本身。
在執行刪除檔案操作時,檔案系統將i節點di_nlink欄位減1,只有當值為0時,即沒有任何連結指向該節點時,才真正從磁碟上刪除檔案。
永久連結只能在檔案系統內實現,當跨越檔案系統連結時,需要建立符號連結,符號連結又名軟連結,它類似於window中的捷徑,本身是佔用磁碟塊的檔案,內容上記錄了一個指向目標檔案的連結,訪問時作業系統先讀取此連結再讀取目標檔案。
4磁碟檔案讀取工作原理
下面,我們以命令”cat T1.c”執行過程為例
步驟一:在目前的目錄檔案中尋找檔案T1.c及對應的i節點編號,假設為1109
步驟二:在i節點表中讀取第1109號節點
步驟三:讀取i節點中檔案屬性,存取權限等資訊。
步驟四:讀取i節點中磁碟地址表,按照三級索引規則在資料區讀取檔案內容。