文件系統(tǒng)必須完成的工作
文件存儲(chǔ)空間管理:在輔存上分配、回收、調(diào)整存儲(chǔ)區(qū)
邏輯文件管理:用戶可見的文件邏輯結(jié)構(gòu),可實(shí)現(xiàn)按名存取
物理文件管理:實(shí)現(xiàn)邏輯文件到物理文件的轉(zhuǎn)換,文件在輔存上的物理結(jié)構(gòu)
文件目錄管理:對(duì)存儲(chǔ)設(shè)備上的文件信息可以進(jìn)行查找
文件共享和安全管理
文件具有兩種解釋
文件是具有標(biāo)識(shí)符的相關(guān)聯(lián)字符流的集合(無結(jié)構(gòu)的),常用操作系統(tǒng)都將文件視為這種形式
文件是具有標(biāo)識(shí)符的相關(guān)聯(lián)記錄的集合(記錄是有意義的信息單位),數(shù)據(jù)庫系統(tǒng)常使用這種形式
文件系統(tǒng)是操作系統(tǒng)中管理文件的部分,負(fù)責(zé)為用戶建立、撤銷、讀寫、修改與復(fù)制文件,完成文件的按名存取與訪問控制
文件的分類(按性質(zhì)和用途)
系統(tǒng)文件:用戶不能讀寫與修改,只能通過系統(tǒng)調(diào)用使用之
庫文件:用戶可以讀取和執(zhí)行,但不能修改,是一些標(biāo)準(zhǔn)子程序庫
用戶文件:用戶委托系統(tǒng)保存的文件,所有者和被授權(quán)者才能使用
文件的分類(按組織形式)
普通文件:一般格式的文件
目錄文件:記錄著文件的目錄信息,其中沒有程序和數(shù)據(jù),用于檢索普通文件
特殊文件:例如UNIX系統(tǒng)中將設(shè)備都視為特殊文件
記錄式文件中保存著一條條記錄,記錄是具有特定意義的信息單位。記錄位于文件中的某一邏輯地址處,由與記錄名對(duì)應(yīng)的一組關(guān)鍵字、屬性、屬性值組成
一個(gè)記錄式結(jié)構(gòu)的文件中包含很多記錄,這些記錄一般有以下幾種組織方式
連續(xù)結(jié)構(gòu)
即將記錄按生成的先后順序,連續(xù)排列,這種結(jié)構(gòu)也可以用于無結(jié)構(gòu)文件的組織(將每個(gè)字節(jié)視為一個(gè)記錄)
便于追加與變更,但不利于搜索
多重結(jié)構(gòu)
將“每個(gè)關(guān)鍵字存在于各記錄中的情況”存儲(chǔ)下來,可以使用隊(duì)列來存儲(chǔ),下圖是有m個(gè)關(guān)鍵字的存儲(chǔ)例子, K 1 , K 2 , … , K m K_1,K_2,\dots,K_m K1?,K2?,…,Km?為各記錄中關(guān)鍵字的集合, R i , R x R_i,R_x Ri?,Rx?等是各記錄
轉(zhuǎn)置結(jié)構(gòu)
將指向關(guān)鍵字相同的記錄的指針連續(xù)排放,如此便于查找關(guān)鍵字相同的某一特定記錄
順序結(jié)構(gòu)
按某種優(yōu)先級(jí)或排序規(guī)則存放各記錄,例如按字典序、按時(shí)間序等構(gòu)成順序結(jié)構(gòu)文件
文件存取的目的是找到文件內(nèi)容所在的邏輯地址,一般有三種存取方法
順序存取
即按文件的邏輯地址順序存取
在記錄型文件中,按記錄排列順序存取,下一次訪問的記錄為當(dāng)前訪問記錄的下一條
在無結(jié)構(gòu)字符流文件中,讀寫指針在存取完一段后,會(huì)自動(dòng)后移/前移該段的長度
隨機(jī)存取
也稱為直接存取,可以根據(jù)記錄編號(hào)直接存取某記錄,或是直接將讀寫指針移到目標(biāo)位置進(jìn)行存取
按關(guān)鍵字存取
多用在數(shù)據(jù)庫管理系統(tǒng)中,在存取時(shí)需要先根據(jù)關(guān)鍵字或記錄名搜索到目標(biāo)的邏輯位置,再進(jìn)行存取
此處的搜索一般分為兩步進(jìn)行:關(guān)鍵字搜索和記錄搜索。關(guān)鍵字搜索確認(rèn)該關(guān)鍵字在文件中的位置(找到記錄隊(duì)列),在搜索到目標(biāo)關(guān)鍵字后再通過記錄搜索找到特定的某條記錄
顯然,上述的搜索可以使用線性搜索、散列法、二分搜索等搜索算法完成
總的來說,不管使用哪種存取方法,最終影響到物理存儲(chǔ)的信息上,都遵循如下步驟
搜索到要操作對(duì)象的邏輯地址
將此邏輯地址映射到對(duì)應(yīng)的物理地址
對(duì)物理地址處的有關(guān)信息進(jìn)行操作
文件物理結(jié)構(gòu),就是文件在存儲(chǔ)設(shè)備上存放的物理組織方式,邏輯地址到物理地址的變換也是由文件的物理結(jié)構(gòu)決定的
文件系統(tǒng)會(huì)將存儲(chǔ)設(shè)備劃分為若干大小相等的物理塊,以便于管理
連續(xù)文件將邏輯上連續(xù)的文件依次存放在物理塊中,標(biāo)記文件需要文件名、首地址、文件長度。要取得文件的中間部分時(shí),可以直接通過起始地址與偏移量訪問
在文件存放、刪除的過程中,會(huì)出現(xiàn)一些存儲(chǔ)碎片,即下圖中文件之間的空白塊,這說明連續(xù)文件結(jié)構(gòu)不適合存儲(chǔ)需要經(jīng)常修改的文件
對(duì)這些碎片,可以進(jìn)行整理,即把文件都往前移動(dòng),調(diào)整為按序存放
串聯(lián)文件使用非連續(xù)的物理塊來存儲(chǔ)信息,文件的每個(gè)物理塊都通過指針指示下一個(gè)物理塊。要取得文件的中間部分時(shí),只能順著指針一個(gè)個(gè)物理塊往下找,搜索效率低,不適合隨機(jī)存取
事實(shí)上,以串聯(lián)形式組織的文件無需指出文件長度,順著指針就可以知道文件有多長。但有時(shí)為了效率,還是會(huì)記錄一下文件的長度。串聯(lián)文件物理結(jié)構(gòu)不會(huì)產(chǎn)生碎片
索引文件要求系統(tǒng)為每個(gè)文件建立一張索引表,表中記錄了文件所在的邏輯塊號(hào)和與之對(duì)應(yīng)的物理塊號(hào)。采用此種方式存儲(chǔ)的文件,可以動(dòng)態(tài)增長,而且也可以較為方便地實(shí)現(xiàn)隨機(jī)存取
文件說明信息表中,每個(gè)文件都有個(gè)索引表指針,指出該文件的索引表的存儲(chǔ)位置。顯然,當(dāng)文件很大時(shí),索引表的大小很可能會(huì)超出一個(gè)物理塊,那么又需要對(duì)索引表進(jìn)行組織,非常不方便。當(dāng)然,可以使用二級(jí)索引解決索引文件超過一個(gè)物理塊大小的問題
顯然,索引文件的物理結(jié)構(gòu)需要額外的存儲(chǔ)空間存放索引表,并且至少需要訪問存儲(chǔ)器兩次才能取得需要的文件信息,降低了速度
可以對(duì)這種物理結(jié)構(gòu)稍作改進(jìn),每個(gè)索引項(xiàng)指出的不是一個(gè)物理塊,而是一段物理塊,指出起始地址和長度即可,也就是進(jìn)行了變長分區(qū)
文件存儲(chǔ)設(shè)備 順序存取存儲(chǔ)設(shè)備磁帶就是典型的順序存取存儲(chǔ)設(shè)備
順序存取存儲(chǔ)設(shè)備只有在前面的物理塊被存取過后,才能存取后續(xù)物理塊。一般會(huì)在相鄰的兩個(gè)物理塊之間設(shè)計(jì)一個(gè)間隙將物理塊隔開
直接存取存儲(chǔ)設(shè)備磁盤就是典型的直接存取存儲(chǔ)設(shè)備
通過磁頭的移動(dòng),文件系統(tǒng)可以直接存取磁盤上任意位置的物理塊。磁盤的結(jié)構(gòu)如下圖所示
盤片的兩面都可以存儲(chǔ)信息,一個(gè)盤片對(duì)應(yīng)一個(gè)磁頭臂,每個(gè)磁頭臂上都有兩個(gè)磁頭,可以讀寫盤片的上下面。一圈圈的稱為“磁道”每個(gè)面會(huì)分為若干個(gè)扇區(qū),各盤片的相同磁道構(gòu)成了柱面
文件存儲(chǔ)空間管理即空閑塊的組織和管理,包括空閑塊的組織、分配與回收。下面是三種空閑塊的管理方法
空閑文件目錄將空閑塊視為特殊的文件,稱為空閑文件,然后將這些空閑文件集中在一個(gè)目錄中。事實(shí)上,這個(gè)目錄中的每個(gè)表項(xiàng)都可以理解為一個(gè)“空閑文件”,每個(gè)空閑文件記錄著一段空閑物理塊的信息(包括起始?jí)K號(hào)、塊數(shù)量、文件名等)
分配空閑區(qū)時(shí),可以使用最先適應(yīng)法、最優(yōu)適應(yīng)法、最壞適應(yīng)法,從前往后掃描空閑文件目錄,直到找到一個(gè)滿足需求的,將信息放入對(duì)應(yīng)物理塊,然后修改空閑文件目錄
釋放空閑區(qū)時(shí),將這段即將空出來的空閑區(qū)的首塊號(hào)和塊數(shù)作為空閑文件放在空閑文件目錄中,之后可能會(huì)進(jìn)行表項(xiàng)的合并
這種方法適合連續(xù)文件結(jié)構(gòu)
空閑塊鏈將存儲(chǔ)設(shè)備上的空閑塊以鏈表形式組織起來。分配空閑區(qū)時(shí),從鏈頭開始摘取所需空閑塊,再調(diào)整鏈?zhǔn)字羔槪会尫趴臻e區(qū)時(shí),將釋放的空閑塊插在鏈尾
成組鏈法成組鏈法將每50個(gè)空閑塊視為一組,在初始構(gòu)建成組鏈時(shí)從后往前進(jìn)行分組,每組的第一塊用來存放前一組中(由于是從后往前進(jìn)行分組的,此處的“前一組”指的當(dāng)前位置后面的一組)
成組鏈法的具體詳解請見專題
位示圖和存儲(chǔ)管理中提到過的位示圖原理思路相同。系統(tǒng)會(huì)從內(nèi)存中劃出一片區(qū)域,位示圖反映每個(gè)文件存儲(chǔ)設(shè)備的使用情況,每個(gè)文件存儲(chǔ)設(shè)備的物理塊對(duì)應(yīng)位示圖中的一個(gè)比特,0表示該塊為空閑塊,1表示該塊已被分配
文件目錄管理與存取控制 基本概念文件說明/文件控制塊FCB:文件名和對(duì)該文件實(shí)施控制管理的控制管理信息(包括文件類型、文件結(jié)構(gòu)等)
文件體:即文件本身,可以使記錄式文件或字符流式文件
目錄文件:存放文件目錄信息的數(shù)據(jù)結(jié)構(gòu),其中每條記錄都是一個(gè)文件的說明信息。注意與文件目錄的區(qū)分
文件系統(tǒng)為存儲(chǔ)設(shè)備的所有文件建立一張目錄表,每個(gè)文件的文件說明信息占一項(xiàng)。此目錄表存在存儲(chǔ)設(shè)備的某固定區(qū)域,需要時(shí)全部或部分調(diào)入內(nèi)存
在單級(jí)目錄結(jié)構(gòu)中,各文件說明項(xiàng)處于相同的地位,搜索文件時(shí)需要搜索文件系統(tǒng)中全部的文件,且系統(tǒng)中不允許有兩個(gè)名稱相同的文件
二級(jí)目錄文件說明信息被組織成目錄文件,并以用戶為單位把各自的文件說明分為不同的組
各組的存取控制信息應(yīng)放在主目錄MFD的目錄項(xiàng)中,MFD的每個(gè)表項(xiàng)指向一個(gè)用戶文件目錄UFD,每個(gè)UFD中記錄著一個(gè)用戶的所有文件
通過二級(jí)目錄,可以解決文件重名和文件共享的問題,提高了搜索速度
從上圖可見,若有多個(gè)用戶需要共享某文件,只要兩個(gè)用戶的UFD中對(duì)應(yīng)表項(xiàng)指示同一個(gè)物理塊起始地址即可。事實(shí)上,被多個(gè)用戶共享的單個(gè)文件可以以不同文件名存在于各用戶的UFD中。例如上圖中,Zhang的UFD中的Editor表項(xiàng)的文件名不一定和Wang的一樣為Editor
多級(jí)目錄在多級(jí)目錄中,除了最低一級(jí)(即葉子結(jié)點(diǎn))中真正存了文件內(nèi)容外,其他級(jí)的目錄中存放的都是下一級(jí)目錄或文件的說明信息,最高層則作為根目錄
多級(jí)目錄構(gòu)成的是一個(gè)樹狀的結(jié)構(gòu)
從上圖中,我們可以發(fā)現(xiàn)多級(jí)目錄的一些特點(diǎn)
層次清晰,可以根據(jù)不同用戶、不同類型、不同性質(zhì)將文件構(gòu)成不同的子樹,利于文件的管理與保護(hù)
較好解決重名問題,同一子目錄下的文件名不重復(fù)就可以
查找速度更快,在確定了要查找的目標(biāo)后,只需要在某個(gè)較小的子樹中進(jìn)行搜索,要搜索的文件數(shù)目大大減少
從當(dāng)前目錄出發(fā),往上級(jí)目錄走,直到到達(dá)與所要共享文件所在路徑的交叉點(diǎn),然后再向共享文件方向往下走,從而訪問共享文件。繞道法需要用戶指定被共享的文件和被鏈接的目錄
鏈接法直接在相應(yīng)目錄表之間進(jìn)行鏈接,將一個(gè)目錄中的鏈指針直接指向被共享文件所在的目錄,顯然鏈接法中仍然需要用戶指定被共享的文件和被鏈接的目錄
鏈接法往往分為硬鏈接和軟鏈接兩種
硬鏈接使得要共享同一文件的目錄指向該文件的索引節(jié)點(diǎn),而不是直接指向物理塊。如此,對(duì)該文件的修改就可以通過索引節(jié)點(diǎn)被所有目錄共享
軟鏈接上圖中,目錄a和目錄b中關(guān)于文件Test的記錄存放著指向Test索引節(jié)點(diǎn)的指針。在目錄a或目錄b中修改Test文件時(shí),此變更都會(huì)通過索引節(jié)點(diǎn)真實(shí)地反映到Test所在的物理塊上
使用軟鏈接時(shí),要共享同一文件的目錄中保存的Link文件事實(shí)上存放著對(duì)應(yīng)文件的路徑名,通過這個(gè)路徑找到這個(gè)文件真實(shí)存在的目錄,直接對(duì)其進(jìn)行存取
基本文件目錄表BFD上圖中,文件F8為目錄D5、D6、D3所共享,虛線箭頭就是軟鏈接(即路徑),當(dāng)在D3或D5中要對(duì)文件F8進(jìn)行存取時(shí),就會(huì)通過此路徑找到實(shí)際上處在D6下的F8
這是一種目錄管理的方法,通過這種方法,可以大幅提高文件搜索的速度,具體見下面目錄管理中的內(nèi)容
目錄管理需要指出的是,由文件說明信息或目錄管理說明信息構(gòu)成的目錄文件也是存放在存儲(chǔ)設(shè)備(外存)中的。根據(jù)上面存取文件時(shí)需要進(jìn)行的物理塊定位操作,可以發(fā)現(xiàn)需要多次訪問外存,這會(huì)非常慢
基本文件目錄表BFD在這種方法下,將文件的FCB分為兩部分,在按文件名查找文件時(shí),只需要使用SFD,既節(jié)省內(nèi)存空間又便于進(jìn)行快速檢索
事實(shí)上,下面所說的各個(gè)表是存在于文件系統(tǒng)中的,也就是需要存儲(chǔ)在外存中的
基本文件目錄表BFD
包括文件的結(jié)構(gòu)信息、物理塊號(hào)、存取控制、管理信息等,每一個(gè)表項(xiàng)都通過由系統(tǒng)賦予的內(nèi)部標(biāo)識(shí)符來唯一標(biāo)識(shí)
符號(hào)文件目錄SFD
每個(gè)表項(xiàng)只有兩部分——文件名、內(nèi)部標(biāo)識(shí)符
事實(shí)上,常把BFD中的表項(xiàng)稱為索引節(jié)點(diǎn),即I節(jié)點(diǎn)
為了便于表示,上圖中的BFD的表項(xiàng)中缺省了很多內(nèi)容。可以發(fā)現(xiàn),無論是MFD、SFD,還是文件本身的物理塊位置,都在BFD中被指出。如此,就可以只通過一次索引,就可以找到
根據(jù)上圖舉個(gè)🌰
例如要取得用戶Zhang的文件w.c(/Zhang/Sub_d/w.c),過程如下
將MFD中用戶Zhang的表項(xiàng)放入內(nèi)存
根據(jù)上一步得到的ID在BFD中得到Zhang的SFD的物理塊位置,將Zhang的SFD讀入內(nèi)存(可以一部分一部分反復(fù)讀入,也可一次性全部讀入)并進(jìn)行搜索
根據(jù)上一步搜索到的Sub_d的ID=8,在BFD中找到Sub_d的SFD,再次在其中搜索文件w.c
根據(jù)上一步搜索到的w.c的ID=9,在BFD中找到w.c文件的相關(guān)信息(包括上圖中未標(biāo)出的文件結(jié)構(gòu)信息、管理信息等),至此,文件成功打開,實(shí)現(xiàn)了文件的訪問
在上面這個(gè)例子中,不斷地從外存將不同表項(xiàng)調(diào)入內(nèi)存時(shí),一般來說需要添加些內(nèi)容,包括索引節(jié)點(diǎn)編號(hào)、索引節(jié)點(diǎn)狀態(tài)、訪問計(jì)數(shù)等
另外,經(jīng)過上面的過程打開文件后,將這樣打開的文件稱為活動(dòng)文件。內(nèi)存中存放SFD表稱為活動(dòng)名字表(一個(gè)用戶一張),內(nèi)存中存放活動(dòng)文件的BFD表稱為活動(dòng)文件表(整個(gè)系統(tǒng)只有一張)
當(dāng)然,由于文件本身也可由BFD索引,當(dāng)文件非常多的時(shí)候,BFD可能會(huì)非常大,因此,在這個(gè)目錄管理方法中,對(duì)于文件本身,同樣可以采用多級(jí)間接索引的方法,甚至混用不同次數(shù)的間接索引
存取控制文件存取控制包括三方面的內(nèi)容
文件共享
文件保護(hù)
文件保密
只要限制用戶對(duì)各文件的讀、寫、執(zhí)行的權(quán)限就可以完成上述工作。存取控制驗(yàn)證模塊的工作就是要完成上述三種用戶權(quán)限的控制,一般通過如下步驟完成
得到用戶的存取權(quán)限
比較用戶的權(quán)限和用戶本次存取要求的是否一致
比較存取要求和被訪問文件的保密性,查看是否有沖突
下面是幾種用于驗(yàn)證用戶存取操作的方法
存取控制矩陣最易于理解的結(jié)構(gòu),使用一個(gè)二維矩陣來記錄用戶對(duì)于各文件的存取權(quán)限
顯然,當(dāng)文件、用戶數(shù)量較多時(shí),存取控制矩陣會(huì)非常浪費(fèi)空間,且查找時(shí)效率也很低
存取控制表以文件為單位,給每個(gè)文件都帶上一個(gè)存取控制表,放在文件說明中,同時(shí)將用戶分組,存取控制表中記錄的是本文件對(duì)于各用戶組的權(quán)限如何
由于文件在打開時(shí)會(huì)將文件說明信息同時(shí)放入內(nèi)存,因此存取控制驗(yàn)證能更快地運(yùn)行
口令方式此處可以有兩種設(shè)計(jì)
用戶要進(jìn)入系統(tǒng)使用前,要求其輸入口令
創(chuàng)建文件時(shí),給文件設(shè)置口令,放在文件的文件說明中,使用該文件前要求輸入口令
這種方式實(shí)現(xiàn)簡單,占用內(nèi)存空間小,但保密性較差
密碼方式對(duì)文件本身進(jìn)行加密,在文件放入存儲(chǔ)設(shè)備時(shí),對(duì)文件編碼加密,在讀出時(shí)又需要輸入密碼進(jìn)行譯碼解密
這種方式保密性強(qiáng),但是編解碼(加密解密)需要花費(fèi)較多時(shí)間進(jìn)行計(jì)算
文件的層次結(jié)構(gòu)及使用用戶要使用文件,文件系統(tǒng)需要以系統(tǒng)調(diào)用或命令方式為用戶提供下列服務(wù)
設(shè)置和修改用戶對(duì)文件的存取權(quán)限
創(chuàng)建、修改、刪除目錄
文件共享,訪問路徑設(shè)置
創(chuàng)建、打開、讀寫、關(guān)閉、撤銷文件
將文件系統(tǒng)進(jìn)行分層,便于實(shí)現(xiàn)和調(diào)整,相鄰的層次通過接口進(jìn)行交互
上圖中右側(cè)已經(jīng)標(biāo)出各層次的功能,例如符號(hào)文件系統(tǒng)SFD完成了文件名到文件標(biāo)識(shí)符fd的轉(zhuǎn)換,也就是說上一層用戶接口給SFD提供了文件名
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前標(biāo)題:操作系統(tǒng)——第6章文件管理-創(chuàng)新互聯(lián)
路徑分享:http://m.newbst.com/article36/doddsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站內(nèi)鏈、ChatGPT、面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容