目錄
用戶和磁盤視角的文件
文件控制塊(FCB)和索引結點(inode)
文件的操作
創建文件(create系統調用)
寫文件(write系統調用)
讀文件(read系統調用)
重新定位文件
刪除文件(delete系統調用)
截斷文件
文件保護
目的
方法
文件的邏輯結構
無結構文件
有結構文件
文件的物理結構
連續分配
鏈接分配
索引分配
優化機制
用戶和磁盤視角的文件
- 用戶視角:文件被視為字符流或字節流,用戶通過文件名來訪問文件內容。
- 磁盤視角:文件是由一系列盤塊組成的集合,每個盤塊包含文件數據的一部分。
文件控制塊(FCB)和索引結點(inode)
- 文件控制塊(FCB):
- 作用:存放控制文件所需的信息,實現“按名存取”。
- 內容:包括文件名、物理位置、邏輯結構、物理結構、存取控制信息和使用信息。
- 索引結點(inode):
- 引入原因:減少內存中文件目錄的大小,提高檢索效率。
- 磁盤索引結點:每個文件有一個唯一的磁盤索引結點,包含文件主標識符、類型、存取權限、物理地址、長度、鏈接計數、存取時間等。
- 內存索引結點:文件打開時,磁盤索引結點復制到內存,包含索引結點編號、狀態、訪問計數、邏輯設備號、鏈接指針等。
文件的操作
寫文件(write
系統調用)
寫文件操作允許用戶將數據寫入到文件中。這個過程包括:
讀文件(read
系統調用)
讀文件操作允許用戶從文件中讀取數據。操作步驟如下:
重新定位文件
重新定位文件操作(通常通過lseek
系統調用)改變文件的讀寫位置。這包括:
刪除文件(delete
系統調用)
刪除文件操作從文件系統中移除指定的文件。這個過程通常涉及:
截斷文件
截斷文件操作將文件的大小減小到用戶指定的大小。這通常包括以下步驟:
-
創建文件(
create
系統調用)創建文件操作允許用戶在文件系統中生成一個新的文件實體。這個過程通常涉及以下步驟:
- 檢查權限:系統檢查用戶是否有權限在指定目錄下創建文件。
- 分配FCB:系統為新文件分配一個文件控制塊(FCB),并在其中填寫文件名、創建時間、文件所有者等信息。
- 分配inode:系統為新文件分配一個索引結點(inode),記錄文件的物理位置、大小、訪問權限等。
- 初始化存儲空間:根據文件的物理結構,系統可能會分配一個或多個磁盤塊來存儲文件數據。
- 定位:系統根據文件指針確定寫入位置。
- 寫入數據:系統將用戶指定的數據寫入到文件的相應位置。
- 更新FCB和inode:系統更新文件控制塊和索引結點,以反映文件的新大小和最后修改時間。
- 分配新塊:如果文件需要更多存儲空間,系統會分配新的磁盤塊。
- 定位:系統根據文件指針確定讀取位置。
- 讀取數據:系統從文件的指定位置讀取數據,并將其傳送到用戶指定的緩沖區。
- 更新文件指針:讀取操作完成后,系統更新文件指針,以便下次操作可以從新的位置開始。
- 設置文件指針:用戶可以指定新的位置,系統將文件指針移動到該位置。
- 檢查邊界:系統確保新的位置在文件的合法范圍內。
- 檢查權限:系統檢查用戶是否有權限刪除該文件。
- 釋放FCB:系統釋放文件的文件控制塊。
- 釋放inode:系統釋放文件的索引結點。
- 釋放存儲空間:系統釋放文件所占用的所有磁盤塊,以便這些塊可以被重新使用。
- 檢查權限:系統檢查用戶是否有權限修改文件大小。
- 調整大小:系統將文件大小減小到指定的大小,釋放多余的數據塊。
- 更新FCB和inode:系統更新文件控制塊和索引結點,以反映文件的新大小。
- 處理剩余數據:如果文件被縮小,系統會處理剩余的數據塊,可能會將其標記為可用
文件保護
目的
- 防止文件共享時被破壞或未經允許的修改。
方法
- 口令保護:訪問文件時需提供口令。
- 加密保護:文件加密,訪問時需密鑰解密。
- 訪問控制:
- 訪問控制列表:規定用戶及其所允許的訪問類型。
- 訪問類型:讀、寫、執行、添加、刪除、列表清單。
- 用戶訪問權限:與文件屬性共同限制文件訪問。
文件的邏輯結構
無結構文件
- 數據按順序組織,適合基本信息單位操作不多的文件。
有結構文件
- 順序文件:通常是定長的,可以順序存儲或鏈式存儲。
- 索引文件:適用于定長和變長記錄文件,提高檢索效率。
- 索引順序文件:為順序文件建立索引表,每組第一條記錄有一個索引項。
- 直接文件或散列文件:通過鍵值或散列函數直接決定記錄的物理地址。
操作系統之文件的邏輯結構-CSDN博客
文件的物理結構
連續分配
- 每個文件在磁盤上占有一組連續的塊,支持隨機存取,但可能導致外部碎片。
鏈接分配
- 隱式鏈接:磁盤塊離散分配,每個塊(除最后一個)有指向下一個塊的指針。
- 顯式鏈接:鏈接指針存放在內存的文件分配表(FAT)中,提高檢索速度,支持隨機訪問。
索引分配
- 每個文件有一個索引塊,包含指向文件各塊的指針,支持隨機存取。
后面補
優化機制
- 鏈接方案:多個索引塊鏈接在一起處理大文件。
- 多層索引:類似多級頁表,處理大型索引塊。
- 混合索引:結合鏈接分配和索引分配的優點。