檔案目錄(MOOC)

weixin_33807284發表於2018-12-21

1.知識總覽

13629684-1076c5da6c5d39ce.png

2.檔案控制塊 (FCB file control block)

13629684-ddd992bd41bf8278.png
  • FCB的有序集合稱為“檔案目錄”,一個FCB就是一個檔案目錄項。

  • FCB中包含了檔案的基本資訊(檔名、實體地址、邏輯結構、物理結構等),存取控制資訊(是否可讀/可寫、使用者訪問許可權等),使用資訊(如檔案的建立時間、修改時間等)。

  • 最重要最基本的是檔名,檔案存放的實體地址。

  • FCB實現了檔名和檔案之間的對映。使使用者(使用者程式)可以實現“按名存取”。

3.目錄操作

  • 搜尋:當使用者要使用一個檔案時,系統要根據檔名搜尋目錄,找到該檔案對應的目錄項。

  • 建立檔案:建立一個新檔案時,需要在其所屬的目錄中增加一個目錄項。

  • 刪除檔案:當刪除一個檔案時,需要在目錄中刪除相應的目錄項。

  • 顯示目錄:使用者可以請求顯示目錄的內容,如顯示該目錄中的所有檔案及相應屬性。

  • 修改目錄:某些檔案屬性儲存在目錄中,因此這些屬性變化時需要修改相應的目錄項(如:檔案重新命名)。

4.目錄結構

  • 4.1單級目錄結構

  • 早期的作業系統並不支援多級目錄,整個系統中只建立一張目錄表,每個檔案佔一個目錄項。

13629684-573c7d7018fac193.png
  • 單級目錄實現了按名存取,但是不允許檔案重名。在建立一個新檔案時,需要先檢查目錄表中有沒有重名檔案,確定不重名後才能允許建立檔案,並將新檔案對應的目錄項插入目錄表中。單級目錄結構不適用於多使用者作業系統。
  • 4.2兩級目錄結構

  • 早期的多使用者作業系統,採用兩級目錄。分為主檔案目錄(MFD,Master File Directory)和使用者檔案目錄(UFD,User File Directory)。

13629684-5a217c2e4a2dc91c.png
  • 兩級目錄結構允許不同使用者的檔案重名,也可以在目錄上實現訪問限制(檢查此時登陸的使用者名稱是否匹配)。但是兩級目錄結構依然缺乏靈活性,使用者不能對自己的檔案進行分類。
  • 4.3多級目錄結構(樹形目錄結構)

13629684-0c65998c6b434ab5.png
  • 使用者或使用者程式要訪問某個檔案時要用檔案路徑名識別符號檔案,檔案路徑名是個字串。各級目錄之間用“/”隔開。從根目錄出發的路徑稱為絕對路徑。

  • 系統會根據絕對路徑一層層地找到下一級目錄。

  • 很多時候,使用者會連續訪問同一目錄內地多個檔案。如果每次都從根目錄開始查詢,則效率很低下。可以設定一個“當前目錄”。比如,當前開啟了“照片”的目錄檔案,即“照片”目錄表已調入記憶體,則可以把其設定為“當前目錄”。當使用者想要訪問當前目錄下的某個檔案時,即可以使用從當前目錄出發的相對路徑。

  • 在Linux中,“.”表示當前目錄。

  • 4.4無環圖目錄

  • 樹形目錄可以很方便地對檔案進行分類,層次結構清晰,也能夠更有效地進行檔案地管理和保護。但是,樹形結構不便於實現檔案共享。為此,進一步提出了無環圖目錄結構。

13629684-30e014eff0555449.png
  • 在樹形目錄結構地基礎上,增加一些指向同一節點的有向邊,使整個目錄成為一個有向無環圖。可以更方便地實現多個使用者間的檔案共享。

  • 可以用不同的檔名指向同一個檔案,甚至指向同一個目錄(共享同一目錄下的所有內容)。需要為每個共享結點設定一個共享計數器,用於記錄此時有多少個地方在共享該結點。使用者提出刪除結點的請求時,只是刪除該使用者的FCB、並使共享計數器減1,並不會直接刪除共享節點。

  • 注意:共享檔案不同於複製檔案。在共享檔案中,由於各使用者指向的是同一個檔案,因此只要其中一個使用者修改了檔案資料,那麼所有的使用者都可以看到檔案資料的變化。

5.索引節點(FCB的改進)

13629684-03832da6acc70765.png
13629684-e9cd10e86a33cf0e.png
  • 索引節點包含了檔名之外的檔案描述資訊。

  • 當找到檔名對應的目錄項時,才需要將索引節點調入記憶體,索引節點中記錄了檔案的各種資訊,包括檔案在外存中存放的位置。

  • 存放在外村中的索引節點稱為磁碟索引節點,當索引節點放入記憶體後稱為記憶體索引節點。記憶體索引節點需要增加一些資訊,例如檔案是否被修改,此時有幾個程式正在訪問該檔案等。

6.總結

13629684-e97bc4750b7bf5c3.png

相關文章