老狗——目錄管理與文件共享

文件控制塊—FCB

  • 爲了能對一個文件進行正確的存取,必須爲文件設置用於描述和控制文件的數據結構,稱之爲“文件控制塊”(FCB)
    文件與文件控制塊一一對應
    記錄文件名及其存放地址、文件的說明和控制信息。(是誰?在哪裏?什麼權?)
    文件管理程序藉助於文件控制塊中的信息對文件施以各種操作。
    把文件控制塊的有序集合稱爲文件目錄, 即一個文件控制塊就是一個目錄項。通常一個文件目錄也被看作是一個文件,稱爲目錄文件。

一. 目錄管理

  • 對文件實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:
    基本信息記錄(FCB,目錄項)
    方便檢索、管理(目錄操作)
  • 目錄管理的要求如下:
    實現“按名存取”;(最基本功能)
    提高對目錄的檢索速度;
    文件共享;
    允許文件重名。

1)FCB內容

在文件控制塊中,通常含有以下三類信息。

  • 基本信息類
    包括文件名,文件物理位置,文件邏輯結構,文件的物理結構。
  • 存取控制信息類
    包括文件主的存取權限,覈准用戶的存取權限和一般用戶的存取權限。
  • 使用信息類
    建立日期和時間、文件上次修改的日期和時間
    當前使用信息:打開該文件的進程數、是否被進程鎖住、是否已修改等。

文件物理位置:
對於連續文件:文件起始塊號;
對於鏈接文件:指向第一個物理塊的指針;
對於索引文件:索引表地址。

關於文件檢索的速度:
文件FCB組成的“目錄”文件存放於磁盤;需要時,要從磁盤將目錄內容調入內存進行檢索和使用。
如果目錄佔用5個盤塊,則至多需啓動5次磁頭讀寫,如何提高檢索速度?

2)索引結點

索引結點的引入

文件目錄佔越大量的盤塊,需進行的磁盤讀寫開銷越大。減少實際檢索的信息量就減少移動磁頭的開銷,提高速度;

目錄一般是按名檢索。而直到找到正確文件前,只關心文件名,不需要其它的文件描述信息,目錄中這部分內容的調入不是必須的。

所以:將文件名、文件具體信息分開,使文件描述信息單獨形成一個索引結點。

索引結點由外存到內存的過程中有不同的形式:

  • 磁盤索引結點
    存放在磁盤上的索引結點。主要包括以下內容:文件主標識符、文件類型、文件存取權限、文件物理地址、文件長度、文件連接計數、文件存取時間。
  • 內存索引結點
    文件被打開後,將磁盤索引結點拷貝到內存索引結點中以便使用。比磁盤索引結點增加了以下內容:索引結點編號、狀態、訪問計數、文件所屬文件系統的邏輯設備號、鏈接指針。

3) 目錄結構

  • 目錄結構的組織,關係到文件系統的存取速度,也關係到文件的共享性和安全性。
  • 組織好文件的目錄,是設計好文件系統的重要環節。
  • 目前常用的目錄結構形式有
    單級目錄
    兩級目錄
    多級目錄
① 單級目錄結構(Single-Level Directory)
  • 最簡單的目錄結構。
    整個文件系統中只建立一張目錄表,每個文件一個目錄項,含有文件相關信息。
  • 每建立一個新文件:
    先檢索所有的目錄項,保證文件名唯一。
    獲得一空白目錄項,填入相關信息,修改狀態位(表明每個目錄項是否空閒)。
    刪除一個文件:
    找到對應目錄項,回收文件所佔用空間
    清除目錄項
  • 優點:簡單、能實現目錄管理的基本功能——按名存取。
  • 缺點:
    文件檢索時需搜遍整個目錄文件,範圍大速度慢。
    不允許重名。名字過多難於記憶,對於多用戶環境重名難以避免。
    不便於實現文件共享(因爲不能重名,不同用戶使用的共享文件必須不同名字,標識哪些用戶共享文件也不方便),一般只適用單機環境。
② 兩級目錄結構( Two-Level Directory )
  • 爲每一個用戶建立一個單獨的用戶文件目錄UFD,UFD由用戶所有文件的文件控制塊組成。
  • 系統建立一個主文件目錄MFD, MFD中每個用戶目錄文件都佔有一個目錄項,其中包括用戶名和指向UFD的指針。

兩級目錄的特點

  • 基本克服了單級目錄的缺點,並具有以下優點:
    提高了檢索目錄的速度。
    在不同的目錄中可重名。
  • 不同用戶還可以使用相同/不同的文件名來訪問系統中的同一個共享文件。
    不提供子目錄操作,還不方便;各用戶之間被完全隔離的話用戶訪問其他用戶文件時,不方便合作。
③ 多級目錄結構
  • 適用於較大的文件系統管理。又稱爲樹狀目錄(tree-like)
  • 在文件數目較多時,便於系統和用戶將文件分散管理。
    層次結構更清晰、提供更靈活的權限管理等
    但目錄級別太多時也會增加路徑檢索層次,增加磁盤訪問時間。

相關名詞:

  • 目錄結構
    主目錄稱爲根目錄,數據文件爲樹葉,其它目錄爲結點。多級目錄縮小檢索範圍提高檢索速度和文件系統的性能。
  • 路徑名
    從根目錄到任何數據文件都只有一條唯一通路。目錄文件名和數據文件名依次用“/”連接起來,即構成數據文件的路徑名。
  • 當前目錄
    爲每個進程設置一個“當前目錄”,又稱“工作目錄”。
    從當前目錄開始,逐級經過中間的目錄文件,最後達到要訪問的數據文件。這一路徑上的目錄和數據文件名用“/”連接成路徑名,稱爲相對路徑名。
    從根開始的路徑名稱爲絕對路徑名

4)目錄查詢技術

  • 用戶要訪問一個已存文件
    目錄數據調入內存;
    按名檢索:系統利用提供的文件名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
    找該文件控制塊
    讀FCB或對應索引結點;
    從文件物理地址換算出文件在磁盤上的物理位置;
    最後通過磁盤驅動程序,將所需文件讀入內存。
  • 目錄查詢方式:線性檢索法和Hash方法。

線性檢索法

  • 又稱爲順序檢索法。
  • 單級目錄中
    用戶提供文件名,順序查找文件目錄。
  • 樹型目錄中
    用戶提供路徑名,如/user/ast/mbox
    對多級目錄進行逐層查找。

*Hash方法

  • 曾介紹的Hash文件。
  • 如果建立了一張Hash索引文件目錄,便可利用Hash方法進行查詢
  • 系統將用戶提供的文件名變換爲文件目錄的索引值,再利用該索引值到目錄中去查找,將顯著的提高檢索速度。
  • 對於使用通配符的文件名系統無法利用Hash法檢索目錄,還是需用線性查找法。

二. 文件共享與保護

1)文件共享

  • 多個用戶共享一份文件,只保留文件的一份副本,節約存儲空間
  • 共享範圍:單機系統/多主機系統/網絡範圍
① 索引結點法
  • 基本FCB法:
    名+詳細信息。
    直接在文件目錄中包含文件的物理地址,該方法實現的共享不適用文件動態變化。一個用戶對文件的修改(如物理塊號增加),對其他用戶不可見,共享文件的FCB信息記錄同步更新困難。
  • 文件名+索引結點指針。
    一個用戶修改指針指向地址裏的內容,指針不變,其他用戶通過指針總能感知索引結點中的最新內容
    索引結點中增加count計數
    主人刪除操作問題:刪,共享用戶訪問錯誤;不刪,計費問題。
② 符號鏈法

創建一個link類型的文件:“文件名+共享文件路徑”(類似快捷方式)

文件主人刪除文件,共享者只會出現找不到文件錯誤。不會發生共享文件刪除後出現懸空指針的情況。

該方法適用於網絡文件共享,但根據路徑檢索共享文件的目標位置增加了訪問開銷,link文件獨佔索引結點也耗費一定的空間。

  • 無論哪種共享,鏈接就對應一個文件,如果遍歷複製整個目錄內的文件,可能會從多條路徑對共享文件進行多次訪問

2)磁盤容錯

SFT,system fault tolerance
  • 防止磁盤故障造成的文件不安全

  • SFT I:磁盤表面故障

    雙目錄、雙文件分配表(空間冗餘)

    寫後讀校驗、熱修復重定向(時間操作冗餘)
    寫入磁盤後再讀回內存做一致性校驗
    熱修復寫過程:從壞道重定向到專區並記錄

  • SFT II:磁盤驅動器、控制器故障
    驅動器故障:磁盤鏡像
    控制器故障:磁盤雙工——並行控制器,分離搜索加快讀取

  • SFT III:高級容錯技術
    雙機熱備份
    雙機互備份
    公用磁盤模式

*數據一致性
  • 一個數據分別存儲到多個文件中,典型的如數據庫
  • 保證數據一致性:
    高可靠存儲器(冗餘保證穩定,磁盤雙工)+ 一致性軟件
  • 概念
    事務:對數據各處保存位置訪問、修改使其維持一致性的一次操作。
    事務記錄:記錄事務運行時數據項修改全部信息的數據結構:事務名、數據項名、舊值、新值。
    恢復算法:利用事務記錄表處理已完成、未完成事務。
    檢查點:每隔一段時間,將內存中的事務記錄表、已修改數據、檢查點輸出到穩定存儲器,
  • 併發控制
  • 重複數據的一致性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章