檔案系統
檔案系統基本概念
檔案是對使用者資料的邏輯抽象,是資料儲存和訪問的單位。對使用者而言,這樣可以遮蔽訪問外存上資料的複雜性。
檔案可以視為一個單獨的連續邏輯地址空間,其大小與檔案的大小相同,與程序的地址空間無關。
檔案的定義:一組帶標識的、在邏輯上有完整意義的資訊項的序列。
包括兩部分:檔案體(檔案本身的內容)和檔案說明。
檔案管理的需求:
- 使用者視角:使用邏輯檔案。關心檔案系統所提供的使用者介面
- 作業系統視角:組織和管理物理檔案。
檔案系統要完成的任務:
檔案系統是作業系統中統一管理資訊資源的一種軟體,管理檔案的儲存、檢索、更新,提供安全可靠的共享和保護手段,並方便使用者使用。
- 統一管理磁碟空間,實現磁碟空間的分配與回收
- 實現檔案按名存取:名字空間對映到磁碟空間。
3.實現檔案資訊共享,並提供檔案的保護、保密手段;
4.向使用者提供一個方便使用、易於維護的介面,並向用 戶提供有關統計資訊;
5.提高檔案系統的效能;
6.提供與IO系統的統一介面
檔案系統的三個層次
- 檔案系統的介面
- 物件操作管理的軟體集合
- 物件及其屬性
檔案
檔名(略)
檔案型別:
- 按性質和用途:系統檔案、庫檔案、使用者檔案
- 按資料形式:原始檔、目標檔案、可執行檔案
- 按對檔案實施的保護級別:只讀、讀寫、執行、不保護檔案
檔案的邏輯結構:
-
以位元組為單位的流式結構(無結構檔案):源程式檔案、目的碼檔案等
-
記錄式檔案結構:按資訊在邏輯上的獨立含義所劃分的資訊單位,如每個職工的工資資訊是一個邏輯記錄,整個單位的工資資訊便組成了該單位工資資訊的記錄式檔案。(xml檔案)
對於記錄式檔案,作業系統為使用者存取檔案資訊的最小單位是記錄。
-
樹形結構
檔案存取方式:
- 順序存取
- 隨機存取
檔案儲存介質:
- 典型的儲存介質:磁碟、磁帶、光碟等;
- 物理塊:資料儲存、傳輸和分配的單位,儲存裝置通常劃分為大小相等的物理塊,統一編號。
目錄
目錄的提出:
- 要能迅速定位一個檔案
- 要方便使用者命名,能有重名和別名
- 分組功能
目錄內容
目錄是由檔案說明索引組成的用於檔案檢索的特殊檔案,檔案目錄的內容主要是檔案訪問和控制的資訊。
目錄的結構
- 單級目錄結構
- 兩級目錄結構:分使用者
- 多級目錄結構:根目錄&當前目錄
- 樹形
- 無環圖目錄結構:方便共享
目錄的實現
直接法:目錄項=檔名+檔案控制塊。如Windows。
間接法:目錄項=檔名+檔案控制塊地址(索引號)。如Unix(inode)。
inode是檔案控制塊的一種,也就是索引表。
其中包含了:作為FCB的各種資訊(見下),以及直接索引、一級間接索引等等。
檔案系統實現方法
![image-20240522102622864](https://cdn.jsdelivr.net/gh/maotougu/picture-for-Typore/typore_img/image-20240522102622864.png)
檔案控制塊
注意與檔案目錄內容區分。
- 基本資訊:
- 檔名
- 物理位置
- 檔案邏輯結構:有無結構(記錄檔案、流式檔案)
- 檔案物理結構:順序、索引等
- 訪問控制資訊
- 檔案所有者
- 訪問許可權
- 使用資訊
- 建立時間,上一次修改時間,當前使用資訊等。
- 例項:DOS中的檔案控制塊FCB;Unix的inode。
檔案邏輯結構
- 提高檢索效率
- 便於修改
- 降低檔案儲存代價
檔案物理結構
- 檔案字儲存介質上的存放方式,表示了一個檔案在檔案儲存介質上的位置、連結和編目方法。
- 主要解決的問題:
- 主要結構:連續結構、串聯結構、索引結構
連續結構
容易出現磁碟碎片。
優點:
- 結構簡單,實現容易,不需要額外的空間開銷
- 順序存取和隨機存取的效率高
缺點:
- 檔案長度一經固定便不易改變
- 不利於檔案的動態增加和修改
所以適用於變化不大的檔案(系統檔案)。
串聯(連結)結構
把檔案的資訊按儲存介質的物理特性存於若干塊中,並使用物理塊中的最後一個字(或第一個字)作為連結字,指向後續塊的實體地址。
- 只支援順序訪問,不支援隨機訪問,查詢效率很低。
- 方便擴充檔案。
索引結構
- 一個檔案的資訊存放在若干個不連續的物理塊中,系統為每個檔案建立一個專用資料結構:索引表(即inode)
- 索引表就是磁碟塊地址陣列,其中第i個條目指向檔案的第i塊。
每個檔案索引表長度是不一樣的,不能存放在FCB中,FCB中只記錄索引表的地址。
上一級目錄的一個目錄項中,只記錄某個下一級目錄(檔案)的索引表(inode)的物理位置;
索引表中的每一個表項 再指向下一級目錄(檔案)的每一個物理塊的位置;(直接索引)
下一級為目錄時,每個物理塊中包含若干個目錄項;
索引表中的表項還可能指向下一級索引表。(多級索引表,每個索引表只佔一塊)
索引檔案:系統為每個檔案建立邏輯塊號與物理塊號的對照表稱為檔案的索引表。檔案由資料檔案和索引表構成,被稱為索引檔案。
索引表位置:檔案目錄中,檔案的開頭等。
索引表大小:固定&非固定。
![image-20240606221014574](https://cdn.jsdelivr.net/gh/maotougu/picture-for-Typore/typore_img/image-20240606221014574.png)
索引檔案的操作
索引檔案在儲存區中展兩個區:索引區和資料區。
索引區存放索引表,資料區存放資料檔案本身。
訪問索引檔案的步驟:
- 讀取檔案索引區,由邏輯塊號查得物理塊號
- 訪問物理塊號獲得所需資訊。
檔案保護
- 建立副本:把同一檔案儲存在多個儲存介質上
- 定時轉儲
- 規定檔案許可權
檔案系統效能提升方法
-
目錄項分解
-
當前目錄
-
磁碟碎片整理
-
塊快取記憶體(即磁碟快取記憶體),在記憶體中
-
磁碟排程
-
並行化(RAID)
-
最佳化資料佈局
-
提前讀、延遲寫
檔案系統例項
FAT檔案系統
檔案系統的資料記錄在引導扇區中。
FAT:檔案分配表,用於描述塊的分配狀態、標註下一塊的塊號等。
FAT表項:2位元組。
目錄項:32位元組。
根目錄大小固定。
Ext2檔案系統
Linux檔案系統,使用了索引節點。
超塊
包含了檔案系統的基本大小和形式,其中的資料由檔案系統管理程式來進行檔案系統的維護。