操作系统:第四章 文件管理1 - 文件逻辑结构,物理结构,文件目录,软硬连接,文件系统
本文已收錄至 Github(MD-Notes),若博客中有圖片打不開,可以來我的 Github 倉庫:https://github.com/HanquanHq/MD-Notes,涵蓋了互聯網大廠面試必問的知識點,講解透徹,長期更新中,歡迎一起學習探討。
面試必會系列專欄:https://blog.csdn.net/sinat_42483341/category_10300357.html
操作系統系列專欄:https://blog.csdn.net/sinat_42483341/category_10519484.html
第四章 文件管理1 - 文件系統
目錄
- 第四章 文件管理1 - 文件系統
- 文件基礎知識
- 文件的屬性
- 操作系統提供的系統調用
- 文件的邏輯結構 / 物理結構
- 文件的邏輯結構
- 文件的物理結構(文件分配方式)
- 連續分配
- 鏈接分配
- 索引分配
- 文件目錄
- 文件控制塊 FCB
- 索引結點(FCB的改進)
- 文件存儲空間管理
- 空閑表法
- 空閑鏈表法
- 位示圖法
- 成組鏈接法
- 文件共享
- 硬鏈接:基于索引結點的共享方式
- 軟鏈接:基于符號鏈的共享方式
- 共性
- 文件保護
- 口令保護
- 加密保護
- 訪問控制
- 文件系統的層次結構
- 補充:文件系統實例
文件基礎知識
文件的屬性
文件名、標識符、類型、位置、大小、保護信息 …
操作系統提供的系統調用
- 創建文件:create
- 讀文件:read
- 從外存讀入內存
- 寫文件:write
- 從內存寫回外存
- 刪除文件:delete
- 打開文件:open
- 將目錄項中的信息復制到打開文件表中,并將打開文件表的索引號(文件描述符)返回給用戶
- 打開文件之后,堆文件的操作不需要每一次都查詢目錄,可以根據內存中的打開文件表進行操作
- 每個進程有自己的打開文件表(包含讀寫指針、訪問權限…)
- 操作系統有一張總打開文件表(包含打開計數器…)
- 關閉文件:close
- 將進程打開文件表中的相應表項刪除
- 系統打開文件表的打開計數器 -1,如果為 0,則刪除表項
- 復制文件
- 使用 create + read + write 的組合實現
文件的邏輯結構 / 物理結構
物理結構:操作系統角度,文件數據如何存放在外存中
邏輯結構:用戶角度,文件內部數據如何組織
文件的邏輯結構
-
無結構文件:二進制字符流,流式文件。例如:記事本文件
-
有結構文件:記錄 是一組 數據項 的集合。例如:數據庫表
根據 各條記錄長度是否相等,分為:
- 定長記錄(可以隨機存取)
- 可變長記錄(無法隨機存取)
根據 有結構文件的邏輯結構,分為:
-
順序文件:采用順序存儲(可以隨機存取)/ 鏈式存儲(無法隨機存取)。
根據 記錄是否按關鍵字有序 排列,分為串結構(無序)/ 順序結構(有序)
-
索引文件:建立一張 索引表,每個記錄對應一個表項。
可以用不同的數據項 建立多個索引表,例如:id, username 分別作為索引
-
索引順序文件:將記錄分組,一組記錄 對應 一個索引表項。檢索時,先順序查索引表,找到分組,再順序查找分組。可以建立多級索引順序文件。
文件的物理結構(文件分配方式)
連續分配
每個文件在磁盤上占有一組連續的塊。支持順序訪問 / 隨機訪問
鏈接分配
- 隱式鏈接:目錄中存放 文件名、起始塊號、結束塊號,每個磁盤塊中保存下一個盤塊的指針。不支持隨機訪問。
- 顯式鏈接:目錄中存放 文件名、起始塊號,操作系統維護 FAT 文件分配表 <物理塊號,下一塊>。支持隨機訪問。
索引分配
每個文件建立一張索引表。
-
鏈接方案:一個索引塊裝不下,可以將多個索引塊鏈接起來存放。
-
多級索引:建立多層索引,使第一層索引塊指向第二層的索引塊,類推。
-
混合索引:頂級索引表中包含 直接地址索引(直接指向數據塊)、一級間接索引、兩級間接索引。對于小文件來說,訪問一個數據塊所需的讀磁盤次數更少。
區分:FAT 是一個磁盤對應一張,索引表是一個文件對應一張。
文件目錄
文件控制塊 FCB
FCB 的有序集合稱為 “文件目錄”,FCB 實現了 文件名 和 文件 的映射。FCB 中包含:
- 文件的基本信息(文件名、物理地址、邏輯結構、物理結構等)
- 存取控制信息(是否可讀/可寫、禁止訪問的用戶名單等)
- 使用信息(如文件的建立時間、修改時間等)
- 文件名、文件物理地址
需要對目錄進行的操作:
- 搜索:當用戶要使用一個文件時,系統要根據文件名搜索目錄,找到該文件對應的目錄項
- 創建文件:增加目錄項
- 刪除文件:刪除目錄項
- 顯示目錄:用戶請求顯示目錄的內容,如:所有文件、相應屬性
- 修改目錄:保存在目錄中的文件屬性變化,如:文件重命名
目錄結構
- 單級目錄結構:不允許文件重名
- 兩級目錄結構:允許不同用戶的文件重名
- 多級目錄結構:又稱樹形目錄結構,不同目錄下的文件可以重名
- 無環圖目錄結構:整個目錄成為一個有向無環圖,方便用戶間文件共享。每個共享結點設置一個共享計數器,有共享計數器減為 0 時,才刪除結點。
索引結點(FCB的改進)
原有的文件目錄表項:
將冗余信息放在索引節點中:節省空間,減少 IO 次數,提升文件檢索速度
找到文件名對應的目錄項后,才需要將索引結點調入內存,然后根據“存放位置”即可找到文件。
文件存儲空間管理
操作系統需要對磁盤塊進行哪些管理:
- 對非空閑磁盤塊的管理:(文件的物理結構)連續分配、鏈接分配、索引分配
- 對空閑磁盤塊的管理:空閑表法、空閑鏈表法(空閑盤快鏈 / 空閑盤區鏈)、位示圖法、成組鏈接法
空閑表法
空閑鏈表法
空閑盤快鏈:以盤區為單位組成一條空閑鏈
空閑盤區鏈:以盤區為單位組成一條空閑鏈
位示圖法
要能自己推出盤塊號與(字號,位號)相互轉換的公式:若n表示字長,則
(字號,位號)=(i, j)的二進制位對應的盤塊號b = ni + j
b號盤塊對應的字號i = b/n,位號j = b%n
成組鏈接法
UNIX 采用的策略,適合大型文件系統
文件共享
硬鏈接:基于索引結點的共享方式
- 兩個變量名指向了同一個物理位置,硬鏈接的文件擁有相同的 inode。操作系統靠 inode 來區分文件的,2 個 inode 相同的文件,代表它們是同一個文件。
- 如果刪掉了其中一個文件,另外一方還能找到這個文件。相當于只是刪除了一個引用。
- 若 count > 0,說明還有別的用戶要使用該文件。除非你把硬鏈接和源文件都刪除,count 值變為 0,這個文件才被真正刪除。
軟鏈接:基于符號鏈的共享方式
- 軟鏈接是兩個獨立的文件,相當于創建了一個 快捷方式
- 文件的共享用戶只有該文件的 路徑名,只有文件擁有者才擁有 指向其索引節點的指針
- 若符號鏈接被刪除,不影響源文件。若源文件被刪除,符號鏈接仍然存在,但找不到源文件了,會標紅報錯。
- 軟鏈接有 自己的 inode 號 以及用戶數據塊
- 軟鏈接可跨文件系統,硬鏈接不行
- 通過軟鏈接方式訪問共享文件時,要查詢多級目錄,會有多次磁盤 IO,因此比硬鏈接慢
共性
- 無論是硬鏈接還是軟連接,如果修改任意一方,另外一個文件也會看到這個變化。
文件保護
口令保護
為文件設置一個“口令”(如:abc112233),用戶請求訪問該文件時必須提供“口令”。口令一般存放在文件對應的FCB或索引結點中。
缺點:正確的“口令”存放在系統內部,不夠安全。
加密保護
使用某個“密碼”對文件進行加密,在訪問文件時需要提供正確的“密碼”才能對文件進行正確的解密。
缺點:編碼/譯碼,或者說加密/解密要花費一定時間。
Eg:一個最簡單的加密算法——異或加密,假設用于加密 / 解密的 “密碼” 為“01001”
訪問控制
在每個文件的FCB(或索引結點)中增加一個訪問控制列表(Access-Control List, ACL),該表中記錄了各個用戶可以對該文件執行哪些操作。
精簡的訪問列表:以“組”為單位,標記各“組”用戶可以對文件執行哪些操作。
如:分為系統管理員、文件主、文件主的伙伴、其他用戶幾個分組。當某用戶想要訪問文件時,系統會檢查該用戶所屬的分組是否有相應的訪問權限。
文件系統的層次結構
補充:文件系統實例
總結
以上是生活随笔為你收集整理的操作系统:第四章 文件管理1 - 文件逻辑结构,物理结构,文件目录,软硬连接,文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:严蔚敏、殷人昆快速排序规则不同
- 下一篇: java信息管理系统总结_java实现科