文件控制塊—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)。
索引結(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í)目錄
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方法。
*Hash方法
曾介紹的Hash文件。
如果建立了一張Hash索引文件目錄,便可利用Hash方法進(jìn)行查詢
系統(tǒng)將用戶提供的文件名變換為文件目錄的索引值,再利用該索引值到目錄中去查找,將顯著的提高檢索速度。
對(duì)于使用通配符的文件名系統(tǒng)無法利用Hash法檢索目錄,還是需用線性查找法。
6、文件共享與保護(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)器故障:磁盤鏡像
控制器故障:磁盤雙工——并行控制器,分離搜索加快讀取