159.文件管理

文件管理數據庫

 

7.1  文件和文件系統

 

  文件系統的管理功能是將其管理的程序和數據經過組織爲一系列文件的方式實現的。而文件則是指具備文件名的若干相關元素的集合。元素一般是記錄,而記錄又是一組有意義的數據項的集合。可見,基於文件系統的概念,能夠把數據組成分爲數據項、記錄和文件三級。安全

7.1.1  數據項、記錄和文件

  1. 數據項函數

  在文件系統中,數據項是最低級的數據組織形式,可把它分紅如下兩種類型:post

  (1) 基本數據項。性能

  (2) 組合數據項。3d

 

  2. 記錄指針

  記錄是一組相關數據項的集合,用於描述一個對象在某方面的屬性。一個記錄應包含哪些數據項,取決於須要描述對象的哪一個方面。因爲對象所處的環境不一樣可把他做爲不一樣的對象。對象

 

  3. 文件blog

  文件是指由建立者所定義的、具備文件名的一組相關元素的集合,可分爲有結構文件和無結構文件兩種。排序

 

圖7-1  文件、記錄和數據項之間的層次關係

 

7.1.2  文件名和類型

  1. 文件名和擴展名

  (1) 文件名。

  (2) 擴展名。

 

  2. 文件類型

  1) 按用途分類

  根據文件的性質和用途的不一樣,可將文件分爲三類:

  (1) 系統文件,這是指由系統軟件構成的文件。大多數的系統文件只容許用戶調用,但不容許用戶去讀,更不容許修改;有的系統文件不直接對用戶開放。

  (2) 用戶文件,指由用戶的源代碼、目標文件、可執行文件或數據等所構成的文件。用戶將這些文件委託給系統保管。

  (3) 庫文件,這是由標準子例程及經常使用的例程等所構成的文件。這類文件容許用戶調用,但不容許修改。

 

  2) 按文件中數據的形式分類

  按這種方式分類,也可把文件分爲三類:

  (1) 源文件,這是指由源程序和數據構成的文件。一般,由終端或輸入設備輸入的源程序和數據所造成的文件都屬於源文件。它一般是由ASCII碼或漢字所組成的。

  (2) 目標文件,這是指把源程序通過編譯程序編譯過,但還沒有通過連接程序連接的目標代碼所構成的文件。目標文件所使用的後綴名是「.obj」。

  (3) 可執行文件,這是指把編譯後所產生的目標代碼通過連接程序連接後所造成的文件。其後綴名是 .exe。

 

  3) 按存取控制屬性分類

  根據系統管理員或用戶所規定的存取控制屬性,可將文件分爲三類:

  (1) 只執行文件,該類文件只容許被覈準的用戶調用執行,不容許讀和寫。

  (2) 只讀文件,該類文件只容許文件主及被覈準的用戶去讀,不容許寫。

  (3) 讀寫文件,這是指容許文件主和被覈準的用戶去讀或寫的文件。

 

  4) 按組織形式和處理方式分類

  根據文件的組織形式和系統對其處理方式的不一樣,可將文件分爲三類:

  (1) 普通文件。

  (2) 目錄文件。

  (3) 特殊文件。

 

7.1.3  文件系統的層次結構

  如圖7-2所示,文件系統的模型可分爲三個層次:最底層是對象及其屬性,中間層是對對象進行操縱和管理的軟件集合,最高層是文件系統提供給用戶的接口。

 

圖7-2  文件系統模型

 

  1. 對象及其屬性

  文件管理系統管理的對象以下:

  (1) 文件。

  (2) 目錄。

  (3) 磁盤(磁帶)存儲空間。

 

  2. 對對象操縱和管理的軟件集合

  該層是文件管理系統的核心部分。文件系統的功能大可能是在這一層實現的,其中包括有:① 對文件存儲空間的管理;② 對文件目錄的管理;③ 用於將文件的邏輯地址轉換爲物理地址的機制;④ 對文件讀和寫的管理;⑤ 對文件的共享與保護等功能。在實現這些功能時,OS一般都採起了層次組織結構,即在每一層中都包含了必定的功能,處於某個層次的軟件,只能調用同層或更低層次中的功能模塊。

 

  3. 文件系統的接口

  爲方便用戶的使用,文件系統以接口的形式提供了一組對文件和記錄操做的方法和手段。一般是下面兩種類型的接口:

  (1) 命令接口,是指做爲用戶與文件系統直接交互的接口,用戶可經過鍵盤終端鍵入命令取得文件系統的服務。

  (2) 程序接口,是指做爲用戶程序與文件系統的接口,用戶程序可經過系統調用取得文件系統的服務,例如,用於建立文件的系統調用Creat,用於打開一個文件的系統調用Open等。

 

7.1.4  文件操做

  1. 最基本的文件操做

  最基本的文件操做包含下述內容:

  (1) 建立文件。

  (2) 刪除文件。

  (3) 讀文件。

  (4) 寫文件。

  (5) 設置文件的讀/寫位置。

 

  2. 文件的「打開」和「關閉」操做

  當用戶要求對一個文件實施屢次讀/寫或其它操做時,每次都要從檢索目錄開始。爲了不屢次重複地檢索目錄,在大多數OS中都引入了「打開」(open)這一文件系統調用,當用戶第一次請求對某文件進行操做時,須先利用open系統調用將該文件打開。  

 

  3. 其它文件操做

  OS爲用戶都提供了一系列文件操做的系統調用,其中最經常使用的一類是有關對文件屬性的操做,即容許用戶直接設置和得到文件的屬性,如改變已存文件的文件名、改變文件的擁有者(文件主)、改變對文件的訪問權,以及查詢文件的狀態(包括文件類型、大小和擁有者以及對文件的訪問權等)。另外一類是有關目錄的操做,如建立一個目錄,刪除一個目錄,改變當前目錄和工做目錄等。此外,還有用於實現文件共享的系統調用,以及用於對文件系統進行操做的系統調用等。

     

7.2  文件的邏輯結構

  (1) 文件的邏輯結構(File Logical Structure)。

  (2) 文件的物理結構,又稱爲文件的存儲結構。

7.2.1  文件邏輯結構的類型

  對文件邏輯結構所提出的基本要求,首先是有助於提升對文件的檢索速度,即在將大批記錄組成文件時,應採用一種有利於提升檢索記錄速度和效率的邏輯結構形式。其次是該結構應方便對文件進行修改,即使於在文件中增長、刪除和修改一個或多個記錄。第三是下降文件存放在外存上的存儲費用,即儘可能減小文件佔用的存儲空間,不要求大片的連續存儲空間。

  1. 按文件是否有結構分類

  1) 有結構文件

    (1) 定長記錄。

    (2) 變長記錄。

  2) 無結構文件

  若是說在大量的信息管理系統和數據庫系統中,普遍採用了有結構的文件形式的話(即文件是由定長或變長記錄構成的),那麼在系統中運行的大量的源程序、可執行文件、庫函數等,所採用的就是無結構的文件形式,即流式文件。其文件的長度是以字節爲單位的。對流式文件的訪問,則是利用讀、寫指針來指出下一個要訪問的字符。能夠把流式文件看作是記錄式文件的一個特例:一個記錄僅有一個字節。

 

  2. 按文件的組織方式分類

  根據文件的組織方式,可把有結構文件分爲三類:

  (1) 順序文件。

  (2) 索引文件。

  (3) 索引順序文件。

 

7.2.2  順序文件(Sequential File)

  1. 順序文件的排列方式

  在順序文件中的記錄,能夠按照各類不一樣的順序進行排列。通常地,可分爲兩種狀況:

    (1) 串結構。

    (2) 順序結構。

  2. 順序文件的優缺點

  順序文件的最佳應用場合是在對文件中的記錄進行批量存取時(即每次要讀或寫一大批記錄)。全部邏輯文件中順序文件的存取效率是最高的。此外,對於順序存儲設備(如磁帶),也只有順序文件才能被存儲並能有效地工做。

 

7.2.3  記錄尋址

  1. 隱式尋址方式

  對於定長記錄的順序文件,若是已知當前記錄的邏輯地址,便很容易肯定下一個記錄的邏輯地址。

 

圖7-3  定長和變長記錄文件

 

  2. 顯式尋址方式

  該方式可用於對定長記錄的文件實現直接或隨機訪問。由於任何記錄的位置都很容易經過記錄長度計算出來。而對於可變長度記錄的文件則不能利用顯式尋址方式實現直接或隨機訪問,必須增長適當的支持機構方能實現。下面咱們經過兩種方式對定長記錄實現隨機訪問:

  (1) 經過文件中記錄的位置。

  (2) 利用關鍵字。

 

7.2.4  索引文件(Index File)

  1. 按關鍵字創建索引

  定長記錄的文件能夠經過簡單的計算,很容易地實現隨機查找。但變長記錄文件查找一個記錄必須從第一個記錄查起,一直順序查找到目標記錄爲止,耗時很長。

 

圖7-4  具備單個和多個索引表的索引文件

 

  2. 具備多個索引表的索引文件

  使用按關鍵字創建索引表的索引文件與順序文件同樣,都只能按該關鍵字進行檢索。而實際應用狀況每每是:不一樣的用戶,爲了避免同的目的,但願能按不一樣的屬性(或不一樣的關鍵字)來檢索一條記錄。爲實現此要求,須要爲順序文件創建多個索引表,即爲每一種可能成爲檢索條件的域(屬性或關鍵字)都配置一張索引表。在每個索引表中,都按相應的一種屬性或關鍵字進行排序。

 

7.2.5  索引順序文件 (Index Sequential File)

  1. 索引順序文件的特徵 

  索引順序文件是對順序文件的一種改進,它基本上克服了變長記錄的順序文件不能隨機訪問,以及不便於記錄的刪除和插入的缺點。但它仍保留了順序文件的關鍵特徵,即記錄是按關鍵字的順序組織起來的。它又增長了兩個新特徵:一個是引入了文件索引表,經過該表能夠實現對索引順序文件的隨機訪問;另外一個是增長了溢出(overflow)文件,用它來記錄新增長的、刪除的和修改的記錄。

 

  2. 一級索引順序文件

  最簡單的索引順序文件只使用了一級索引。其具體的創建方法是,首先將變長記錄順序文件中的全部記錄分爲若干個組,如50個記錄爲一個組。而後爲順序文件創建一張索引表,併爲每組中的第一個記錄在索引表中創建一個索引項,其中含有該記錄的關鍵字和指向該記錄的指針。索引順序文件是最多見的一種邏輯文件形式,如圖7-5所示。

 

圖7-5  索引順序文件

 

  3. 兩級索引順序文件

  對於一個很是大的文件,爲找到一個記錄而須查找的記錄數目仍然不少,例如,對於一個含有106個記錄的順序文件,當把它做爲索引順序文件時,爲找到一個記錄,平均須查找1000個記錄。爲了進一步提升檢索效率,能夠爲順序文件創建多級索引,即爲索引文件再創建一張索引表,從而造成兩級索引表。

 

7.2.6  直接文件和哈希文件

  1. 直接文件  

  採用前述幾種文件結構對記錄進行存取時,都須利用給定的記錄鍵值,先對線性表或鏈表進行檢索,以找到指定記錄的物理地址。然而對於直接文件,則可根據給定的關鍵字直接得到指定記錄的物理地址。換而言之,關鍵字自己就決定了記錄的物理地址。

  2. 哈希(Hash)文件

  這是目前應用最爲普遍的一種直接文件。它利用Hash函數(或稱散列函數)可將關鍵字轉換爲相應記錄的地址。但爲了能實現文件存儲空間的動態分配,一般由Hash函數所求得的並不是是相應記錄的地址,而是指向某一目錄表相應表目的指針,該表目的內容指向相應記錄所在的物理塊,如圖7-6所示。

 

圖7-6 Hash文件的邏輯結構

     

7.3  文 件 目 錄

  (1) 實現「按名存取」。

  (2) 提升對目錄的檢索速度。

  (3) 文件共享。

  (4) 容許文件重名。

 

7.3.1  文件控制塊和索引結點

  1. 文件控制塊FCB(File Control Block)

  爲了能對系統中的大量文件施以有效的管理,在文件控制塊中,一般應含有三類信息,即基本信息、存取控制信息及使用信息。

 

  1) 基本信息類

  基本信息類包括:

  (1) 文件名。

  (2) 文件物理位置。 

  (3) 文件邏輯結構。

  (4) 文件的物理結構。

 

  2) 存取控制信息類

  存取控制信息類包括文件主的存取權限、覈准用戶的存取權限以及通常用戶的存取權限。

 

  3) 使用信息類

  使用信息類包括文件的創建日期和時間、文件上一次修改的日期和時間,以及當前使用信息。這些信息包括當前已打開該文件的進程數,是否被其它進程鎖住,文件在內存中是否已被修改但還沒有拷貝到盤上等。應該說明,對於不一樣OS的文件系統,因爲功能不一樣,可能只含有上述信息中的某些部分。

 

圖7-7  MS-DOS的文件控制塊

 

  2. 索引結點

  1) 索引結點的引入

  文件目錄一般是存放在磁盤上的,當文件不少時,文件目錄可能要佔用大量的盤塊。在查找目錄的過程當中,必須先將存放目錄文件的第一個盤塊中的目錄調入內存,而後將用戶所給定的文件名,與目錄項中的文件名逐一比較。若未找到指定文件,還須要將下一盤塊的目錄項調入內存。

 

圖7-8  UNIX的文件目錄

 

  2) 磁盤索引結點

  這是存放在磁盤上的索引結點。每一個文件有惟一的一個磁盤索引結點,它主要包括如下內容:

  (1) 文件主標識符,即擁有該文件的我的或小組的標識符;

  (2) 文件類型,包括正規文件、目錄文件或特別文件;

  (3) 文件存取權限,指各種用戶對該文件的存取權限;

  (4) 文件物理地址,每個索引結點中含有13個地址項,即iaddr(0)~iaddr(12),它們以直接或間接方式給出數據文件所在盤塊的編號;

  (5) 文件長度,指以字節爲單位的文件長度;

  (6) 文件鏈接計數,代表在本文件系統中全部指向該(文件的)文件名的指針計數;

  (7) 文件存取時間,指出本文件最近被進程存取的時間、最近被修改的時間及索引結點最近被修改的時間。

 

  3) 內存索引結點

  這是存放在內存中的索引結點。當文件被打開時,要將磁盤索引結點拷貝到內存的索引結點中,便於之後使用。在內存索引結點中又增長了如下內容:

  (1) 索引結點編號,用於標識內存索引結點;

  (2) 狀態,指示i結點是否上鎖或被修改;

  (3) 訪問計數,每當有一進程要訪問此i結點時,將該訪問計數加1,訪問完再減1;

  (4) 文件所屬文件系統的邏輯設備號;

  (5) 連接指針,設置有分別指向空閒鏈表和散列隊列的指針。

 

7.3.2  簡單的文件目錄

  1. 單級文件目錄

  這是最簡單的文件目錄。在整個文件系統中只創建一張目錄表,每一個文件佔一個目錄項,目錄項中含文件名、文件擴展名、文件長度、文件類型、文件物理地址以及其它文件屬性。此外,爲代表每一個目錄項是否空閒,又設置了一個狀態位。單級文件目錄如圖7-9所示。

 

圖7-9  單級文件目錄

 

  2. 兩級文件目錄

  爲了克服單級文件目錄所存在的缺點,能夠爲每個用戶再創建一個單獨的用戶文件目錄UFD(User File Directory)。這些文件目錄具備類似的結構,它由用戶全部文件的文件控制塊組成。此外,在系統中再創建一個主文件目錄MFD(Master File Directory);在主文件目錄中,每一個用戶目錄文件都佔有一個目錄項,其目錄項中包括用戶名和指向該用戶目錄文件的指針。

 

圖7-10  兩級文件目錄

 

7.3.3  樹形結構目錄(Tree-Structured Directory)

1. 樹形目錄

  在現代OS中,最通用且實用的文件目錄無疑是樹形結構目錄。它能夠明顯地提升對目錄的檢索速度和文件系統的性能。主目錄在這裏被稱爲根目錄,在每一個文件目錄中,只能有一個根目錄,每一個文件和每一個目錄都只能有一個父目錄。把數據文件稱爲樹葉,其它的目錄均做爲樹的結點,或稱爲子目錄。圖7-11示出了樹形結構目錄。

 

圖7-11  多級目錄結構

 

2. 路徑名和當前目錄

  1) 路徑名(path name)

  在樹形結構目錄中,從根目錄到任何數據文件都只有一條惟一的通路。在該路徑上,從樹的根(即主目錄)開始,把所有目錄文件名與數據文件名依次地用「/」鏈接起來,即構成該數據文件惟一的路徑名。

 

  2) 當前目錄(Current Directory)

  當一個文件系統含有許多級時,每訪問一個文件,都要使用從樹根開始,直到樹葉(數據文件)爲止的、包括各中間節點(目錄)名的全路徑名。

 

3. 目錄操做

  (1) 建立目錄。

  (2) 刪除目錄。

    ① 不刪除非空目錄。

    ② 可刪除非空目錄。

  (3) 改變目錄。

  (4) 移動目錄。

  (5) 連接(Link)操做。

  (6) 查找。

 

7.3.4  目錄查詢技術

  1. 線性檢索法

  線性檢索法又稱爲順序檢索法。在單級目錄中,利用用戶提供的文件名,用順序查找法直接從文件目錄中找到指名文件的目錄項。在樹形目錄中,用戶提供的文件名是由多個文件份量名組成的路徑名,此時需對多級目錄進行查找。假定用戶給定的文件路徑名是 /usr/ast/mbox,則查找 /usr/ast/mbox文件的過程如圖7-12所示。

 

圖7-12  查找/usr/ast/mbox的步驟

 

  2. Hash方法

  在7.2.6節中曾介紹了Hash文件。若是咱們創建了一張Hash索引文件目錄,即可利用Hash方法進行查詢,即系統利用用戶提供的文件名,並將它變換爲文件目錄的索引值,再利用該索引值到目錄中去查找,這樣將顯著地提升檢索速度。

     

7.4  文 件 共 享

  在現代計算機系統中,必須提供文件共享手段,即指系統應容許多個用戶(進程)共享同一份文件。這樣,在系統中只需保留該共享文件的一份副本。若是系統不能提供文件共享功能,就意味着凡是須要該文件的用戶,都須各自備有此文件的副本,顯然這會形成對存儲空間的極大浪費。

 

7.4.1  基於有向無循環圖實現文件共享

  1. 有向無循環圖DAG(Directed Acyclic Graph)

  在嚴格的樹形結構目錄中,每一個文件只容許有一個父目錄,父目錄能夠有效地擁有該文件,其它用戶要想訪問它,必須通過其屬主目錄來訪問該文件。這就是說,對文件的共享是不對稱的,或者說,樹形結構目錄是不適合文件共享的。若是容許一個文件能夠有多個父目錄,即有多個屬於不一樣用戶的多個目錄,同時指向同一個文件,這樣雖會破壞樹的特性,但這些用戶可用對稱的方式實現文件共享,而沒必要再經過其屬主目錄來訪問。

 

圖7-13  有向無循環圖目錄層次

 

  2. 利用索引結點

  爲了解決這個問題,能夠引用索引結點,即諸如文件的物理地址及其它的文件屬性等信息,再也不是放在目錄項中,而是放在索引結點中。在文件目錄中只設置文件名及指向相應索引結點的指針,如圖7-14所示。

 

圖7-14  基於索引結點的共享方式

 

圖7-15  進程B連接先後的狀況

 

7.4.2  利用符號連接實現文件共享

  1. 利用符號連接(Symbolic Linking)的基本思想

  利用符號連接實現文件共享的基本思想,是容許一個文件或子目錄有多個父目錄,但其中僅有一個做爲主(屬主)父目錄,其它的幾個父目錄都是經過符號連接方式與之相連接的(簡稱連接父目錄)。

 

圖7-16  使用符號連接的目錄層次

 

  2. 如何利用符號鏈實現共享

  爲使連接父目錄D5能共享文件F,能夠由系統建立一個LINK類型的新文件,也取名爲F,並將F寫入連接父目錄D5中,以實現D5與文件F8的連接。在新文件F中只包含被連接文件F8的路徑名。這樣的連接方法被稱爲符號連接。新文件F中的路徑名則只被看作是符號鏈。當用戶經過D5訪問被連接的文件F8,且正要讀LINK類新文件時,此要求將被OS截獲,OS根據新文件中的路徑名去找到文件F8,而後對它進行讀(寫),這樣就實現了用戶B對文件F的共享。

 

  3. 利用符號鏈實現共享的優勢

  在利用符號鏈方式實現文件共享時,只是文件主才擁有指向其索引結點的指針;而共享該文件的其餘用戶則只有該文件的路徑名,並不擁有指向其索引結點的指針。這樣,也就不會發生在文件主刪除一共享文件後留下一懸空指針的狀況。當文件的擁有者把一個共享文件刪除後,若是其餘用戶又試圖經過符號鏈去訪問一個已被刪除的共享文件,則會因系統找不到該文件而使訪問失敗,因而再將符號鏈刪除,此時不會產生任何影響。

 

  4. 利用符號鏈的共享方式存在的問題

  利用符號鏈的共享方式也存在着一些問題:當其餘用戶去讀共享文件時,系統是根據給定的文件路徑名逐個份量(名)地去查找目錄,直至找到該文件的索引結點。所以,在每次訪問共享文件時,均可能要屢次地讀盤。這使每次訪問文件的開銷甚大,且增長了啓動磁盤的頻率。此外,要爲每一個共享用戶創建一條符號鏈,而因爲鏈自己其實是一個文件,儘管該文件很是簡單,卻仍要爲它配置一個索引結點,這也要耗費必定的磁盤空間。

      

7.5  文 件 保 護

  在現代計算機系統中,存放了愈來愈多的寶貴信息供用戶使用,給人們帶來了極大的好處和方便,但同時也有着潛在的不安全性。影響文件安全性的主要因素有:

  (1) 人爲因素。

  (2) 系統因素。

  (3) 天然因素。

  爲了確保文件系統的安全性,可針對上述緣由而採起三方面的措施:

  (1) 經過存取控制機制,防止由人爲因素所形成的文件不安全性。

  (2) 採起系統容錯技術,防止系統部分的故障所形成的文件的不安全性。

  (3) 創建後備系統,防止由天然因素所形成的不安全性。

 

7.5.1  保護域(Protection Domain)

  1. 訪問權

  爲了對系統中的對象加以保護,應由系統來控制進程對對象的訪問。對象能夠是硬件對象,如磁盤驅動器、打印機;也能夠是軟件對象,如文件、程序。對對象所施加的操做也有所不一樣,如對文件能夠是讀,也能夠是寫或執行操做。咱們把一個進程能對某對象執行操做的權力,稱爲訪問權(Access right)。

 

  2. 保護域

  爲了對系統中的資源進行保護而引入了保護域的概念,保護域簡稱爲「域」。「域」是進程對一組對象訪問權的集合,進程只能在指定域內執行操做。這樣,「域」也就規定了進程所能訪問的對象和能執行的操做。

 

圖7-17  三個保護域

 

  3. 進程和域間的靜態聯繫

  在進程和域之間能夠一一對應,即一個進程只聯繫着一個域。這意味着,在進程的整個生命期中,其可用資源是固定的,咱們把這種域稱爲「靜態域」。在這種狀況下,進程運行的全過程都是受限於同一個域,這將會使賦予進程的訪問權超過了實際須要。

 

  4. 進程和域間的動態聯繫方式

  在進程和域之間,也能夠是一對多的關係,即一個進程能夠聯繫着多個域。在此狀況下,可將進程的運行分爲若干個階段,其每一個階段聯繫着一個域,這樣即可根據運行的實際須要來規定在進程運行的每一個階段中所能訪問的對象。

 

7.5.2  訪問矩陣

  1. 基本的訪問矩陣

  咱們能夠利用一個矩陣來描述系統的訪問控制,並把該矩陣稱爲訪問矩陣(Access Matrix)。訪問矩陣中的行表明域,列表明對象,矩陣中的每一項是由一組訪問權組成的。由於對象已由列顯式地定義,故能夠只寫出訪問權而沒必要寫出是對哪一個對象的訪問權,每一項訪問權access(i, j)定義了在域Di中執行的進程能對對象Qj所施加的操做集。

 

圖7-18  一個訪問矩陣

 

  2. 具備域切換權的訪問矩陣

  爲了實如今進程和域之間的動態聯繫,應可以將進程從一個保護域切換到另外一個保護域。爲了能對進程進行控制,一樣應將切換做爲一種權力,僅當進程有切換權時,才能進行這種切換。爲此,在訪問矩陣中又增長了幾個對象,分別把它們做爲訪問矩陣中的幾個域;當且僅當switch∈access(i, j)時,才容許進程從域i切換到域j。

 

圖7-19  具備切換權的訪問控制矩陣

 

7.5.3 訪問矩陣的修改

  1. 拷貝權(Copy Right)

  咱們可利用拷貝權將在某個域中所擁有的訪問權(access(i, j))擴展到同一列的其它域中,亦即,爲進程在其它的域中也賦予對同一對象的訪問權(access(k, j)),如圖7-20所示。

 

圖7-20  具備拷貝權的訪問控制矩陣

 

  2. 全部權(Owner Right)

  人們不只要求能將已有的訪問權進行有控制的擴散,並且一樣須要能增長某種訪問權,或者能刪除某種訪問權。此時,可利用全部權(O)來實現這些操做。

 

圖7-21  帶全部權的訪問矩陣

 

  3. 控制權(Control Right)

  拷貝權和全部權都是用於改變矩陣內同一列的各項訪問權的,或者說,是用於改變在不一樣域中運行的進程對同一對象的訪問權的。控制權則可用於改變矩陣內同一行中(域中)的各項訪問權,亦即,用於改變在某個域中運行的進程對不一樣對象的訪問權的。若是在access(i,j)中包含了控制權,則在域Di中運行的進程能夠刪除在域Dj中運行的進程對各對象的任何訪問權。

 

圖7-22  具備控制權的訪問矩陣

 

7.5.4  訪問矩陣的實現

  1. 訪問控制表(Access Control List)

  這是指對訪問矩陣按列(對象)劃分,爲每一列創建一張訪問控制表ACL。在該表中,已把矩陣中屬於該列的全部空項刪除,此時的訪問控制表是由一有序對(域,權集)所組成的。因爲在大多數狀況下,矩陣中的空項遠多於非空項,於是使用訪問控制表能夠顯著地減小所佔用的存儲空間,並能提升查找速度。

 

  2. 訪問權限(Capabilities)表

  若是把訪問矩陣按行(即域)劃分,即可由每一行構成一張訪問權限表。換言之,這是由一個域對每個對象能夠執行的一組操做所構成的表。表中的每一項即爲該域對某對象的訪問權限。當域爲用戶(進程)、對象爲文件時,訪問權限表即可用來描述一個用戶(進程)對每個文件所能執行的一組操做。

 

圖7-23  訪問權限表

 

      

 

習    題 8:

 

  1. 何謂數據項、記錄和文件?

  2. 文件系統的模型可分爲三層,試說明其每一層所包含的基本內容。

  3. 與文件系統有關的軟件可分爲哪幾個層次?

  4. 試說明用戶能夠對文件施加的主要操做有哪些。

  5. 爲何在大多數OS中都引入了「打開」這一文件系統調用? 打開的含意是什麼?

  6. 何謂文件的邏輯結構? 何謂文件的物理結構?

  7. 按文件的組織方式可將文件分爲哪幾種類型?

  8. 如何提升對變長記錄順序文件的檢索速度?

  9. 經過哪兩種方式來對固定長記錄實現隨機訪問?

  10. 能夠採起什麼方法來實現對變長記錄文件進行隨機檢索?

  11. 試說明索引順序文件的幾個主要特徵。

  12. 試說明對索引文件和索引順序文件的檢索方法。

  13. 試從檢索速度和存儲費用兩方面來比較兩級索引文件和索引順序文件。

  14. 對目錄管理的主要要求是什麼?

  15. 採用單級目錄可否知足對目錄管理的主要要求? 爲何?

  16. 目前普遍採用的目錄結構形式是哪一種? 它有什麼優勢?

  17. 何謂路徑名和當前目錄?

  18.  ash檢索法有何優勢? 又有何侷限性?

  19. 在Hash檢索法中,如何解決「衝突」問題?

  20. 試說明在樹形目錄結構中線性檢索法的檢索過程,並給出相應的流程圖。

  21. 基於索引結點的文件共享方式有何優勢?

  22. 什麼是主父目錄和連接父目錄? 如何利用符號鏈實現共享?

  23. 基於符號鏈的文件共享方式有何優勢?

  24. 什麼是保護域? 進程與保護域之間存在着的動態聯繫是什麼?

  25. 試舉例說明具備域切換權的訪問控制矩陣。

  26. 如何利用拷貝權來擴散某種訪問權?

  27. 如何利用擁有權來增、刪某種訪問權?

  28. 增長控制權的主要目的是什麼? 試舉例說明控制權的應用。

  29. 什麼是訪問控制表? 什麼是訪問權限表?

  30. 系統如何利用訪問控制表和訪問權限表來實現對文件的保護?

 

 

 

相關文章
相關標籤/搜索