操作系統(tǒng)——第6章文件管理-創(chuàng)新互聯(lián)

目錄
    • 第6章 文件管理
      • 基本概念
        • 記錄式文件的結(jié)構(gòu)
      • 文件存取方法
      • 文件存儲的物理結(jié)構(gòu)
        • 文件物理結(jié)構(gòu)
          • 連續(xù)文件
          • 串聯(lián)文件
          • 索引文件
        • 文件存儲設(shè)備
          • 順序存取存儲設(shè)備
          • 直接存取存儲設(shè)備
      • 文件存儲空間管理
        • 空閑文件目錄
        • 空閑塊鏈
          • 成組鏈法
        • 位示圖
      • 文件目錄管理與存取控制
        • 基本概念
        • 文件目錄
          • 單級目錄
          • 二級目錄
          • 多級目錄
        • 文件共享
          • 繞道法
          • 鏈接法
            • 硬鏈接
            • 軟鏈接
          • 基本文件目錄表BFD
        • 目錄管理
          • 基本文件目錄表BFD
        • 存取控制
          • 存取控制矩陣
          • 存取控制表
          • 口令方式
          • 密碼方式
      • 文件的層次結(jié)構(gòu)及使用

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、色尼網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為色尼等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。第6章 文件管理 基本概念
  1. 文件系統(tǒng)必須完成的工作

    • 文件存儲空間管理:在輔存上分配、回收、調(diào)整存儲區(qū)

    • 邏輯文件管理:用戶可見的文件邏輯結(jié)構(gòu),可實現(xiàn)按名存取

    • 物理文件管理:實現(xiàn)邏輯文件到物理文件的轉(zhuǎn)換,文件在輔存上的物理結(jié)構(gòu)

    • 文件目錄管理:對存儲設(shè)備上的文件信息可以進行查找

    • 文件共享和安全管理

  2. 文件具有兩種解釋

    • 文件是具有標識符的相關(guān)聯(lián)字符流的集合(無結(jié)構(gòu)的),常用操作系統(tǒng)都將文件視為這種形式

    • 文件是具有標識符的相關(guān)聯(lián)記錄的集合(記錄是有意義的信息單位),數(shù)據(jù)庫系統(tǒng)常使用這種形式

  3. 文件系統(tǒng)是操作系統(tǒng)中管理文件的部分,負責(zé)為用戶建立、撤銷、讀寫、修改與復(fù)制文件,完成文件的按名存取與訪問控制

  4. 文件的分類(按性質(zhì)和用途)

    • 系統(tǒng)文件:用戶不能讀寫與修改,只能通過系統(tǒng)調(diào)用使用之

    • 庫文件:用戶可以讀取和執(zhí)行,但不能修改,是一些標準子程序庫

    • 用戶文件:用戶委托系統(tǒng)保存的文件,所有者和被授權(quán)者才能使用

  5. 文件的分類(按組織形式)

    • 普通文件:一般格式的文件

    • 目錄文件:記錄著文件的目錄信息,其中沒有程序和數(shù)據(jù),用于檢索普通文件

    • 特殊文件:例如UNIX系統(tǒng)中將設(shè)備都視為特殊文件

記錄式文件的結(jié)構(gòu)

記錄式文件中保存著一條條記錄,記錄是具有特定意義的信息單位。記錄位于文件中的某一邏輯地址處,由與記錄名對應(yīng)的一組關(guān)鍵字、屬性、屬性值組成

一個記錄式結(jié)構(gòu)的文件中包含很多記錄,這些記錄一般有以下幾種組織方式

  1. 連續(xù)結(jié)構(gòu)

    即將記錄按生成的先后順序,連續(xù)排列,這種結(jié)構(gòu)也可以用于無結(jié)構(gòu)文件的組織(將每個字節(jié)視為一個記錄)

    便于追加與變更,但不利于搜索

  2. 多重結(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?等是各記錄

多重結(jié)構(gòu)

  1. 轉(zhuǎn)置結(jié)構(gòu)

    將指向關(guān)鍵字相同的記錄的指針連續(xù)排放,如此便于查找關(guān)鍵字相同的某一特定記錄

轉(zhuǎn)置結(jié)構(gòu)

  1. 順序結(jié)構(gòu)

    按某種優(yōu)先級或排序規(guī)則存放各記錄,例如按字典序、按時間序等構(gòu)成順序結(jié)構(gòu)文件

文件存取方法

文件存取的目的是找到文件內(nèi)容所在的邏輯地址,一般有三種存取方法

  1. 順序存取

    即按文件的邏輯地址順序存取

    在記錄型文件中,按記錄排列順序存取,下一次訪問的記錄為當前訪問記錄的下一條

    在無結(jié)構(gòu)字符流文件中,讀寫指針在存取完一段后,會自動后移/前移該段的長度

  2. 隨機存取

    也稱為直接存取,可以根據(jù)記錄編號直接存取某記錄,或是直接將讀寫指針移到目標位置進行存取

  3. 按關(guān)鍵字存取

    多用在數(shù)據(jù)庫管理系統(tǒng)中,在存取時需要先根據(jù)關(guān)鍵字或記錄名搜索到目標的邏輯位置,再進行存取

    此處的搜索一般分為兩步進行:關(guān)鍵字搜索和記錄搜索。關(guān)鍵字搜索確認該關(guān)鍵字在文件中的位置(找到記錄隊列),在搜索到目標關(guān)鍵字后再通過記錄搜索找到特定的某條記錄

    顯然,上述的搜索可以使用線性搜索、散列法、二分搜索等搜索算法完成

文件存儲的物理結(jié)構(gòu)

總的來說,不管使用哪種存取方法,最終影響到物理存儲的信息上,都遵循如下步驟

  1. 搜索到要操作對象的邏輯地址

  2. 將此邏輯地址映射到對應(yīng)的物理地址

  3. 對物理地址處的有關(guān)信息進行操作

文件物理結(jié)構(gòu)

文件物理結(jié)構(gòu),就是文件在存儲設(shè)備上存放的物理組織方式,邏輯地址到物理地址的變換也是由文件的物理結(jié)構(gòu)決定的

文件系統(tǒng)會將存儲設(shè)備劃分為若干大小相等的物理塊,以便于管理

連續(xù)文件

將邏輯上連續(xù)的文件依次存放在物理塊中,標記文件需要文件名、首地址、文件長度。要取得文件的中間部分時,可以直接通過起始地址與偏移量訪問

在文件存放、刪除的過程中,會出現(xiàn)一些存儲碎片,即下圖中文件之間的空白塊,這說明連續(xù)文件結(jié)構(gòu)不適合存儲需要經(jīng)常修改的文件

連續(xù)文件物理結(jié)構(gòu)

對這些碎片,可以進行整理,即把文件都往前移動,調(diào)整為按序存放

連續(xù)文件碎片整理

串聯(lián)文件

使用非連續(xù)的物理塊來存儲信息,文件的每個物理塊都通過指針指示下一個物理塊。要取得文件的中間部分時,只能順著指針一個個物理塊往下找,搜索效率低,不適合隨機存取

事實上,以串聯(lián)形式組織的文件無需指出文件長度,順著指針就可以知道文件有多長。但有時為了效率,還是會記錄一下文件的長度。串聯(lián)文件物理結(jié)構(gòu)不會產(chǎn)生碎片

串聯(lián)文件物理結(jié)構(gòu)

索引文件

要求系統(tǒng)為每個文件建立一張索引表,表中記錄了文件所在的邏輯塊號和與之對應(yīng)的物理塊號。采用此種方式存儲的文件,可以動態(tài)增長,而且也可以較為方便地實現(xiàn)隨機存取

索引文件物理結(jié)構(gòu)
索引文件物理結(jié)構(gòu)

文件說明信息表中,每個文件都有個索引表指針,指出該文件的索引表的存儲位置。顯然,當文件很大時,索引表的大小很可能會超出一個物理塊,那么又需要對索引表進行組織,非常不方便。當然,可以使用二級索引解決索引文件超過一個物理塊大小的問題

顯然,索引文件的物理結(jié)構(gòu)需要額外的存儲空間存放索引表,并且至少需要訪問存儲器兩次才能取得需要的文件信息,降低了速度

可以對這種物理結(jié)構(gòu)稍作改進,每個索引項指出的不是一個物理塊,而是一段物理塊,指出起始地址和長度即可,也就是進行了變長分區(qū)

索引文件物理結(jié)構(gòu)變長分區(qū)

文件存儲設(shè)備 順序存取存儲設(shè)備

磁帶就是典型的順序存取存儲設(shè)備

順序存取存儲設(shè)備只有在前面的物理塊被存取過后,才能存取后續(xù)物理塊。一般會在相鄰的兩個物理塊之間設(shè)計一個間隙將物理塊隔開

直接存取存儲設(shè)備

磁盤就是典型的直接存取存儲設(shè)備

通過磁頭的移動,文件系統(tǒng)可以直接存取磁盤上任意位置的物理塊。磁盤的結(jié)構(gòu)如下圖所示

磁盤結(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表示該塊已被分配

文件目錄管理與存取控制 基本概念
  1. 文件說明/文件控制塊FCB:文件名和對該文件實施控制管理的控制管理信息(包括文件類型、文件結(jié)構(gòu)等)

  2. 文件體:即文件本身,可以使記錄式文件或字符流式文件

  3. 目錄文件:存放文件目錄信息的數(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)多級目錄的一些特點

  1. 層次清晰,可以根據(jù)不同用戶、不同類型、不同性質(zhì)將文件構(gòu)成不同的子樹,利于文件的管理與保護

  2. 較好解決重名問題,同一子目錄下的文件名不重復(fù)就可以

  3. 查找速度更快,在確定了要查找的目標后,只需要在某個較小的子樹中進行搜索,要搜索的文件數(shù)目大大減少

文件共享 繞道法

從當前目錄出發(fā),往上級目錄走,直到到達與所要共享文件所在路徑的交叉點,然后再向共享文件方向往下走,從而訪問共享文件。繞道法需要用戶指定被共享的文件和被鏈接的目錄

鏈接法

直接在相應(yīng)目錄表之間進行鏈接,將一個目錄中的鏈指針直接指向被共享文件所在的目錄,顯然鏈接法中仍然需要用戶指定被共享的文件和被鏈接的目錄

鏈接法往往分為硬鏈接和軟鏈接兩種

硬鏈接

使得要共享同一文件的目錄指向該文件的索引節(jié)點,而不是直接指向物理塊。如此,對該文件的修改就可以通過索引節(jié)點被所有目錄共享

硬鏈接示意圖

上圖中,目錄a和目錄b中關(guān)于文件Test的記錄存放著指向Test索引節(jié)點的指針。在目錄a或目錄b中修改Test文件時,此變更都會通過索引節(jié)點真實地反映到Test所在的物理塊上

軟鏈接

使用軟鏈接時,要共享同一文件的目錄中保存的Link文件事實上存放著對應(yīng)文件的路徑名,通過這個路徑找到這個文件真實存在的目錄,直接對其進行存取

軟鏈接示意圖

上圖中,文件F8為目錄D5、D6、D3所共享,虛線箭頭就是軟鏈接(即路徑),當在D3或D5中要對文件F8進行存取時,就會通過此路徑找到實際上處在D6下的F8

基本文件目錄表BFD

這是一種目錄管理的方法,通過這種方法,可以大幅提高文件搜索的速度,具體見下面目錄管理中的內(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結(jié)構(gòu)的目錄管理

為了便于表示,上圖中的BFD的表項中缺省了很多內(nèi)容。可以發(fā)現(xiàn),無論是MFD、SFD,還是文件本身的物理塊位置,都在BFD中被指出。如此,就可以只通過一次索引,就可以找到

根據(jù)上圖舉個🌰

例如要取得用戶Zhang的文件w.c(/Zhang/Sub_d/w.c),過程如下

  1. 將MFD中用戶Zhang的表項放入內(nèi)存

  2. 根據(jù)上一步得到的ID在BFD中得到Zhang的SFD的物理塊位置,將Zhang的SFD讀入內(nèi)存(可以一部分一部分反復(fù)讀入,也可一次性全部讀入)并進行搜索

  3. 根據(jù)上一步搜索到的Sub_d的ID=8,在BFD中找到Sub_d的SFD,再次在其中搜索文件w.c

  4. 根據(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ù)的間接索引

I節(jié)點表使用間接索引

存取控制

文件存取控制包括三方面的內(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)整,相鄰的層次通過接口進行交互

文件系統(tǒng)層次結(jié)構(gòu)

上圖中右側(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)

搜索引擎優(yōu)化