1. 程式人生 > >操作系統之文件管理

操作系統之文件管理

image 系統調用 多級 表示 註意 折半 空間使用 回收 三種

  一 文件和文件系統

     

    文件管理:把所管理的程序和數據組織成一系列的文件,並能進行合理的存儲、使用等操作。    

     1 基本概念     

      數據項:描述對象某種屬性的字符集;是數據組織中可以命名的最小邏輯數據單位。
      記錄:一組相關數據項集合,描述對象某方面的屬性;
      關鍵字:一個記錄中的一個或幾個數據項的集合,用於唯一的標識一個記錄。
      文件:由創建者定義的、具有文件名的一組相關元素的集合。
      有結構:由相關記錄組成
      無結構:字符流的形式
      屬性:類型、長度、物理位置、創建時間

     2文件類型  

      按用途:系統、用戶、庫文件
      按數據形式:源文件、目標文件、可執行文件
      按存取控制屬性:只執行、只讀、讀寫
      按組織和處理方式:普通文件、目錄文件、特殊(設備)文件

     3.文件系統模型

      技術分享圖片

    

     4  文件操作

   

     最基本的操作
      創建/刪除文件:分空間,形成FCB及目錄(名,地址)
      讀、寫:按名檢索目錄,找到文件地址,開始讀、寫
      置文件讀寫位置,實現隨機存取(尤其適用於記錄文件)

     還需要:“打開”與“關閉”:
      文件讀/寫操作 = 檢索 + 讀/寫。
      每次讀寫前都要重復檢索增大開銷。所以為了方便對同一文件的多次讀寫,一次檢索到文件後就在內存中記錄其位置,避免重復檢索。被記錄下位置的文件就是“打開”文件;
不需要再操作文件時,通過“關閉”這個系統調用關閉文件——即從打開文件表上刪除其路徑信息即可。
      其他操作:改名、改所屬用戶、改訪問權限等屬性的操作。

      

  二 文件的邏輯結構

    1 文件邏輯結構類型:

      

    有結構文件(記錄式)
     ①定長記錄
     ②變長記錄
    如何組織記錄:
     順序文件。系統需按該類型記錄“長度”,通常定長。
     索引文件。系統需為文件建立索引表。
     索引順序文件。建索引表,記錄每組記錄的第一個記錄位置。
    無結構文件(字符流式)
     字節為單位,利用讀寫指針依次訪問。
     系統對該類文件不需格式處理。

   2 順序文件:

    

     兩種記錄排列方式
     串結構:按記錄形成的時間順序串行排序。記錄順序與關鍵字無關;
     順序結構:按關鍵字排序。
    檢索方法:
      從頭檢索,順序查找要找的記錄,定長的計算相對快。
      順序結構,可用折半查找、插值查找、跳步查找等算法提高效率

     

     順序文件的優缺點:
       不方便隨機存取某條記錄,但適用批量存取的場合。
       適合磁帶等特殊介質。
       單記錄的查找、修改等交互性差;增減不方便(改進辦法:把增刪改的記錄登記在一個事務文件中,在某段時間間隔後再與原文件合並更新)。

    3索引文件

      

     為了方便單個記錄的隨機存取,為文件建立一個索引表,記錄每項記錄在文件的邏輯地址及記錄長度;該索引表按關鍵字排序,。
    索引表內容:
       索引號、長度、記錄地址指針
    檢索效率
     索引表本身即是個按記錄鍵排序的定長順序文件,所以能利用算法提高索引表檢索速度

  

     一個索引文件可以有多個索引表
      為方便用戶根據不同記錄屬性檢索記錄,為順序文件建立多個索引表,每種能成為檢索條件的域都配備一張索引表。
     索引文件的優缺點
       適用於變長記錄,可提高檢索速度,實現直接存取
       索引表增加了存儲開銷

     4 索引順序文件:

      

     既要方便,又要降低開銷
     本方式是最常見的一種邏輯文件形式。
      將順序文件的所有記錄分組
      還是建立索引表,但每個表項記錄的是每組第1條記錄的鍵值和地址。
      組內記錄仍按順序方式檢索和使用。
     檢索一條記錄的過程:
      先計算記錄是在第幾組,然後再檢索索引確定組在哪裏後,在組內順序查找。
     可利用多級索引,進一步提高檢索效率。

     5 直接文件:

     

     給定鍵值(如學號)不需順序檢索直接得到記錄的物理地址、

    三 外存分配方式:  

    

       目標:有效利用外存空間,提高文件訪問速度
        常用三種方式:
        連續分配
        鏈接分配(不連續)
        索引分配
        通常一個系統中僅采用一種方式
       采用的磁盤分配方式決定了文件的“物理結構”
         順序結構;鏈接式結構;索引式結構。
         註意與邏輯結構名類似但不是一回事

    技術分享圖片

    

   

      缺點:
       會產生外存碎片。可緊湊法彌補,但需要額外的空間,和內存緊湊相比更花時間。
       創建文件時要給出文件大小;存儲空間利用率不高,不利於文件的動態增加和修改;
       適用於變化不大順序訪問的文件,在流行的UNIX系統中仍保留了連續文件結構。如對換區

      2 連接分配:

       

      可以為每一個文件分配一組不相鄰的盤塊。
      設置鏈接指針,將同屬於一個文件的多個離散盤塊鏈接成一個鏈表,這樣形成的文件稱為鏈接文件。會有鏈接成本。

       優點:

       離散分配,消除外部碎片,提高利用率
       同時適用於文件的動態增長;修改容易

    

技術分享圖片

技術分享圖片

  四 存儲空間管理:

   

     為實現存儲空間分配,系統需要:
      記住空閑存儲空間使用情況;為空間設置相應的數據結構;
      提供對存儲空間分配、回收的操作手段。
     典型的管理方法:
      1)空閑表和空閑鏈表法
      2)位示圖法
      3)成組鏈接法

     1)空閑表法和空閑鏈表法

     常用於連續分配管理方式
     數據結構
      系統為外存上的所有空閑區建立一張空閑表
      每個空閑區對應一個空閑表項
       (表項包括序號、空閑區的第一個盤塊號、空閑盤塊數等。)
      將所有空閑區按其起始盤塊號遞增的次序排列

     

     空閑鏈表法
       將所有空閑盤區拉成一條空閑鏈。
       數據結構:鏈
        根據構成鏈所用基本元素的不同,可把鏈表分成兩種形式:
        空閑盤塊鏈
        空閑盤區鏈

   2)位示圖法——位示圖

      

    利用二進制的一位來表示一個盤塊的使用情況。
    值為0表示對應的盤塊空閑,為1表示已分配。有的系統則相反。
    磁盤上的所有盤塊都有一個二進制位與之對應,這樣由所有盤塊所對應的位構成一個集合,稱為位示圖。
    總塊數=m*n。可用m*n個位數來構成位示圖,可看成是二維數組(數據結構)

    3)成組鏈接法

    

   中心思想:
   所有盤塊按規定大小劃分為組;
   組間建立鏈接;
   組內的盤塊借助一個系統棧可快速處理,且支持離散分配回收。

      技術分享圖片

操作系統之文件管理