第四章 文件管理

第四章 文件管理

4.1 初始文件管理

4.1.1 文件的屬性

文件名:由創建文件的用戶決定文件名,主要是爲了方便用戶找到文件,同一目錄下不允許有重名文件。

標識符:一個系統內的各文件標識符唯一,對用戶來說毫無可讀性,因此標識符只是操作系統用於區分各個文件的一種內部名稱。

類型:指明文件的類型

位置:文件存放的路徑、在外存中的地址

大小:指明文件大小、創建時間,上次修改時間

保護信息:對文件進行的保護的訪問控制信息

4.1.2 文件內部

無結構文件:由一些二進制或字符流組成,又稱流式文件

有結構文件:由一組相似的記錄組成,又稱記錄式文件

記錄是一組相關數據項的集合

數據項是文件系統中最基本的數據單位

4.1.3 文件之間

目錄起始也是一種特殊的有結構文件

用戶可用之間創建一層層的目錄。各層目錄中存放相應的文件

4.1.4 操作系統向上提供的功能

創建文件(create系統調用)、刪除文件(delete系統調用)、讀文件(read系統調用)、寫文件(write系統調用)、打開文件(open系統調用)、關閉文件(close系統調用)

4.1.5 文件在外存中的存放

操作系統以塊爲單位爲文件分配存儲空間。

外存也是由一個個存儲單元組成的,每個存儲單元可用存儲一定量的數據。每個存儲單元對應一個物理地址

4.1.6 其他功能

文件共享:使多個用戶可用共享使用一個文件

文件保護:如何保證不同的用戶對文件有不同的操作權限

4.2 文件的邏輯結構

4.2.1 無結構文件

無結構文件:文件內部的數據就是一系列二進制或字符流組成。

4.2.2 有結構文件

有結構文件:由一組相似的記錄組成,又稱記錄式文件。每條記錄有若干個數據項組成。每條記錄有一個數據項可作關鍵字

定長記錄:這個有結構文件由定長記錄組成,每條記錄的長度都相同。各數據項都處在記錄中相同的位置,具有相同的順序和長度

可變長記錄:這個有結構文件由可變長記錄組成,其中由長度不確定的數據項

順序文件

順序文件:文件中的記錄一個接一個地順序排列,記錄可以是定長的或可變長的。各個記錄在物理上可以順序存儲或鏈式存儲。

串結構:記錄之間的順序與關鍵字無關

順序結構:記錄之間的順序按關鍵字順序排列

索引文件

索引文件:建立一張索引表,每個記錄對應一個表項。各記錄不用保持順序,方便增加/刪除記錄

索引表本身是定長記錄的順序文件。

可將關鍵字作爲索引號內容,若按關鍵字順序排列,則還支持按照關鍵字拆半查找

索引順序文件:是索引文件和順序文件思想結合。同樣會爲文件建立一張索引表,但不同的是並不是每個記錄對應一個索引表項,而是一組記錄對應一個索引表項

多級索引順序文件

爲了進一步提高檢索效率,可以爲順序文件建立多級索引表。

4.3 文件目錄

4.3.1 文件控制塊

FCB的有序集合稱爲文件目錄,一個FCB就是一個文件目錄項。FCB中包含了文件的基本信息,存取控制信息、使用信息。最重要、最基本的還是文件名、文件存放的物理地址

搜索:當用戶要使用一個文件時,系統要根據文件名搜索目錄,找到該文件對應的目錄項

創建文件:創建一個新文件時,需要在其所屬的目錄中增加一個目錄項

刪除文件:當刪除一個文件時,需要在目錄中刪除相應的目錄項

顯示目錄:用戶可以請求顯示目錄的內容

修改目錄:某些文件屬性保存在目錄中,因此這些屬性變化時需要修改相應的目錄項

4.3.2 目錄結構

單級目錄結構

整個系統只建立一張目錄表,每個文件佔一個目錄項。

單級目錄實現了按名存取,但是不允許文件重名。

兩級目錄結構

分爲主文件目錄和用戶文件目錄

兩級目錄結構允許不同用戶的文件重名,也可以在目錄上實現訪問限制。但是兩級目錄結構依然缺乏靈活性,用戶不能對自己的文件進行分類

多級目錄結構

用戶(或用戶進程)要訪問某個文件時要用文件路徑名標識文件,文件路徑名是個字符串。各級目錄之間用“/”隔開。

從根目錄出發的路徑稱爲絕對路徑。

從當前目錄出發的路徑時相對路徑

無環圖目錄結構

在樹形目錄結構的基礎上,增加一些指向同一節點的有向邊,使整個目錄成爲一個有向無環圖

爲共享結點設置一個共享計數器,計數器爲0時才真正刪除該結點

4.3.3 索引結點

目錄項中只包含文件名、索引結點指針,因此每個目錄項的長度大幅減小

由於目錄項長度減小,因此每個磁盤塊可以存放更多個目錄項,因此檢索文件時磁盤I/O的次數就少了很多

4.4 文件的物理結構

在外存管理中,爲了方便對文件數據的管理,文件的邏輯地址空間也被分爲一個一個的文件塊

文件的邏輯地址也可以表示爲(邏輯塊號,塊內地址)的形式

4.4.1 連續分配

連續分配方式要求每個文件在磁盤上佔有一組連續的塊。

優點:支持順序訪問和直接訪問;連續分配的文件在順序訪問時速度最快

缺點:不方便文件拓展;存儲空間利用率低,會產生磁盤碎片

4.4.2 鏈接分配

鏈接分配採取離散分配的方式,可以爲文件分配離散的磁盤塊。分爲隱式鏈接和顯示鏈接。

隱式鏈接:除文件的最後一個盤塊之外,每個盤塊都存有指向下一個盤塊的指針。文件目錄包括文件第一塊的指針和最後一塊的指針。

優點:很方便文件拓展,不會有碎片問題,外存利用率高

缺點:只支持順序訪問,不支持隨機訪問,查找效率低,指向下一個盤塊的指針也需要消費少量的存儲空間。

顯示鏈接:把用於鏈接文件個物理塊的指針顯式地存放在一張表中,即文件分配表。一個磁盤只會建立一張文件分配表。開機時文件分配表存入內存,並常駐內存。

優點:很方便文件拓展,不會有碎片問題,外存利用率高,並且支持隨機訪問。相比於隱式鏈接來說,地址轉換時不需要訪問磁盤,因此文件的訪問效率更高。

缺點:文件分配表需要佔用一定的存儲空間

4.4.3 索引分配

爲文件數據塊建立索引表,若文件太大,可採用鏈接方案、多層索引、混合索引。

鏈接方案:如果索引表太大,一個索引塊裝不下,可以將多個索引塊鏈接起來存放

多層索引:建立多層索引。使第一層索引塊指向第二層的索引塊,還可根據文件大小的要求再建立第三層、第四層索引塊。

混合索引:多種索引分配方式的結合

優點:支持隨機訪問,易於實現文件的拓展

缺點:索引表需佔用一定的存儲空間。

支持隨機訪問:採用這種邏輯結構的文件,可以根據記錄號直接算出該記錄對應的邏輯地址

4.5 文件存儲空間管理

4.5.1 存儲空間的劃分與初始化

存儲空間的劃分:將物理磁盤劃分爲一個個文件卷

存儲空間的初始化:將各個文件卷劃分爲目錄區、文件區

4.5.2 幾種管理方法

分配磁盤塊:爲一個文件分配連續的存儲空間

回收磁盤塊:當回收某個存儲區時需要由四種情況,回收時需要注意表項的合併問題

空閒表法

空閒表中記錄每個連續空閒區的起始盤塊號、盤塊數

分配時可採用首次適應、最佳適應等策略,回收時注意表項的合併問題

空閒鏈表法

空閒盤塊鏈

以盤塊爲單位組成一條空閒鏈

分配時從連頭異常取出空閒塊,回收時將空閒塊插到鏈尾

空閒盤區鏈

以盤區爲單位組成一條空閒鏈

分配時可採用首次適應、最佳適應等策略;回收時注意相鄰空閒盤區合併的問題

位示圖法

一個二進制位對應一個盤塊。(字號,位號)或(行號,列號)與盤塊號一一對應

成組鏈接法

UNIX採用的策略,適合大型文件系統

4.6 文件的基本操作

4.6.1 創建文件

分配外存空間,創建目錄項

4.6.2 刪除文件

回收外存空間,刪除目錄項

4.6.3 打開文件

將目錄項中的信息複製到內存中的打開文件表中,並將打開文件表的索引返回給用戶

打開文件之後,對文件的操作不再需要每次都查詢目錄,可以根據內存中的打開文件表進行操作

每個進程有最佳的打開文件表,系統中也有一張總的打開文件表

進程打開文件表特有的屬性:讀寫指針、訪問權限

系統打開文件表中特有的屬性:打開計數器

4.6.4 關閉文件

將進程打開文件表中的相應表項刪除

系統打開文件表的打開計時器減1,若打開計數器爲0,則刪除系統表的表項

4.6.5 讀文件

根據讀指針、讀入數據量、內存位置將文件數據從外存讀入內存

4.6.6 寫文件

根據寫指針,寫出數據量、內存位置將文件數據從內存寫入外存

4.7 文件共享

4.7.1 基於索引結點的共享方式(硬鏈接)

  1、各個用戶的目錄項指向同一個索引結點

  2、索引節點需要有鏈接計數count

  3、某用戶想刪除文件時,只是刪除該用戶的目錄項,且count–

  4、只有count==0時才能真正刪除文件數據和索引結點,否則會導致指針懸空

4.7.2 基於符號鏈的共享方式(軟鏈接)

  1、在一個Link型的文件中記錄共享文件的存放路徑

  2、操作系統根據路徑一層層查找目錄,最終找到共享文件

  3、即使軟鏈接指向的共享文件已被刪除,Link型文件依然存在,只是通過Link型文件中的路徑區查找共享文件會失敗

  4、由於用軟鏈接的方式訪問共享文件時要查詢多級目錄,會有多次磁盤I/O,因此用軟鏈接訪問文件的速度要比硬鏈接更慢

4.8 文件保護

4.8.1 口令保護

  1、爲文件設置一個口令,用戶想要訪問文件時需要提供口令,由系統驗證口令是否正確

  2、實現開銷小,但口令一般存放在FCB或索引結點中,因此不太安全

4.8.2 加密保護

  1、用一個密碼對文件加密,用戶想要訪問文件時,需要提供相同的密碼才能正確的解密

  2、安全性高,但加密/解密需要耗費一定的時間

4.8.3 訪問控制

  1、用一個訪問控制表(ACL)記錄各個用戶對文件的訪問權限

  2、對文件的訪問類型可以分爲:讀/寫/執行/刪除等

  3、實現靈活,可以實現複雜的文件保護功能

4.9 文件系統的層次結構

在這裏插入圖片描述
  1、用戶需要通過操作系統提供的接口發出請求——用戶接口

  2、由於用戶提供的是文件的存放路徑,因此需要操作系統一層一層地查找目錄,找到對應的目錄項——文件目錄系統

  3、不同的用戶對文件有不同的操作權限,因此爲了保證安全,需要檢查用戶是否有訪問權限——存取控制模塊(存取控制驗證層)

  4、驗證了用戶的訪問權限之後,需要把用戶提供的記錄號轉變爲對應的邏輯地址——邏輯文件系統與文件信息緩衝區

  5、知道了目標記錄對應的邏輯地址後,還需要轉換稱實際的物理地址——物理文件系統

  6、要刪除這條記錄,必定要對磁盤設備發出請求——設備管理程序模塊

  7、刪除這些記錄後,會有一些盤塊空閒,因此要將這些空閒盤塊回收——輔助分配模塊

4.10 磁盤的結構

在這裏插入圖片描述
4.11 磁盤調度算法

4.11.1 一次磁盤讀寫操作需要的時間

尋道(尋找)時間Ts:在讀/寫數據前,將磁頭移動道指定磁道所花的時間

延遲時間TR:通過旋轉磁道,使磁頭定位道目標扇區所需要的時間

傳輸時間Tt:從磁盤讀出或向磁盤寫入數據所經歷的時間

4.11.2 磁盤調度算法

先來先服務算法(FCFS):根據進程請求訪問磁盤的先後順序進程調度

優點:公平;如果請求訪問的磁道比較集中的話,算法性能還算過得去

缺點:如果有大量進程競爭使用磁盤,請求訪問的磁道很分散,則FCFS在性能上很差,尋道時間長

最短尋找時間優先(SSTF):會優先處理的磁盤是與當前磁頭最近的磁道。可以保證每次的尋道時間最短,但是並不能保證總的尋道時間最短。

優點:性能較好,平均尋道時間短

缺點:可能產生飢餓現象

掃描算法(SCAN):只有磁頭移動道最外冊磁道的時候才能往內移動,移動道最內側磁道的時候才能往外移動

優點:性能較好,平均尋道時間短,不會產生飢餓現象

缺點:只有到達最邊上的磁道時才能改變磁頭移動方向;SCAN算法對於各個位置磁道的響應頻率不平均

LOOK調度算法:如果在磁頭移動方向上已經沒有別的請求,就可以立即改變磁頭移動方向

優點:不需要每次都移動道最外側或最內側才改變磁頭方向,使尋道時間進一步縮短

C-SCAN算法:只有磁頭朝某個特定方向移動時才處理磁道訪問請求,而返回時直接快速移動至起始端而不處理任何請求。

優點:對各個位置磁道的響應頻率很平均

缺點:只有到達最邊上的磁道時才能改變磁頭移動方向。

C-LOOK算法:如果磁頭移動的方向上已經沒有磁道訪問請求,就可以立即讓磁頭返回,並且磁頭只需要返回到有磁道訪問請求的位置

優點:不需要每次都移動到最外側或最內側才改變磁頭方向,使尋道時間進一步縮短

4.12 減少延遲時間的方法

在這裏插入圖片描述
4.13 磁盤的管理

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章