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