1. 程式人生 > >計算機作業系統(六)——檔案系統

計算機作業系統(六)——檔案系統

檔案系統

檔案

具有符號名的,在邏輯上具有完整意義的一組相關資訊項的序列

檔案(document)與計算機檔案(file)

檔名是由字母、數字和其他符合組成的一個字串,其格式和長度因系統而異

命名:

  1. 檔名和拓展名:前者用於識別檔案,後者用於標識檔案特性,二者用’.’隔開
  2. 不同OS有約定的拓展名,Unix不做介紹,Windows如下
    1. COM:可執行的浮動二進位制程式碼檔案
    2. EXE:可執行的浮動二進位制程式碼檔案
    3. LIB:庫程式檔案
    4. BAT:批命令檔案
    5. OBJ:編譯或彙編生成的目標檔案

分類:

  1. 按用途:系統檔案、庫檔案、使用者檔案
  2. 按保護級別:只讀檔案、讀寫檔案、不保護檔案
  3. 按資訊時限:臨時檔案、永久檔案、檔案檔案
  4. 按裝置型別:磁碟檔案、磁帶檔案、光碟檔案、軟盤檔案
  5. 按邏輯結構或物理結構

優點:

  1. 使用者使用方便,按名存取
  2. 檔案安全可靠,提供保護措施
  3. 檔案可備份,可組織重執
  4. 檔案可共享:提供利用率
  5. 把資料組織成檔案形式加以管理和控制是計算機資料管理的重大進展

檔案系統

  1. 作業系統中負責存取和管理資訊的模組,它用統一的方式管理使用者和系統資訊的儲存、檢索、更新、共享和保護,併為使用者提供一整套方便有效的檔案使用和操作方法
  2. 反映了使用者概念中的邏輯結構,而且和存放它的輔助儲存器(檔案儲存器)的儲存結構緊密相關。同一個檔案必須從邏輯檔案和物理檔案兩個側面來觀察它

功能(面向使用者):

  1. 檔案的按名存取
  2. 檔案的共享和保護
  3. 檔案的操作和使用

實現功能:

  1. 檔案目錄的建立和維護
  2. 儲存空間的分配和回收
  3. 資料的保密和保護
  4. 監督使用者存取和修改檔案的許可權
  5. 實現在不同儲存介質上資訊的標識方式、編址方法、儲存次序,以及資訊檢索等問題

組成:

檔案組織

  1. 組織方法
    1. 邏輯結構
      1. 流式檔案
      2. 記錄式檔案
    2. 物理結構
      1. 順序檔案
      2. 連線檔案
      3. 直接檔案
      4. 索引檔案

檔案存取

  1. 存取方法
    1. 概念
      1. 作業系統為使用者程式提供的使用檔案的技術和手段
      2. 在某種程度上依賴於檔案的物理結構
    2. 方法
      1. 順序存取
        1. 按記錄順序進行讀/寫操作的存取方法
        2. 讀操作根據讀指標讀出當前 記錄,同時推進讀指標,指向下一次要讀出的記錄
        3. 寫操作則設定寫指標,把一個記錄寫道檔案末端,同時推進寫指標
        4. 允許對讀指標進行前跳或後退n(整數)個記錄的操作
      2. 直接存取
        1. 很多應用場合要求快速地以任意次序直接讀寫某個記錄。航空訂票系統,把特定航班的所有資訊存放在物理塊中,使用者預定某航班時,直接計算出該航班的存位置
      3. 索引存取
        1. 基於索引檔案的索引存取方法
        2. 對於這種檔案,資訊塊的地址都可以通過查詢記錄鍵而換算出
        3. 除可採用按鍵存取外,也可以採用順序存取或直接存取的方法
        4. 實際的系統中,大都採用多級索引,以加速記錄查詢過程

檔案控制

  1. 控制系統
    1. 邏輯的控制系統
    2. 物理的控制系統

檔案使用

  1. 檔案操作
    1. 開啟檔案
    2. 關閉檔案
    3. 控制

卷和塊

  1. 檔案儲存介質有磁碟、光碟和磁碟
  2. 卷:儲存介質的物理單位,對應於一盤磁帶、一塊軟盤、一個光碟片、一個硬碟分割槽
  3. 塊:儲存介質上連續資訊所組成的一個區域,也叫做物理記錄
  4. 塊在主儲存器和輔助儲存器進行資訊交換的物理單位,每次總是交換一塊或整數塊資訊
  5. 決定塊的大小要考慮使用者使用方式、資料傳輸效率和儲存裝置型別等多種因素
  6. 不同型別的儲存介質,塊的長短常常各不相同;對同一型別的儲存介質,塊的大小一般相同,但也可以不同
  7. 外圍裝置由於啟停機械動作或識別不同塊的要求,兩個相鄰塊之間必須留有間隙
    1. 間隙是塊之間不記錄使用者程式碼資訊的區域
  8. 順序存取儲存裝置的資訊安排
    1. 順序存取裝置是嚴格依賴資訊的物理位置次序進行定位和讀寫的儲存裝置
    2. 磁帶機是最常用的一種順序存取儲存裝置,它具有儲存容量大、穩定可靠、卷可裝卸和便於儲存等優點,廣泛用作存檔
    3. 磁帶的一個突出特點是塊長的變化範圍較大,塊可以很小,也可以很大,原則上沒有限制
    4. 光碟也是一種順序存取儲存裝置
  9. 直接存取儲存裝置的資訊安排
    1. 磁碟是一種直接存取儲存裝置(隨機存取儲存裝置)
    2. 移臂與旋轉兩維組織,存取速度高
    3. 它的每個物理記錄有確定的位置和唯一的地址,存取任何一個物理塊所需的時間幾乎不依賴於此資訊的位置

邏輯檔案(檔案的邏輯結構)

獨立於物理環境的,使用者概念種的抽象資訊組織方式

使用者能觀察到的,並加以處理的資料集合

檔案的邏輯結構分為兩種形式

流式檔案

  1. 檔案內的資料不再組成記錄,只是由一串依此的位元組組成的資訊流序列
  2. 這種檔案常常按長度來讀取所需資訊,也可以用插入的特殊字元作為分界

記錄式檔案

  1. 一種有結構的檔案,它是若干邏輯記錄資訊所組成的記錄流檔案
  2. 邏輯記錄是檔案種按資訊在邏輯上的獨立含義所劃分的資訊單位

記錄式檔案與資料庫

  1. 資料庫管理系統也支援邏輯記錄
  2. 區別:資料庫種的記錄之間可以通過資料冗餘構成某種聯絡
  3. 資料庫管理系統支援基於聯絡的資料查詢,檔案系統則不行

物理檔案(檔案的物理結構)

  1. 檔案的物理結構和組織是指檔案在物理儲存空間種的存放方法和組織關係
  2. 檔案的儲存結構涉及塊的劃分、記錄的排列、索引的組織、資訊的搜尋等許多問題
  3. 其優劣直接影響檔案系統的效能
  4. 順序檔案(連續檔案)
    1. 將一個檔案中邏輯上連續的資訊存放到儲存介質的依此相鄰的塊中便形成順序結構
    2. 磁帶檔案、光碟檔案是典型例子
    3. 優點(順序存取記錄時速度較快):
      1. 批處理檔案,系統檔案用得最多
      2. 採用磁碟存放順序檔案時,總可以保持快速存取的優點
    4. 缺點:
      1. 建立檔案前需要能預先確定檔案長度,以便分配儲存孔空間
      2. 修改、插入和增加檔案記錄有困難
  5. 連線檔案(串聯檔案)
    1. 特點:使用連線字來表示檔案中各個物理塊之間的先後次序
    2. 每一塊檔案資訊的實體地址由檔案目錄給出,而每一塊的連線字指出了檔案的下一個物理塊位置;連線字內容為0時,表示檔案至本塊結束
    3. 像輸入井、輸出井等都用此類檔案
    4. 優點:
      1. 易於對檔案記錄做增刪改,易於動態增長記錄
      2. 不必預先確知檔案長度
      3. 儲存空間利用率高
    5. 缺點:
      1. 存放指標需額外的儲存空間
      2. 由於存取須通過緩衝區,待獲得連線字後,才能找到下一物理塊的地址,因而,僅適用於順序存取
  6. 直接檔案(雜湊檔案)
    1. 通過計算記錄的關鍵字建立與其物理儲存地址之間的對應關係
    2. 這種變換通常採用雜湊法(hash法)
    3. 計算定址結構可能出現”衝突“,即不同的關鍵字可能變換出相同的地址來,解決辦法有拉鍊法、迴圈探查法、二次雜湊法、溢位區法等
  7. 索引檔案
    1. 索引檔案為每個檔案建立了一張索引表,其中,每個表目包含一個記錄的鍵(或邏輯記錄號)及其儲存地址
    2. 索引表的地址可由檔案目錄指出,查閱索引表找到相應記錄鍵(邏輯記錄號),然後獲得資料儲存地址
    3. 訪問方式:
      1. 在檔案儲存器上分兩個區:索引區和資料區
      2. 訪問索引檔案需兩個步驟:查詢索引表;獲得記錄實體地址
      3. 需要兩次訪問輔助儲存器,若檔案索引已預先調入主儲存器,那麼,就可以減少一次內外村資訊交換
    4. 特點:
      1. 索引結構可以被認為是連線結構的一種擴充套件,除了具備連線檔案的優點外,還客服了它只能作順序存取的缺點,具有直接讀寫任意一個記錄的能力,便於檔案增刪改
      2. 索引檔案的缺點:增加了索引表的空間開銷和查詢時間
    5. 索引表組織
      1. 一級索引
      2. 兩級索引
      3. 多級索引

檔案目錄

  1. 實現檔案的”按名存取“的關鍵資料結構
  2. 檔案系統的基本功能之一就是負責檔案目錄的建立、維護和檢索,要求編排的目錄便於查詢、防止衝突
  3. 檔案目錄需要永久儲存,因此也組織成檔案存放在磁碟上,稱目錄檔案
  4. 一級目錄結構
    1. 在作業系統中構造一張線性表,與每個檔案的相關屬性佔用一個目錄項,構成了一級目錄結構
    2. 由於使用者與檔案眾多,容易重名,不利記憶
  5. 二級目錄結構
    1. 第一級為主檔案目錄,它用於管理所有使用者檔案目錄,它的目錄項登記了系統接受的使用者的名字及該使用者檔案目錄的地址
    2. 第二級為使用者的檔案目錄,它為該使用者的每個檔案儲存一個登記欄,其內容與一級目錄的目錄項相同
    3. 每一使用者只允許檢視自己的檔案目錄
    4. 特點
      1. 採用二級目錄管理檔案時,因為任何檔案的存取都通過主檔案目錄,於是可以檢查訪問檔案者的存取許可權,避免一個使用者未經授權就存取另一個使用者的檔案,使使用者檔案的私密性得到保證,實現了對檔案的保密和保護
      2. 特別是不同使用者具有同名檔案時,由於各自有不同的使用者檔案目錄而不會導致混亂
      3. 對於同一個使用者而言,同樣存在檔案多、容易重名問題
  6. 樹形目錄結構
    1. 每一級目錄可以登記下一級目錄,也可以登記檔案,從而,形成了層次檔案目錄結構
    2. 層次目錄結構通常採用樹形目錄結構,它是一棵倒向的有根樹,樹根是根目錄;從根向下,每一個樹分叉是一個子目錄;而樹葉是檔案
    3. 特點
      1. 較好地反映現實世界中具有層次關係的資料集合和較確切地反映系統內部檔案的組織結構
      2. 不同檔案可以重名,只要它們不位於同一末端的子目錄中
      3. 易於規定不同層次或子樹中檔案的不同存取許可權,便於檔案的保護、保密和共享
    4. 檔案定位
      1. 在樹形目錄結構中,一個檔案的全名包括從根目錄開始到檔案為止,通路上遇到的所有子目錄路徑,又稱為路徑名
      2. 各子目錄名之間用正斜線/(反斜線\)隔開
      3. 一個硬碟分割槽可以組織成一顆子樹
        1. 每顆子樹可以對應於一個邏輯碟符(Win)
        2. 把眾多子樹嫁接成一顆大樹(UNIX)

檔案查詢

檔案查詢是檔案目錄管理的額重要工作,“按名存取”檔案就是系統根據使用者提供的檔案路徑名來搜尋各級檔案目錄,找到該檔案

  1. 從根目錄查起(絕對路徑名)
  2. 從”當前目錄”查起(相對路徑名),用’.’表示當前目錄,’..’表示父目錄
  3. 現代作業系統都設定有改變工作目錄命令,即變更當前工作目錄

目錄項查詢

  1. 搜尋具體目錄項時,可以採用順序查詢法,依此掃描檔案目錄中的目錄項,將目錄項中的名字與欲查詢的檔名相比較
  2. 優化方法
    1. 目錄表項是按鍵的順序編排,可以採用“二分查詢法”
    2. “雜湊法“,把每個檔名經過變換函式變換成唯一的目錄表表項

檔案目錄處理

  1. 樹形目錄結構:當一個檔案經過許多目錄節點時,使用很不方便;系統在沿路徑查詢目錄時,往往要多次訪問檔案儲存器,使訪問速度大大減慢
  2. 若把所有檔案的目錄都複製到主存,訪問速度是加快了,但又增加了主存的開銷
  3. 一種有效辦法是把常用和正在使用的哪些檔案目錄複製進主存,這樣,既不增加太多的主存開銷,又可以明顯減少目錄查詢時間

活動檔案表

  1. 系統可以為每個使用者程序建立一張活動檔案表,當用戶使用一個檔案之前,先通過”開啟“操作,把該檔案有關目錄資訊複製到指定主存區域,有關資訊填入活動檔案表,以建立使用者程序和該檔案索引的聯絡
  2. 當不再使用該檔案時,使用”關閉“,切斷使用者程序和這個檔案的聯絡,同時,若該目錄已被修改過,則應更新輔存中對應的檔案目錄

檔案的安全與保護

檔案是計算機系統的重要資源,因此,要求檔案系統具有保障檔案安全的手段,提供檔案保密的措施,有效地實現檔案的共享

檔案共享:不同使用者共同使用某些檔案

計算機使用者完成共同任務所必需的

好處:

  1. 減少大量重複性勞動
  2. 免除系統複製檔案的工作
  3. 節省檔案佔用的儲存空間
  4. 減少程式設計輸入輸出檔案的次數

併發控制

  1. 在允許檔案共享的系統中,作業系統應提供手段實現對共享檔案的同步控制
  2. 多個程序可能同時存取一個檔案,如果它們同時進行讀操作,作業系統應對檔案進行公用控制
  3. 如果有程序進行寫操作,例如,有兩個程序,程序A要求修改檔案,同時程序B要求讀出同一檔案中的資料,則作業系統給必須提供同步控制機制,以保證檔案資料的完整性

檔案保護:防止檔案被破壞

  1. 作業系統必須提供檔案保護機制,有效實現檔案的完整性
  2. 方法

    1. 檔案副本
      1. 檔案系統必須要有防止硬軟體故障,儲存資訊完整性的能力。主要的實現機制就是檔案副本
      2. 動態多副本技術
        1. 在多個介質上維持同一內容的檔案,並且在更新內容時同時進行
        2. 需要增加裝置費用和系統負載。一般適用於容量較小且較為重要的檔案,例如不需更新的系統檔案及專用檔案,當檔案發生故障時只要切換到備用裝置就可以
      3. 轉儲、備份與恢復
        1. 檔案轉儲:定時把檔案複製轉儲到其他介質上,當某介質上出現故障時,復原轉儲檔案
        2. 轉儲方式
          1. 一定時間間隔或一個單位處理結束時,系統自動複寫更新過的檔案和資料
          2. 每天或每週把檔案資訊全部複寫一遍,需要時再通過裝入轉儲檔案來恢復系統,諸如BACKUP、RESTORE等命令
    2. 檔案存取矩陣與檔案讀取表
      1. 系統為每個使用者設定訪問每個檔案物件的存取屬性
      2. 系統的全部使用者對全部檔案的存取屬性就組成的一個二維矩陣,稱為存取控制矩陣
      3. 由於作業系統擁有很多使用者和眾多檔案,存取控制矩陣是一個稀疏矩陣,可以將其簡化為一張存取控制表
      4. 每行包括:使用者、檔案、存取屬性
      5. 存取控制表僅登記那些對檔案擁有存取屬性的部分
      6. 基於存取控制矩陣/表的檔案保護
        1. 存取屬性:可以有訪問、讀、寫、執行、建立、刪除、授權等等
        2. 系統通過查閱(矩陣/表)核對使用者對檔案的存取許可權
        3. 檔案屬主使用GRANT、REVOKE等命令進行授權,甚至把授權權轉授給他信任的使用者
        4. 系統管理使用者(超級使用者)等同於檔案屬主許可權,並獲得對系統檔案的授權訪問權許可權
    3. 檔案屬性

      1. 存取控制表的一種簡化方法是使用者分類,再針對每類使用者規定檔案屬性

      2. 使用者分類:屬主、合作者、其他

      3. 檔案屬性:讀、寫、執行、…

      4. 檔案屬性可以放在檔案目錄項中,管理大為簡化

      5. 使用者使用檔案時,通過核對檔案屬性,實現保護

      6. 檔案屬性的例

        1. chmod命令可以改變檔案屬性
        2. chown命令用於變更檔案屬主
        3. chgrp命令使用者變更使用者夥伴
        Name 執行
        檔案主 1 1 0
        夥伴 1 0 0
        其他使用者 1 0 0

檔案保密:防止檔案及其內容被其他使用者竊取

  1. 措施
    1. 隱蔽檔案目錄
    2. 設定口令
    3. 使用密碼

檔案的使用

使用者通過兩類介面與檔案系統聯絡

  1. 與檔案有關的操作命令。UNIX中,cat、cd、cp、find、mv、rm、mkdir、rmdir等等
  2. 提供給使用者程式使用的檔案類系統呼叫,基本檔案類系統呼叫:建立、開啟、讀/寫、定位、關閉、撤銷
    1. 建立檔案
      1. 用於建立一個檔案
      2. 所需引數:檔名、裝置類(號)、檔案屬性及存取控制資訊
      3. 處理流程:在相應裝置上建立一個檔案目錄項,為檔案分配第一個物理塊,在活動檔案表中申請一個項,登記有關目錄資訊,並返回一個檔案控制代碼
    2. 撤銷檔案
      1. 用於刪除一個檔案
      2. 所需引數:檔名、裝置類(號)
      3. 處理流程:若檔案沒有關閉,先關閉檔案;若為共享檔案,進行聯訪處理;在目錄檔案中刪除相應目錄項;釋放檔案佔用的檔案儲存空間
    3. 開啟檔案
      1. 用於建立起檔案和使用者程序之間的使用聯絡
      2. 所需引數:檔名、裝置類(號)、開啟方式
      3. 處理流程:在主存活動檔案表中申請一個項,返回一個檔案控制代碼;根據檔名查詢目錄檔案,把目錄資訊複製到活動檔案表相應欄;若開啟的是共享檔案,則應有相應處理
    4. 關閉檔案
      1. 用於結束一個檔案的讀寫
      2. 所需引數:檔案控制代碼
      3. 處理流程:將活動檔案表中該檔案的”當前使用使用者數“減1;完成”推遲寫”;若活動檔案表目內容已被改過,則應先將表目內容寫回檔案儲存器上相應表目中,以使檔案目錄保持最新狀態
    5. 讀/寫檔案
      1. 用於讀寫檔案
      2. 所需引數:檔案控制代碼、使用者資料區地址、讀寫的記錄或位元組個數
      3. 處理流程:按檔案控制代碼從活動檔案表中找到該檔案的目錄項資訊;根據目錄項指出的該檔案的邏輯和物理組織方式,把相關邏輯記錄轉換成物理塊
    6. 定位檔案
      1. 用於調整所開啟檔案的讀寫指標位置
      2. 所需引數:檔案控制代碼、定位指標

輔存空間管理

  1. 磁碟等大容量輔存空間被OS及許多使用者共享,使用者程序執行期間常常要建立和刪除檔案,OS應能自動管理和控制輔存空間
  2. 隨著使用者檔案不斷建立和撤銷,檔案儲存空間會出現許多“碎片”
  3. OS解決“碎片”的辦法是整理“碎片”;在整理過程中,往往對檔案重新組織,讓其存放在連續儲存區中
  4. 分配方式
    1. 連續分配:存放在輔存空間連續儲存區中(連續的物理塊號)
      1. 優點:順序訪問時速度快,管理較為簡單,但為了獲得足夠大的連續儲存區,需定時進行“碎片”整理
    2. 非連續分配:動態分配給若干扇區或簇(幾個連續扇區),不要求連續
      1. 優點:輔存空間管理效率高,便於檔案動態增長和收縮
  5. 空閒塊的管理:位示圖
    1. 使用若干位元組構成一張表,表中每一字位對應一個物理塊,字位的次序與塊的相對次序一致。字位為“1”表示相應塊已佔用,字位為“0”狀態表示該塊空閒
    2. 主要優點:可以把位示圖全部或大部分儲存在主存中,再配合現代計算機都具有的位操作指令,可實現高速物理塊分配和去配
    3. 空閒塊成組連線法
      1. 分配演算法
        1. IF 空閒塊數=1 THEN
          1. IF 第1個單元=0 THEN 等待
          2. ELSE 複製第1個單元對應塊到專用塊並分配之
        2. ELSE 分配第(空閒塊數)個單元對應塊,空閒塊數-1
      2. 歸還演算法
        1. IF 空閒塊數<100 THEN
          1. 專用塊的空閒塊數+1,第(空閒塊數)個單元置歸還塊號
        2. ELSE 複製專用塊到歸還塊,專用塊的空閒塊數置1,第1單元置歸還塊號

檔案系統的實現層次

  1. 使用者介面:接受使用者發來的系統呼叫,進行語法檢查,進入邏輯檔案控制子系統
  2. 邏輯檔案控制子系統:根據檔案路徑名,搜尋檔案目錄,建立活動檔案表,根據檔案結構和存取方法,把邏輯記錄轉換成相對物理塊號和塊內相對地址
  3. 檔案保護子系統:識別呼叫者的身份,驗證存取許可權,判定本次檔案操作的合法性
  4. 物理檔案控制子系統:實現緩衝區管理,根據物理結構,將相對物理塊號轉換為實際物理塊號,負責檔案儲存空間的分配,生成I/O控制系統的呼叫形式
  5. I/O控制子系統:執行具體的物理塊I/O操作