文件控制塊—FCB
為了能對一個文件進行正確的存取,必須為文件設置用于描述和控制文件的數據結構,稱之為“文件控制塊”(FCB)
文件與文件控制塊一一對應
記錄文件名及其存放地址、文件的說明和控制信息。(是誰?在哪里?什么權?)
文件管理程序借助于文件控制塊中的信息對文件施以各種操作。
? 把文件控制塊的有序集合稱為文件目錄,即一個文件控制塊就是一個目錄項。通常一個文件目錄也被看作是一個文件,稱為目錄文件。
目錄管理
對文件實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:
1.基本信息記錄(FCB,目錄項)
2.方便檢索、管理(目錄操作)
目錄管理的要求如下:
實現“按名存取”;(最基本功能)
提高對目錄的檢索速度;
文件共享;
允許文件重名。
1)FCB內容
在文件控制塊中,通常含有以下三類信息。
1.基本信息類
包括文件名,文件物理位置,文件邏輯結構,文件的物理結構。
2.存取控制信息類
包括文件主的存取權限,核準用戶的存取權限和一般用戶的存取權限。
3.使用信息類
建立日期和時間、文件上次修改的日期和時間
當前使用信息:打開該文件的進程數、是否被進程鎖住、是否已修改等。
2)索引結點
索引結點的引入
文件目錄占越大量的盤塊,需進行的磁盤讀寫開銷越大。減少實際檢索的信息量就減少移動磁頭的開銷,提高速度;
目錄一般是按名檢索。而直到找到正確文件前,只關心文件名,不需要其它的文件描述信息,目錄中這部分內容的調入不是必須的。
所以:將文件名、文件具體信息分開,使文件描述信息單獨形成一個索引結點。
Unix為例,
目錄項簡化為16B:
文件名+索引結點指針
0? 13? 14? 15
索引結點由外存到內存的過程中有不同的形式:
磁盤索引結點
存放在磁盤上的索引結點。主要包括以下內容:文件主標識符、文件類型、文件存取權限、文件物理地址、文件長度、文件連接計數、文件存取時間。
內存索引結點
文件被打開后,將磁盤索引結點拷貝到內存索引結點中以便使用。比磁盤索引結點增加了以下內容:索引結點編號、狀態、訪問計數、文件所屬文件系統的邏輯設備號、鏈接指針。
3)目錄結構
目錄結構的組織,關系到文件系統的存取速度,也關系到文件的共享性和安全性。
組織好文件的目錄,是設計好文件系統的重要環節。
目前常用的目錄結構形式有
單級目錄
兩級目錄
多級目錄
①單級目錄結構(Single-Level Directory)
最簡單的目錄結構。
整個文件系統中只建立一張目錄表,每個文件一個目錄項,含有文件相關信息。
每建立一個新文件:
先檢索所有的目錄項,保證文件名唯一。
獲得一空白目錄項,填入相關信息,修改狀態位(表明每個目錄項是否空閑)。
刪除一個文件:
找到對應目錄項,回收文件所占用空間
清除目錄項
優點:簡單、能實現目錄管理的基本功能——按名存取。
缺點:
1.文件檢索時需搜遍整個目錄文件,范圍大速度慢。
2.不允許重名。名字過多難于記憶,對于多用戶環境重名難以避免。
3.不便于實現文件共享(因為不能重名,不同用戶使用的共享文件必須不同名字,標識哪些用戶共享文件也不方便),一般只適用單機環境。
②兩級目錄結構(Two-Level Directory )
為每一個用戶建立一個單獨的用戶文件目錄UFD,UFD由用戶所有文件的文件控制塊組成。
系統建立一個主文件目錄MFD, MFD中每個用戶目錄文件都占有一個目錄項,其中包括用戶名和指向UFD的指針。
兩級目錄的特點
基本克服了單級目錄的缺點,并具有以下優點:
1.提高了檢索目錄的速度。
2.在不同的目錄中可重名。
3.不同用戶還可以使用相同/不同的文件名來訪問系統中的同一個共享文件。
不提供子目錄操作,還不方便;各用戶之間被完全隔離的話用戶訪問其他用戶文件時,不方便合作。
③多級目錄結構
適用于較大的文件系統管理。又稱為樹狀目錄(tree-like)
在文件數目較多時,便于系統和用戶將文件分散管理。
層次結構更清晰、提供更靈活的權限管理等
但目錄級別太多時也會增加路徑檢索層次,增加磁盤訪問時間。
相關名詞:
目錄結構
主目錄稱為根目錄,數據文件為樹葉,其它目錄為結點。多級目錄縮小檢索范圍提高檢索速度和文件系統的性能。
路徑名
從根目錄到任何數據文件都只有一條唯一通路。目錄文件名和數據文件名依次用“/”連接起來,即構成數據文件的路徑名。
當前目錄
為每個進程設置一個“當前目錄”,又稱“工作目錄”。
從當前目錄開始,逐級經過中間的目錄文件,最后達到要訪問的數據文件。這一路徑上的目錄和數據文件名用“/”連接成路徑名,稱為相對路徑名。
從根開始的路徑名稱為絕對路徑名
4)目錄查詢技術
用戶要訪問一個已存文件
目錄數據調入內存;
按名檢索:系統利用提供的文件名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
找該文件控制塊
讀FCB或對應索引結點;
從文件物理地址換算出文件在磁盤上的物理位置;
最后通過磁盤驅動程序,將所需文件讀入內存。
目錄查詢方式:線性檢索法和Hash方法。
線性檢索法
又稱為順序檢索法。
單級目錄中
用戶提供文件名,順序查找文件目錄。
樹型目錄中
用戶提供路徑名,如/user/ast/mbox
對多級目錄進行逐層查找。
文件共享與保護
1)文件共享
多個用戶共享一份文件,只保留文件的一份副本,節約存儲空間
共享范圍:單機系統/多主機系統/網絡范圍
20世紀六七十年代,出現了若干文件早期共享方法,繞彎路法、連訪法等,逐漸發展為現代一些共享方式
索引結點
符號鏈
①索引結點法
基本FCB法:
名+詳細信息。
直接在文件目錄中包含文件的物理地址,該方法實現的共享不適用文件動態變化。一個用戶對文件的修改(如物理塊號增加),對其他用戶不可見,共享文件的FCB信息記錄同步更新困難。
文件名+索引結點指針。
一個用戶修改指針指向地址里的內容,指針不變,其他用戶通過指針總能感知索引結點中的最新內容
索引結點中增加count計數
主人刪除操作問題:
刪,共享用戶訪問錯誤;不刪,計費問題。
②符號鏈法
創建一個link類型的文件:“文件名+共享文件路徑”(類似快捷方式)
文件主人刪除文件,共享者只會出現找不到文件錯誤。不會發生共享文件刪除后出現懸空指針的情況。
該方法適用于網絡文件共享,但根據路徑檢索共享文件的目標位置增加了訪問開銷,link文件獨占索引結點也耗費一定的空間。
無論哪種共享,鏈接就對應一個文件,如果遍歷復制整個目錄內的文件,可能會從多條路徑對共享文件進行多次訪問
2)磁盤容錯
SFT,system fault tolerance
防止磁盤故障造成的文件不安全
SFT I:磁盤表面故障
雙目錄、雙文件分配表(空間冗余)
寫后讀校驗、熱修復重定向(時間操作冗余)
寫入磁盤后再讀回內存做一致性校驗
熱修復寫過程:從壞道重定向到專區并記錄
SFT II:磁盤驅動器、控制器故障
驅動器故障:磁盤鏡像
控制器故障:磁盤雙工——并行控制器,分離搜索加快讀取
SFT III:高級容錯技術
雙機熱備份
雙機互備份
公用磁盤模式