文件系統 | 文件的物理結構
連續文件
將邏輯文件中的信息順序存儲到連續的物理盤塊中。
如下是外存中的物理盤塊的分布圖:
這是我們文件的目錄:
在文件目錄中,有兩個屬性的信息:文件名和物理地址(在外存中存放的位置)。
主要優點:
- 順序訪問速度快。只要找到一個盤塊的位置,就可以依次很容易的找到其他的盤塊。
- 可隨機存取。
主要缺點:
- 磁碟空間會產生碎片。如上面的第18號盤塊。
- 文件修改困難。比較難以實現文件的增刪改操作。
串聯文件
利用指針將文件所佔的盤塊連接起來。
串聯文件結構(隱式鏈接)
串聯文件的缺點:
- 文件容易丟失。一旦某一個盤塊的後續位置信息丟失就會遺失之後的所有節點。
- 文件只能順序存取。只能從第一個節點開始依次讀取磁碟塊。
文件映照結構(顯式鏈接)
所有鏈接指針統一存放在一張顯示的鏈接表(fat表:文件分配表)中。一個邏輯磁碟設置一張表,以物理盤塊號為序,表項內容為指向某文件的下一盤塊的指針。
例:若文件f1佔據了2,4,5,1四個盤塊:
FAT文件系統磁碟組織結構:
FAT1 和 FAT2 是互為備份的連個相同的文件。
FAT32引導區主要內容有:
- 每扇區位元組數;通常512B
- 每簇扇區數;
- FAT1的位置;
- 磁碟分區大小(扇區數);
- FAT表大小(扇區數);
- 根目錄位置;
- 引導區備份扇區的位置;
- 文件系統類型。
串聯文件性能評價
1.存儲空間利用率高;沒有文件存儲空間碎片的問題了。
2.文件創建時用戶不必指出文件的大小;採用指針的形式。
3.文件動態擴充和修改容易。採用指針的形式。
4.順序存取效率高,隨機存取效率較低。
FAT 表大小的計算方法
例:一個磁碟分區大小為20GB,若盤塊大小為1KB,計算該磁碟分區的FAT表大小?
盤塊數=20GB/1KB =20MB≈2^25B,所有至少需要25個二進位位。由於每個FAT的表項可以是半個整數倍,所以25位最少取3.5個位元組。所以FAT表大小=20MB×3.5B=70MB
索引文件
1、什麼是索引文件
索引表:系統為每個文件建立的邏輯塊號與物理塊號的對照表。
如對應的文件 file1 分配到4個磁碟塊:
其所構建的索引表對應的結構就是:
索引塊:存放文件的索引表的物理塊,其塊號保存在文件目錄項的物理地址中;
文件由數據文件和索引表構成。這種文件稱為索引文件。
單級索引分配
就如上例所示的樣子
多級索引分配
文件file2分配到1000個磁碟塊:2,3,5,20,22,25,…1200,1511,若每個盤塊號佔4B,每個盤塊1KB:
由於每個盤塊只有1KB,所以最多存放的盤塊號是 1KB/4B = 256個。不能存放1000個盤塊號,所以需要分組,分為四個部分。為了找到剛才建立的索引塊,所以我們需要建立一個二級索引來記錄以及索引所佔的盤塊號。最好,我們需要在文件目錄中記錄二級索引表所佔的盤塊號。
混合索引分配
Unix:i 節點中的物理地址欄位 iaddr(13)
iaddr(0) ~iaddr(9): 直接地址;
Iaddr(10):一級索引;
iaddr(11): 二級索引;
iaddr(12): 三級索引。
例:設某文件長度為xB,若盤塊大小為4KB,每個盤塊號4B,則:
(1)文件盤塊數量為: n=[x/4k] + 1
(2)每個索引塊能存放的盤塊號數量:=4K/4 =1K(個)
對 n 進行分類:
(1)n≤10:
所有數據塊號全部存放在iaddr(0) ~iaddr(9)中:
(2)10<n≤1034:
前面10個數據塊號全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超過1024個數據塊號放在一個一級索引塊中;
並將該一級索引塊號存入iaddr(10)中:
(3)1034<n≤1034+1M:
前面10個數據塊號全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超過1024+1M個數據塊號放在不超過1025個一級索引塊
將第一個一級索引塊號存入iaddr(10)中;
將剩下的不超過1024個一級索引塊號存入一個二級索引塊中;
最後將該二級索引塊號存入iaddr(11)中:
(4)1034+1M<n≤1034+1M+1G:
前面10個數據塊號全部存放在iaddr(0) ~iaddr(9)中;
剩下的不超過1024+1M+1G個數據塊號放在不超過1025+1M個一級索引塊中;
將第一個一級索引塊號存入iaddr(10)中;
剩下的不超過1024+1M個一級索引塊號存入≤1025個二級索引塊中;
再將第一個二級索引塊存入iaddr(11)中;
剩下的不超過1024個二級索引塊號存入一個三級索引塊中;
最後將該三級索引塊塊號存入iaddr(12)中:
文件物理結構的比較
- 順序文件的優點是不需要額外的空間開銷,只要在文件目錄中指出文件的大小和首塊的塊號即可,對順序的訪問效率很高。適應於順序存取且文件不經常修改的情況。缺點是文件動態地增長和縮小時系統開銷很大;文件創建時要求用戶提供文件的大小;存儲空間浪費較大。
- 鏈接文件(串聯文件)克服了連續文件的不足之處,但文件的隨機訪問系統開銷較大。適應於順序訪問的文件。
- 索引文件既適應於順序存訪問,也適應於隨機訪問,是一種比較好的文件物理結構,但要有用於索引表的空間開銷和文件索引的時間開銷。UNIX系統和Linux系統是使用索引結構成功的例子。
推薦閱讀:
※純UEFI+GPT實現Win7 Win10雙系統
※復盤方舟和永中的敗局點:為什麼中國做不出操作系統?
※操作系統引論 | 操作系統的發展過程
※主存管理 | 段式存儲管理方式
※第二章:操作系統概述 ||《操作系統:精髓與設計原理》
TAG:操作系統 |