第八章-文件系統(tǒng)_第1頁
第八章-文件系統(tǒng)_第2頁
第八章-文件系統(tǒng)_第3頁
第八章-文件系統(tǒng)_第4頁
第八章-文件系統(tǒng)_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章

文件系統(tǒng)8.1文件系統(tǒng)的概念8.1文件系統(tǒng)的概念

1、文件系統(tǒng)的引入圖8.1操作系統(tǒng)的軟硬件管理為了實(shí)現(xiàn)透明存取,出現(xiàn)文件系統(tǒng):不必了解文件存放的物理結(jié)構(gòu)、查找方法等與存取介質(zhì)有關(guān)的部分;只需給定一個(gè)文件名,文件系統(tǒng)就會(huì)自動(dòng)完成相對(duì)應(yīng)的有關(guān)操作。文件系統(tǒng)完成任務(wù):對(duì)輔助空間統(tǒng)一管理設(shè)立文件邏輯結(jié)構(gòu),實(shí)現(xiàn)按名存取設(shè)立文件物理結(jié)構(gòu),便于存放、加工信息查找存儲(chǔ)設(shè)備中的文件信息實(shí)現(xiàn)文件的共享和保護(hù)2.文件與文件系統(tǒng)的概念文件:一組賦名的相關(guān)聯(lián)字符流的集合,或者是相關(guān)聯(lián)記錄的集合。類型流式無結(jié)構(gòu):字符流,用于源程序,目標(biāo)程序等。記錄式有結(jié)構(gòu):是一組相關(guān)數(shù)據(jù)項(xiàng)的集合,由N個(gè)字節(jié)組成的具有特定意義的信息單位。關(guān)鍵字能唯一地標(biāo)識(shí)出記錄的基本/組合數(shù)據(jù)項(xiàng)。主要用于信息管理。文件名命名符合標(biāo)識(shí)符的定義。文件系統(tǒng)操作系統(tǒng)中與管理文件有關(guān)的軟件和數(shù)據(jù)。負(fù)責(zé)為用戶建立文件,撤消、讀寫、修改和復(fù)制文件,完成對(duì)文件的按名存取,并進(jìn)行存取控制。文件系統(tǒng)的特點(diǎn)友好的用戶接口,用戶只對(duì)文件進(jìn)行操作,而不管文件結(jié)構(gòu)和存放的物理位置。對(duì)文件按名存取,對(duì)用戶透明。某些文件可以被多個(gè)用戶或進(jìn)程所共享。多使用磁盤等大容量存儲(chǔ)器作為存儲(chǔ)介質(zhì),可存儲(chǔ)大量信息。3.文件的分類按性質(zhì)和用途分類:系統(tǒng)文件:只允許用戶通過系統(tǒng)調(diào)用來執(zhí)行它們,而不允許讀寫和修改。主要由操作系統(tǒng)核心、各種系統(tǒng)應(yīng)用程序和數(shù)據(jù)所組成。庫文件:允許用戶讀取、執(zhí)行,但不允許修改。主要由各種標(biāo)準(zhǔn)子程序庫組成。用戶文件:用戶委托文件系統(tǒng)保存的文件。只由文件的所有者或所有者授權(quán)的用戶才能使用。主要由源程序、目標(biāo)程序、用戶數(shù)據(jù)庫等組成。按組織形式分類普通文件:指組織格式為系統(tǒng)中所規(guī)定的最一般格式的文件,如由字符流組成的文件。目錄文件:由文件的目錄信息構(gòu)成的特殊文件。該文件的內(nèi)容不是各種程序或應(yīng)用數(shù)據(jù),而是用來檢索普通文件的目錄信息。特殊文件:在UNIX系統(tǒng)中,所有的輸入、輸出設(shè)備都被看作特殊文件。在使用形式上與普通文件相同,如查找目錄、存取操作等。但特殊文件的使用和設(shè)備處理程序緊密相連。系統(tǒng)必須把對(duì)特殊文件的操作轉(zhuǎn)入到對(duì)不同的設(shè)備的操作。按信息流向分類輸入文件,輸出文件,輸入輸出文件保護(hù)級(jí)別(存取控制)R,R/W,E(可執(zhí)行),不保護(hù)8.2文件的邏輯結(jié)構(gòu)與存取方法概念:用戶所能觀察和訪問到的文件的數(shù)據(jù)結(jié)構(gòu)組織,獨(dú)立于物理特性,容易檢索和修改。無論是邏輯還是物理結(jié)構(gòu),都會(huì)影響到文件的檢索速度8.2.1邏輯結(jié)構(gòu)用戶可見,可分為兩大類:字符流式的無結(jié)構(gòu)文件記錄式的有結(jié)構(gòu)文件選取文件的邏輯結(jié)構(gòu)應(yīng)遵循的原則當(dāng)用戶對(duì)文件信息進(jìn)行修改時(shí),應(yīng)能盡量減少對(duì)已存儲(chǔ)好的文件信息的變動(dòng)。應(yīng)使文件系統(tǒng)在盡可能短的時(shí)間內(nèi)查找到需要查找的記錄或基本信息單位。應(yīng)使文件信息占據(jù)最小的存儲(chǔ)空間。應(yīng)便于用戶操作。8.2.1邏輯結(jié)構(gòu)字符流的無結(jié)構(gòu)文件:查找基本信息單位,例如某個(gè)單詞比較困難。管理簡單,用戶可以方便地進(jìn)行操作。那些對(duì)基本信息單位操作不多的文件較適于采用字符流的無結(jié)構(gòu)方式,例如,源程序文件、目標(biāo)代碼文件等。記錄式的有結(jié)構(gòu)文件:可把文件中的記錄按各種不同的方式排列,構(gòu)成不同的邏輯結(jié)構(gòu),以使用戶對(duì)文件中的記錄進(jìn)行修改、追加、查找和管理等操作。8.2.1邏輯結(jié)構(gòu)記錄是一個(gè)具有特定意義的信息單位,它由該記錄在文件中的邏輯地址(相對(duì)位置)與記錄名所對(duì)應(yīng)的一組鍵、屬性及其屬性值所組成。圖8.2記錄組成例8.2.1邏輯結(jié)構(gòu)常用的記錄式結(jié)構(gòu):4種(1)連續(xù)結(jié)構(gòu)把記錄按照生成的先后順序連續(xù)排列的邏輯結(jié)構(gòu)。適用性強(qiáng),可用于所有文件,且記錄的排列順序與記錄的內(nèi)容無關(guān)。有利于記錄的追加與變更。缺點(diǎn):搜索性能較差。8.2.1邏輯結(jié)構(gòu)(2)多重結(jié)構(gòu)把記錄按鍵和記錄名排列成行列式結(jié)構(gòu),則一個(gè)包含n個(gè)記錄名、m個(gè)(m≤n)個(gè)鍵的文件構(gòu)成一m*n維行列式。其中,如果第i行和第j列所對(duì)應(yīng)的位置上為1,則表示關(guān)鍵字Ki在記錄Rj中;反之,則表示關(guān)鍵字Ki不在記錄Rj中。另外,同一個(gè)關(guān)鍵字也可以同時(shí)屬于不同的記錄。圖8.3文件的記錄名和關(guān)鍵字構(gòu)成的行列式8.2.1邏輯結(jié)構(gòu)把行列式中那些為零的項(xiàng)去掉,并以鍵Ki為隊(duì)首,以包含鍵Ki的記錄為隊(duì)列元素來構(gòu)成一個(gè)記錄隊(duì)列。對(duì)于一個(gè)有m個(gè)鍵的隊(duì)列來說,這樣的隊(duì)列有m個(gè)。這m個(gè)隊(duì)列構(gòu)成了該文件的多重結(jié)構(gòu)(multi_list)。圖8.4文件的多重結(jié)構(gòu)

(3)轉(zhuǎn)置結(jié)構(gòu)轉(zhuǎn)置結(jié)構(gòu)把含有相同鍵的記錄指針全部指向該鍵,也就是說,把所有與同一鍵對(duì)應(yīng)的記錄的指針連續(xù)地置于目錄中該鍵的位置下。轉(zhuǎn)置結(jié)構(gòu)最適合于給定鍵后的記錄搜索。(4)順序結(jié)構(gòu)給定了順序規(guī)定(例如按字母順序),則把文件中的鍵按規(guī)定的順序排列起來就形成了順序結(jié)構(gòu)文件,如按時(shí)間。圖8.5文件的轉(zhuǎn)置結(jié)構(gòu)

8.2.2存取方法用戶通過對(duì)文件的存取來完成對(duì)文件的修改、追加和搜索等操作。文件的存取是要找到文件內(nèi)容所在的邏輯地址。常用的存取方法有三種:順序存取法:按照文件的邏輯地址順序存取。在記錄式文件中,反映為按記錄的排列順序來存取,例如,若當(dāng)前讀取的記錄為Ri,則下一次讀取的記錄被自動(dòng)地確定為Ri的下一個(gè)相鄰的記錄Ri+1。在無結(jié)構(gòu)的字符流文件中,順序存取反映當(dāng)前讀寫指針的變化。在存取完一段信息之后,讀寫指針自動(dòng)加上或減去該段信息長度,以便指出下次存取時(shí)的位置。8.2.2存取方法隨機(jī)存取法(直接存取):允許用戶根據(jù)記錄的編號(hào)來存取文件的任一記錄,或是根據(jù)存取命令把讀寫指針移到欲讀寫處來讀寫。按關(guān)鍵字存取法:一種用在復(fù)雜文件系統(tǒng),特別是數(shù)據(jù)庫管理系統(tǒng)中的存取方法。文件的存取是根據(jù)給定的關(guān)鍵字或記錄名進(jìn)行的。按關(guān)鍵字存取法首先搜索到要進(jìn)行存取的記錄的邏輯位置,再將其轉(zhuǎn)換到相應(yīng)的物理地址后進(jìn)行存取。8.3文件的物理結(jié)構(gòu)與存儲(chǔ)設(shè)備對(duì)不同種類的文件采用不同的存取方法。無論是哪種存取方法,都是首先搜索到操作對(duì)象記錄或某段字符流信息的邏輯地址,然后,由邏輯地址映射到對(duì)應(yīng)的物理地址,再對(duì)物理地址的有關(guān)信息進(jìn)行操作的。由邏輯地址到物理地址的映射和文件的存儲(chǔ)方式(即文件的物理結(jié)構(gòu))緊密相關(guān)。文件系統(tǒng)采用哪種存取方法和邏輯結(jié)構(gòu),與物理存儲(chǔ)介質(zhì)有關(guān)。8.3.1文件的物理結(jié)構(gòu)文件的存儲(chǔ)設(shè)備通常劃分為若干個(gè)大小相等的物理塊。每塊長為512字節(jié)或1024字節(jié)。為了有效利用存儲(chǔ)設(shè)備和便于系統(tǒng)管理,一般把文件信息也劃分為與物理存儲(chǔ)設(shè)備的物理塊大小相等的邏輯塊。以塊作為分配和傳送信息的基本單位。對(duì)于字符流的無結(jié)構(gòu)文件,每個(gè)物理塊中存放長度相等的文件信息(存儲(chǔ)文件尾部信息的物理塊除外)。對(duì)于記錄式文件,由于記錄長度既可以是固定的,也可以是可變的,而且其長度不一定剛好等于其物理塊的長度,從而給由記錄的邏輯地址到物理地址的變換帶來了額外負(fù)擔(dān)。8.3.1文件的物理結(jié)構(gòu)1.連續(xù)文件(磁盤可采用)一種最簡單的物理文件結(jié)構(gòu),它把一個(gè)在邏輯上連續(xù)的文件信息依次存放到物理塊中。一個(gè)邏輯塊號(hào)為0,1,2,3的文件依次存放在物理塊10,11,12,13中。連續(xù)文件結(jié)構(gòu)

8.3.1文件的物理結(jié)構(gòu)特點(diǎn):簡單順序訪問容易且速度快,因磁頭移動(dòng)距離小。要求連續(xù)空間,一段時(shí)間后需整理磁盤以消除外部碎片。必須事先知道長度,文件不易動(dòng)態(tài)增長和刪除。文件對(duì)應(yīng)目錄項(xiàng)(屬性)中包含:始址、總塊數(shù)、最后一塊字節(jié)數(shù)。8.3.1文件的物理結(jié)構(gòu)2.串聯(lián)文件用非連續(xù)的物理塊來存放文件信息。這些非連續(xù)的物理塊之間沒有順序關(guān)系,其中每個(gè)物理塊設(shè)有一個(gè)指針,指向其后續(xù)連接的另一個(gè)物理塊,使得存放同一文件的物理塊鏈接成一個(gè)串聯(lián)隊(duì)列。文件離散地分配于各盤塊中,以提高外存利用率,文件長度可變,易于增刪。但不適合隨機(jī)存取。對(duì)應(yīng)目錄項(xiàng):鏈表的首指針圖8.9串聯(lián)文件的物理結(jié)構(gòu)8.3.1文件的物理結(jié)構(gòu)隱式鏈接文件目錄表中有start塊號(hào),每塊中有下一塊號(hào)。特點(diǎn):只適合于順序訪問,對(duì)隨機(jī)訪問效率低,可靠性差。簇:包含多個(gè)塊的單位,當(dāng)以它為單位分配并鏈接,可減少訪問時(shí)間,但增大了內(nèi)部碎片

顯式鏈接:把用于鏈接的指針顯式存放在內(nèi)存的一張表中,查找在內(nèi)存中進(jìn)行。8.3.1文件的物理結(jié)構(gòu)3.索引文件要求系統(tǒng)為每個(gè)文件建立一張索引表,表中每一欄目指出文件信息所在的邏輯塊號(hào)和與之對(duì)應(yīng)的物理塊號(hào)。索引表的物理地址則由文件說明信息項(xiàng)給出。既可以滿足文件動(dòng)態(tài)增長的要求,又可以較為方便和迅速地實(shí)現(xiàn)隨機(jī)存取。因?yàn)橛嘘P(guān)邏輯塊號(hào)和物理塊號(hào)的信息全部放在一個(gè)集中的索引表中,而不是分散在各個(gè)物理塊中。圖8.10索引文件示意圖8.3.1文件的物理結(jié)構(gòu)8.3.1文件的物理結(jié)構(gòu)在很多情況下,有的文件很大,文件索引表也就較大。如果索引表的大小超過了一個(gè)物理塊,就必須像處理其他文件的存放那樣決定索引表的物理存放方式,但這不利于索引表的動(dòng)態(tài)增加;索引表也可按串聯(lián)方式存放,但這卻增加了存放索引表的時(shí)間開銷。一種較好的解決辦法是采用間接索引(多重索引),即在索引表所指的物理塊中存放的不是文件信息,而是裝有這些信息的物理塊地址。這樣,如果一個(gè)物理塊可裝下n個(gè)物理塊地址,則經(jīng)過一級(jí)間接索引,可尋址的文件長度將變?yōu)閚*n塊。如果文件長度還是大于n*n塊,還可以進(jìn)行類似的擴(kuò)充,即二級(jí)間接索引。8.3.1文件的物理結(jié)構(gòu)圖8.11多重索引結(jié)構(gòu)

8.3.1文件的物理結(jié)構(gòu)在實(shí)際系統(tǒng)中,總是把索引表的前幾項(xiàng)設(shè)計(jì)成直接尋址方式,也就是這幾項(xiàng)所指的物理塊中存放的是文件信息;而索引表的后幾項(xiàng)設(shè)計(jì)成多重索引,也就是間接尋址方式。8.3.2文件存儲(chǔ)設(shè)備1.順序存取設(shè)備:只有在前面的物理塊被存取訪問過之后,才能存取后續(xù)的物理塊的內(nèi)容。磁帶最典型。為了在存取一個(gè)物理塊時(shí)讓磁帶機(jī)提前加速和不停止在下一個(gè)物理塊的位置上,磁帶的兩相鄰的物理塊之間設(shè)計(jì)有一個(gè)間隙。圖7.12磁帶的結(jié)構(gòu)

8.3.2文件存儲(chǔ)設(shè)備2.直接存取設(shè)備磁盤最典型。允許文件系統(tǒng)直接存取磁盤上的任意物理塊。為了存取一個(gè)特定的物理塊,磁頭將直接移動(dòng)到所要求的位置上,而不需要像順序存取那樣事先存取其他的物理塊。

8.3.2文件存儲(chǔ)設(shè)備由一些磁盤片組成的磁盤組組成。每個(gè)磁盤片對(duì)應(yīng)一個(gè)裝有讀寫磁頭的磁頭臂,磁頭臂上的兩個(gè)讀寫磁頭分別對(duì)磁盤片的上下兩面進(jìn)行讀寫。系統(tǒng)在對(duì)磁盤進(jìn)行初始化時(shí),把每個(gè)磁盤片分割成一些大小相等的扇區(qū)。在磁盤轉(zhuǎn)動(dòng)時(shí)經(jīng)過讀寫磁頭所形成的圓形軌跡稱為磁道。由于磁頭臂可沿半徑方向移動(dòng)。因此,磁盤上有多條磁道。把所有磁盤片的相同磁道稱為一個(gè)柱面,因此,磁盤上每個(gè)物理塊的位置可用柱面號(hào)、磁頭號(hào)和扇區(qū)號(hào)表示,這些地址和物理塊號(hào)一一對(duì)應(yīng)。圖8.13磁盤的結(jié)構(gòu)

8.4文件存儲(chǔ)空間管理文件存儲(chǔ)設(shè)備被分成若干個(gè)大小相等的物理塊,以塊為單位來交換信息。文件存儲(chǔ)空間的管理實(shí)質(zhì)上是空閑塊的組織和管理問題空閑塊的組織;空閑塊的分配;空閑塊的回收等。有3種不同的空閑塊管理方法:空閑文件目錄;空閑塊鏈;位示圖。8.4文件存儲(chǔ)空間管理1空閑文件目錄空閑塊的塊號(hào)統(tǒng)一放在一個(gè)稱為空閑文件目錄的物理塊中。其中每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)由多個(gè)空閑塊構(gòu)成的空閑區(qū),它包括空閑塊個(gè)數(shù)、第一個(gè)空閑塊號(hào)等。系統(tǒng)為某個(gè)文件分配空閑塊時(shí):首先掃描空閑文件目錄項(xiàng),如找到合適的空閑區(qū)項(xiàng),則分配給申請(qǐng)者,并把該項(xiàng)從空白文件目錄中去掉。如果一個(gè)空閑區(qū)項(xiàng)不能滿足申請(qǐng)者要求,則把目錄中另一項(xiàng)分配給申請(qǐng)者。如果一個(gè)空閑區(qū)項(xiàng)所含塊數(shù)超過申請(qǐng)者要求,則為申請(qǐng)者分配了所要的物理塊之后,再修改該表項(xiàng)。當(dāng)一個(gè)文件被刪除,釋放存儲(chǔ)物理塊時(shí),系統(tǒng)把被釋放的塊號(hào)、長度以及第一塊塊號(hào)置入空白目錄文件的新表項(xiàng)中。內(nèi)存管理中的有關(guān)空閑連續(xù)區(qū)分配和釋放算法,只要稍加修改就可用于空閑文件項(xiàng)的分配和回收。適用于連續(xù)文件結(jié)構(gòu)的文件存儲(chǔ)區(qū)的分配與回收。8.4文件存儲(chǔ)空間管理2空閑塊鏈把文件存儲(chǔ)設(shè)備上的所有空閑塊鏈接在一起,當(dāng)申請(qǐng)者需要空閑塊時(shí),分配程序從鏈頭開始摘取所需要的空閑塊,然后調(diào)整鏈?zhǔn)字羔?。?dāng)回收空閑塊時(shí),釋放的空間塊逐個(gè)插入鏈尾上。常用的鏈接方法:按空閑區(qū)大小順序鏈接;按釋放先后順序鏈接;按成組鏈接法。成組鏈接法可被看作空閑塊鏈的鏈接法的擴(kuò)展。8.4文件存儲(chǔ)空間管理2空閑塊鏈成組鏈法首先把文件存儲(chǔ)設(shè)備中的所有空閑塊按50塊劃分為一組。組的劃分為從后往前順次劃分。其中,每組的第一塊用來存放前一組中各塊的塊號(hào)和總塊數(shù)。由于第一組的前面已無其他組存在,因此,第一組的塊數(shù)為49。由于存儲(chǔ)設(shè)備的空間塊不一定正好是50的整倍數(shù),因而最后一組將不足50塊,且由于該組后而已無另外的空閑塊組,所以,該組的物理塊號(hào)與總塊數(shù)只能放在管理文件存儲(chǔ)設(shè)備用的文件資源表中。在成組鏈法對(duì)文件設(shè)備進(jìn)行了上述分組之后,系統(tǒng)可根據(jù)申請(qǐng)者的要求進(jìn)行空閑塊的分配,并在釋放文件時(shí)回收空閑塊。系統(tǒng)初啟時(shí),把文件資源表復(fù)制到內(nèi)存,使文件資源表中放有最后一組空閑塊塊號(hào)與總塊數(shù)的堆棧進(jìn)入內(nèi)存——空閑塊的分配與釋放可在內(nèi)存進(jìn)行,不用每次分配和釋放都啟動(dòng)I/O設(shè)備。用于空閑塊分配與回收的堆棧有棧指針Ptr,Ptr的初值等于該組空閑塊的總塊數(shù)。當(dāng)申請(qǐng)者提出空閑塊要求n時(shí),按后進(jìn)先出的原則,分配程序在取走Ptr所指的塊號(hào)之后,再做Ptr←Ptr-l的操作。這個(gè)過程一直持續(xù)到所要求的n塊都己分配完畢或堆棧中只剩下最后一個(gè)空閑塊的塊號(hào)。當(dāng)堆棧中只剩下最后一個(gè)空閑塊號(hào)時(shí),系統(tǒng)啟動(dòng)設(shè)備管理程序,將該塊中存放的下一組的塊號(hào)與總塊數(shù)讀入內(nèi)存,之后將該塊分配給申請(qǐng)者。然后,系統(tǒng)重新設(shè)置Ptr指針,并繼續(xù)為申請(qǐng)者進(jìn)程分配空閑塊。文件存儲(chǔ)設(shè)備的最后一個(gè)空閑塊中設(shè)置有尾部標(biāo)識(shí),以指示空閑塊分配完畢。刪除文件時(shí),回收程序回收相應(yīng)的物理塊。在回收時(shí),回收程序先做Ptr←Ptr+1操作,然后把回收的物理塊號(hào)放入當(dāng)前指針Ptr所指的位置。如果Ptr等于50,則表示該組已經(jīng)回收結(jié)束。此時(shí),如果還有新的物理塊需要回收的話,回收該塊并啟動(dòng)I/O設(shè)備管理程序,把回收的50個(gè)塊號(hào)與塊數(shù)寫入新回收的塊中。然后,將Ptr重新置1,另起一個(gè)新組。對(duì)空閑塊的分配和釋放必須寫互斥進(jìn)行,否則將會(huì)發(fā)生數(shù)據(jù)混亂。成組鏈接法(UNIX)空閑盤塊的組織??臻e盤塊號(hào)棧:空閑盤塊的分配與回收分配:到s.free(0)時(shí),由于該塊內(nèi)容為下一組的盤號(hào),將內(nèi)容加入空閑盤塊號(hào)棧中,再分配?;厥眨旱絪.free(100)時(shí),將空閑盤塊棧中內(nèi)容放入新到的回收塊中,將該回收塊作為棧底。圖8.14成組鏈法的組織

3位示圖法系統(tǒng)首先從內(nèi)存中劃出若干個(gè)字節(jié),為每個(gè)文件存儲(chǔ)設(shè)備建立一張位示圖。這張位示圖反映每個(gè)文件存儲(chǔ)設(shè)備的使用情況。在位示圖中,每個(gè)文件存儲(chǔ)設(shè)備的物理塊都對(duì)應(yīng)一個(gè)比特位。如果該位為“0”

,則表示所對(duì)應(yīng)的塊是空閑塊;如果該位為“1”

,則表示所對(duì)應(yīng)的塊已被分配出去。8.5文件目錄管理把文件名和對(duì)該文件實(shí)施控制管理的控制管理信息稱為該文件的文件說明;每個(gè)文件說明按一定的邏輯結(jié)構(gòu)存放在物理存儲(chǔ)塊的一個(gè)表目中。利用文件說明信息,可以完成對(duì)文件的創(chuàng)建、檢索及維護(hù)。因此,把一個(gè)文件的文件說明信息稱為該文件的目錄。對(duì)文件目錄的管理就是對(duì)文件說明信息的管理。功能: 按名存?。惶岣邫z索速度;文件共享;允許文件重名。8.5.1文件的組成一個(gè)文件包括:文件說明、文件體。文件體指文件本身的信息,它可能是記錄式文件或字符流式文件。文件說明也叫文件控制塊FCB。它至少包括:文件名、與文件名相對(duì)應(yīng)的文件內(nèi)部標(biāo)識(shí)、文件信息在文件存儲(chǔ)設(shè)備上第一個(gè)物理塊的地址。另外,根據(jù)系統(tǒng)要求不同,它還包括關(guān)于文件邏輯結(jié)構(gòu)、物理結(jié)構(gòu)、存取控制和管理信息(訪問時(shí)間等)等。文件說明組成目錄文件。文件系統(tǒng)利用目錄文件完成按名存取和對(duì)文件信息的共享與保護(hù)。8.5.2文件目錄單級(jí)目錄結(jié)構(gòu)文件系統(tǒng)為存儲(chǔ)設(shè)備的所有文件建立一張目錄表,每個(gè)文件在其中占有一項(xiàng)用來存放文件說明信息。該目錄表存放在存儲(chǔ)設(shè)備的某固定區(qū)域。在系統(tǒng)初啟時(shí)或需要時(shí),系統(tǒng)將其調(diào)入內(nèi)存(或部分調(diào)入內(nèi)存)。文件系統(tǒng)通過該表提供的信息,對(duì)文件進(jìn)行創(chuàng)建、搜索、刪除等操作。例如,當(dāng)建立一個(gè)文件時(shí),首先從該表中申請(qǐng)一項(xiàng),并存入相關(guān)說明信息;當(dāng)刪除一個(gè)文件時(shí),就從該表中刪去一項(xiàng)。利用單級(jí)目錄,就可實(shí)現(xiàn)對(duì)文件系統(tǒng)空間的自動(dòng)管理和按名存取。8.5.2文件目錄例如,當(dāng)用戶進(jìn)程要求對(duì)某個(gè)文件進(jìn)行讀寫操作時(shí),他進(jìn)行系統(tǒng)調(diào)用,進(jìn)入文件系統(tǒng),此時(shí),CPU控制權(quán)在文件系統(tǒng)手中。文件系統(tǒng)首先根據(jù)給定的文件名,搜索單級(jí)文件目錄表,查找文件信息的物理塊號(hào)。如果搜索不到對(duì)應(yīng)文件名,則失敗返回(讀操作時(shí)),或由空閑塊分配程序進(jìn)行空閑塊分配后,再修改單級(jí)目錄表。如果已找到對(duì)應(yīng)的第一個(gè)物理塊塊號(hào),則根據(jù)文件對(duì)應(yīng)的物理結(jié)構(gòu)信息,計(jì)算出所要讀寫的信息塊物理塊塊號(hào),然后把CPU控制權(quán)交給設(shè)備管理系統(tǒng),啟動(dòng)設(shè)備進(jìn)行讀寫操作。特點(diǎn):簡單;搜索速度慢/不允許重名/不便于共享(不能用不同名字訪問同一文件)。圖8.15單級(jí)目錄的讀寫處理過程

二級(jí)目錄結(jié)構(gòu)

各個(gè)文件的說明信息被組織成目錄文件,以用戶為單位把各自的文件說明劃分為不同的組。不同組名的相關(guān)存取控制信息存放在主目錄(MFD)的目錄項(xiàng)中。二級(jí)目錄結(jié)構(gòu)

用戶文件的文件說明所組成的目錄文件被稱為用戶文件目錄(UFD)。MFD和UFD形成二級(jí)目錄。當(dāng)用戶要對(duì)一個(gè)文件進(jìn)行存取操作或創(chuàng)建、刪除一個(gè)文件時(shí),首先從MFD找到對(duì)應(yīng)的目錄名,并從用戶名查找到該用戶的UFD。余下操作與單級(jí)目錄時(shí)相同。二級(jí)目錄結(jié)構(gòu)

特點(diǎn):提高了搜索速度:如:n個(gè)用戶,每用戶最多m個(gè)文件,則最壞速度為n+m,而非n*m;可重名;可共享(但不方便)。把一級(jí)目錄的層次關(guān)系加以推廣,就形成了多級(jí)目錄。在多級(jí)目錄結(jié)構(gòu)中,除了最低一級(jí)的物理塊中裝有文件信息外,其他每一級(jí)目錄中存放的都是下一級(jí)目錄或文件的說明信息。由此形成層次關(guān)系,最高層為根目錄,最低層為文件。多級(jí)目錄構(gòu)成樹形結(jié)構(gòu)。樹形結(jié)構(gòu)多級(jí)目錄結(jié)構(gòu)的特點(diǎn):層次清楚,不同性質(zhì)、不同用戶的文件可以構(gòu)成不同的子樹,便于管理。不同層次、不同用戶的文件可以被賦予不同的存取權(quán)限,有利于文件的保護(hù)。解決了文件重名問題查找搜索速度快8.5.3便于共享的文件目錄從系統(tǒng)管理的觀點(diǎn)看,有三種方法可以實(shí)現(xiàn)文件共享。即:繞道法:要求每個(gè)用戶處在當(dāng)前目錄下工作,用戶對(duì)所有文件的訪問都是相對(duì)于當(dāng)前目錄進(jìn)行的。用戶文件的固有名(為了訪問某個(gè)文件而必須訪問的各個(gè)目錄和文件的目錄名與文件名的順序連接稱為固有名)是由當(dāng)前目錄到信息文件通路上所有各級(jí)目錄的目錄名加上該信息文件的符號(hào)名組成。繞道法需要用戶指定所要共享文件的邏輯位置或到達(dá)被共享文件的路徑。繞道法要繞彎路訪問多級(jí)目錄,搜索效率不高。(2)鏈接法:為了提高共享其他目錄中文件的速度,另一種共享的辦法是在相應(yīng)目錄表之間進(jìn)行鏈接。即將一個(gè)目錄中的鏈指針直接指向被共享文件所在的目錄。鏈接法仍然需要用戶指定被共享的文件和被鏈接的目錄。(3)基本文件目錄表BFD?;疚募夸洷鞡FD:把所有文件目錄的內(nèi)容分成兩部分:一部分包括文件的結(jié)構(gòu)信息、物理塊號(hào)、存取控制和管理信息等,并由系統(tǒng)賦予唯一的內(nèi)部標(biāo)識(shí)符來標(biāo)識(shí);這部分稱為“基本文件目錄表(BFD)”。BFD中存放除了文件名之外的文件說明信息和文件的內(nèi)部標(biāo)識(shí)符。另一部分由用戶給出的符號(hào)名和系統(tǒng)賦給文件說明信息的內(nèi)部標(biāo)識(shí)符組成。這部分稱為“符號(hào)文件目錄表(SFD)”。SFD中存放文件名和文件內(nèi)部標(biāo)識(shí)符。系統(tǒng)通常預(yù)先規(guī)定:賦予基本文件目錄、空閑文件目錄、主目錄MFD的符號(hào)文件目錄固定不變的唯一標(biāo)識(shí)符,在圖中它們分別為0,1,2。用戶Wang和Zhang共享標(biāo)識(shí)符為6的文件,對(duì)于系統(tǒng)來說,標(biāo)識(shí)符6指向同一個(gè)文件;而對(duì)Wang和Zhang兩用戶來說,則對(duì)應(yīng)于不同的文件名b.c和f.c。(3)基本文件目錄表BFD圖8.19采用基本文件目錄的多級(jí)目錄結(jié)構(gòu)

8.5.4目錄管理打開文件——把存儲(chǔ)設(shè)備上的目錄文件復(fù)制到內(nèi)存;關(guān)閉文件——?jiǎng)h除文件的內(nèi)存副本。對(duì)于按BFD和SFD方式排列的多級(jí)文件目錄,系統(tǒng)按以下方式打開一個(gè)文件。8.5.4目錄管理(1)把主目錄MFD中的相應(yīng)表目,也就是與待打開文件相聯(lián)系的有關(guān)表目復(fù)制到內(nèi)存。例如,若準(zhǔn)備打開圖中的文件a.c,則將MFD中的第一項(xiàng)(Wang)復(fù)制到內(nèi)存。8.5.4目錄管理(2)根據(jù)(1)所復(fù)制得到的標(biāo)識(shí)符,再復(fù)制此標(biāo)識(shí)符所指明的基本文件目錄表BFD的有關(guān)表目。例如圖中id=3的表目項(xiàng)。這個(gè)表目中包括有存取控制信息、結(jié)構(gòu)信息以及下級(jí)目錄的物理塊號(hào)等。(3)根據(jù)(2)所得到的子目錄說明信息搜索SFD,以找到與待打開文件相對(duì)應(yīng)的目錄表項(xiàng)。如果找到的表目仍然是子目錄名,則系統(tǒng)將根據(jù)其對(duì)應(yīng)的標(biāo)識(shí)符id,繼續(xù)上述復(fù)制過程,直到所找到的表目是待打開的文件名。例如在圖中文件名a.c。(4)根據(jù)(3)所搜索到的文件名所對(duì)應(yīng)的標(biāo)識(shí)符id,把相應(yīng)的BFD的表項(xiàng)復(fù)制到內(nèi)存。這樣,待打開文件的說明信息就巳復(fù)制到了內(nèi)存中,系統(tǒng)可得到文件的有關(guān)物理塊號(hào),對(duì)文件進(jìn)行操作。把內(nèi)存中存放活動(dòng)文件的SFD表目的表稱為活動(dòng)名字表,這個(gè)表每個(gè)用戶一張。另外,把內(nèi)存中存放活動(dòng)文件的BFD表目的表稱為活動(dòng)文件表,這個(gè)表整個(gè)系統(tǒng)一張。

8.6文件存取控制文件系統(tǒng)的存取控制部分應(yīng)做到:(1)對(duì)于擁有讀、寫或執(zhí)行權(quán)限的用戶,應(yīng)讓其對(duì)文件進(jìn)行相應(yīng)的操作。(2)對(duì)于沒有讀、寫或執(zhí)行權(quán)限的用戶,應(yīng)禁止他們對(duì)文件進(jìn)行相應(yīng)的操作。(3)應(yīng)防止一個(gè)用戶冒充其他用戶對(duì)文件進(jìn)行存取。(4)應(yīng)防止擁有存取權(quán)限的用戶誤用文件。

存取控制驗(yàn)證模塊這些功能由存取控制驗(yàn)證模塊提供。分三步驗(yàn)證用戶的存取操作。(1)審定用戶的存取權(quán)限。(2)比較用戶權(quán)限和本次存取要求是否一致。(3)將存取要求和被訪問文件的保密性比較,看是否有沖突。可有下述4個(gè)方式來驗(yàn)證用戶的存取操作,它們是:(1)存取控制矩陣; (2)存取控制表;(3)口令;(4)密碼術(shù)。

1.存取控制矩陣存取控制矩陣方式以一個(gè)二維矩陣來進(jìn)行存取控制。二維矩陣的一維是所有的用戶,另一維是所有的文件。對(duì)應(yīng)的矩陣元素則是用戶對(duì)文件的存取控制權(quán),包括讀R,寫W,和執(zhí)行E。圖8.20存取控制矩陣2.存取控制表存取控制表以文件為單位,把用戶按某種關(guān)系畫分為若干組,同時(shí)規(guī)定每組的存取權(quán)限。這樣,所有用戶組對(duì)文件權(quán)限的集合就形成了該文件的存取控制表。

圖8.21存取控制表

每個(gè)文件都有一張存取控制表。在實(shí)現(xiàn)時(shí),該表存放在BFD的有關(guān)表目中。文件被打開時(shí),由于存取控制表也被復(fù)制到了內(nèi)存中,因此,存取控制驗(yàn)證能高效進(jìn)行。3.口令方式口令方式有兩種。一種是當(dāng)用戶進(jìn)入系統(tǒng),為建立終端進(jìn)程時(shí)獲得系統(tǒng)使用權(quán)的口令。另一種口令方式是,每個(gè)用戶在創(chuàng)建文件時(shí),為每一個(gè)創(chuàng)建的文件設(shè)置一個(gè)口令,且將其置于文件說明中。4.密碼方式密碼方式在用戶創(chuàng)建源文件并將其寫入存儲(chǔ)設(shè)備時(shí)對(duì)文件進(jìn)行編碼加密,在讀出文件時(shí)對(duì)其進(jìn)行譯碼解密。

文件的加密和解密都需要用戶提供一個(gè)代碼鍵(KEY)。加密程序根據(jù)這個(gè)KEY對(duì)用戶文件進(jìn)行編碼變換,然后寫入存儲(chǔ)設(shè)備。讀取文件時(shí),只有用戶給定的代碼鍵與加密時(shí)的代碼鍵相一致時(shí),解密程序才能對(duì)加密文件進(jìn)行解密,將其還原為源文件。圖8.22加密解密過程

8.7文件的使用文件系統(tǒng)以系統(tǒng)調(diào)用方式或命令方式為用戶提供下列4類服務(wù)。設(shè)置和修改用戶對(duì)文件的存取權(quán)限的服務(wù)。建立、改變和刪除目錄的服務(wù)。文件共享、設(shè)置訪問路徑的服務(wù)。創(chuàng)建、打開、讀寫、關(guān)閉,撤銷文件的服務(wù)。這些服務(wù)的調(diào)用名和參數(shù)都因系統(tǒng)不同而異。例如在UNIX系統(tǒng)中,chmod命令可用來改變一個(gè)或多個(gè)文件或目錄的讀寫控制模式??稍赨NIX環(huán)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論