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