1. 程式人生 > >第七章 檔案管理

第七章 檔案管理

檔案控制塊—FCB

  1. 為了能對一個檔案進行正確的存取,必須為檔案設定用於描述和控制檔案的資料結構,稱之為“檔案控制塊”(FCB)
    1. 檔案與檔案控制塊一一對應
    2. 記錄檔名及其存放地址、檔案的說明和控制資訊。(是誰?在哪裡?什麼權?)
    3. 檔案管理程式藉助於檔案控制塊中的資訊對檔案施以各種操作。

              把檔案控制塊的有序集合稱為檔案目錄,即一個檔案控制塊就是一個目錄項。通常一個檔案目錄也被看作是一個檔案,稱為目錄檔案

5、目錄管理

  1. 對檔案實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:
    1. 基本資訊記錄(FCB,目錄項)
    2. 方便檢索、管理(目錄操作)
  2. 目錄管理的要求如下:
    1. 實現“按名存取”;(最基本功能)
    2. 提高對目錄的檢索速度;
    3. 檔案共享;

允許檔案重名。

  1. FCB內容

 

  1. 對於連續檔案:檔案起始塊號;
  2. 對於連結檔案:指向第一個物理塊的指標;
  3. 對於索引檔案:索引表地址。

 

  1. 在檔案控制塊中,通常含有以下三類資訊。
  1. 基本資訊類
    • 包括檔名,檔案物理位置,檔案邏輯結構,檔案的物理結構。
  2. 存取控制資訊類
    • 包括檔案主的存取許可權,核准使用者的存取許可權和一般使用者的存取許可權。
  3. 使用資訊類
    • 建立日期和時間、檔案上次修改的日期和時間
    • 當前使用資訊:開啟該檔案的程序數、是否被程序鎖住、是否已修改等。

 

 

關於檔案檢索的速度:

  1. 檔案FCB組成的“目錄”檔案存放於磁碟;需要時,要從磁碟將目錄內容調入記憶體進行檢索和使用。
  2. 如果目錄佔用5個盤塊,則至多
    需啟動5次磁頭讀寫,如何提高檢索速度?

 

2)索引結點

  1. 索引結點的引入
    1. 檔案目錄佔越大量的盤塊,需進行的磁碟讀寫開銷越大。減少實際檢索的資訊量就減少移動磁頭的開銷,提高速度;
    2. 目錄一般是按名檢索。而直到找到正確檔案前,只關心檔名,不需要其它的檔案描述資訊,目錄中這部分內容的調入不是必須的。
    3. 所以:將檔名、檔案具體資訊分開,使檔案描述資訊單獨形成一個索引結點。

 

 

索引結點由外存到記憶體的過程中有不同的形式:

  1. 磁碟索引結點
    1. 存放在磁碟上的索引結點。主要包括以下內容:檔案主識別符號、檔案型別、檔案存取許可權、檔案實體地址、檔案長度、檔案連線計數、檔案存取時間。
  2. 記憶體索引結點
    1. 檔案被開啟後,將磁碟索引結點拷貝到記憶體索引結點中以便使用。比磁碟索引結點增加了以下內容:索引結點編號、狀態、訪問計數、檔案所屬檔案系統的邏輯裝置號、連結指標。

 

3) 目錄結構

  1. 目錄結構的組織,關係到檔案系統的存取速度,也關係到檔案的共享性和安全性。
  2. 組織好檔案的目錄,是設計好檔案系統的重要環節。
  3. 目前常用的目錄結構形式有
    1. 單級目錄
    2. 兩級目錄
    3. 多級目錄

 

單級目錄結構(Single-Level Directory)

  1. 最簡單的目錄結構。
  2. 整個檔案系統中只建立一張目錄表,每個檔案一個目錄項,含有檔案相關資訊。

每建立一個新檔案:

    1. 先檢索所有的目錄項,保證檔名唯一。
    2. 獲得一空白目錄項,填入相關資訊,修改狀態位(表明每個目錄項是否空閒)。

刪除一個檔案:

    1. 找到對應目錄項,回收檔案所佔用空間
    2. 清除目錄項

 

  1. 優點:簡單、能實現目錄管理的基本功能——按名存取。
  2. 缺點:
    1. 檔案檢索時需搜遍整個目錄檔案,範圍大速度慢。
    2. 不允許重名。名字過多難於記憶,對於多使用者環境重名難以避免。
    3. 不便於實現檔案共享(因為不能重名,不同使用者使用的共享檔案必須不同名字,標識哪些使用者共享檔案也不方便),一般只適用單機環境。

 

②兩級目錄結構( Two-Level Directory )

  1. 為每一個使用者建立一個單獨的使用者檔案目錄UFD,UFD由使用者所有檔案的檔案控制塊組成。
  2. 系統建立一個主檔案目錄MFD, MFD中每個使用者目錄檔案都佔有一個目錄項,其中包括使用者名稱和指向UFD的指標。

 

 

兩級目錄的特點

  1. 基本克服了單級目錄的缺點,並具有以下優點:
    1. 提高了檢索目錄的速度。
    2. 在不同的目錄中可重名。
    3. 不同使用者還可以使用相同/不同的檔名來訪問系統中的同一個共享檔案。

不提供子目錄操作,還不方便;各使用者之間被完全隔離的話使用者訪問其他使用者檔案時,不方便合作

 

 

③多級目錄結構

  1. 適用於較大的檔案系統管理。又稱為樹狀目錄(tree-like)
  2. 在檔案數目較多時,便於系統和使用者將檔案分散管理。
    1. 層次結構更清晰、提供更靈活的許可權管理等
    2. 但目錄級別太多時也會增加路徑檢索層次,增加磁碟訪問時間。
  3. Tree-Structured Directories (樹型目錄)

 

 

相關名詞:

  1. 目錄結構
    1. 主目錄稱為根目錄,資料檔案為樹葉,其它目錄為結點。多級目錄縮小檢索範圍提高檢索速度和檔案系統的效能。
  2. 路徑名
    1. 從根目錄到任何資料檔案都只有一條唯一通路。目錄檔名和資料檔名依次用“/”連線起來,即構成資料檔案的路徑名
  3. 當前目錄
    1. 為每個程序設定一個“當前目錄”,又稱“工作目錄”。
    2. 從當前目錄開始,逐級經過中間的目錄檔案,最後達到要訪問的資料檔案。這一路徑上的目錄和資料檔名用“/”連線成路徑名,稱為相對路徑名。
    3. 從根開始的路徑名稱為絕對路徑名

 

4)目錄查詢技術

  1. 使用者要訪問一個已存檔案
    1. 目錄資料調入記憶體;
    2. 按名檢索:系統利用提供的檔名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
    3. 找該檔案控制塊
    4. 讀FCB或對應索引結點;
    5. 從檔案實體地址換算出檔案在磁碟上的物理位置;
    6. 最後通過磁碟驅動程式,將所需檔案讀入記憶體。
  2. 目錄查詢方式:線性檢索法和Hash方法。

 

線性檢索法

  1. 又稱為順序檢索法。
  2. 單級目錄中
    1. 使用者提供檔名,順序查詢檔案目錄。
  3. 樹型目錄中
    1. 使用者提供路徑名,如/user/ast/mbox
    2. 對多級目錄進行逐層查詢。

*Hash方法

  1. 曾介紹的Hash檔案。
  2. 如果建立了一張Hash索引檔案目錄,便可利用Hash方法進行查詢
  3. 系統將使用者提供的檔名變換為檔案目錄的索引值,再利用該索引值到目錄中去查詢,將顯著的提高檢索速度。
  4. 對於使用萬用字元的檔案名系統無法利用Hash法檢索目錄,還是需用線性查詢法。

 

綜合練習

  1. 有一檔案系統如圖1所示。圖中的框表示目錄,圈表示普通檔案。每個磁碟塊有512個位元組。普通檔案的一頁與盤塊大小等長。
  • 根目錄常駐記憶體,目錄檔案物理結構組織成連結檔案,每個目錄檔案磁碟塊最後4個位元組供連結使用。
  • 目錄表目指示下一級檔名及其磁碟地址(各佔2個位元組,共4個位元組)。若下級檔案是目錄檔案,指示其第一個磁碟塊地址。若下級檔案是普通檔案,指示其檔案控制塊的磁碟地址。

       (一個盤塊可存放127個目錄項)

  • 普通檔案組織成索引檔案。

       (一個索引盤塊512B,可存放256個盤塊索引2B)

  • 下級檔案在上級目錄檔案中的次序在圖中為自左至右。

 

 

 

  • 前10個地址直接指示該檔案前10頁的地址。
  • 第11個地址指示1級索引表地址,一級索引表中每個磁碟地址指示一個檔案頁地址;
  • 第12個地址指示2級索引表地址,二級索引表中每個地址指示一個一級索引表地址;
  • 第13個地址指示3級索引表地址,三級索引表中每個地址指示一個二級索引表地址。

 

 

 

 

問:

    1. 一個普通檔案最多可有多少個檔案頁?
    2. 若要讀檔案J中某一頁,最多啟動磁碟多少次?
    3. 若要讀檔案W中某一頁,最少啟動磁碟多少次?
    4. 就上一問而言,為最大限度減少啟動磁碟次數,可採用什麼方法?此時,磁碟最多啟動多少次?

 

  • 普通檔案組織成索引檔案,普通檔案的一頁與盤塊大小等長。 C=10+256+256^2+256^3
  • 根目錄常駐記憶體,下級檔案在上級目錄檔案中的次序在圖中為自左至右。讀入A,讀入D,讀入J:1+1+c
  • 讀入C,I,P,U,W:1+1+1+1+1
  • 儘量減少目錄項內容使一塊能存放更多目錄項/常用目錄快取、多級目錄常駐記憶體、則目錄檢索則最多5/0次磁碟操作,啟動次數就決定於檔案佔用的盤塊數

 

 

6、檔案共享與保護

 

1)檔案共享

  1. 多個使用者共享一份檔案,只保留檔案的一份副本,節約儲存空間
  2. 共享範圍:單機系統/多主機系統/網路範圍
  3. 20世紀六七十年代,出現了若干檔案早期共享方法,繞彎路法、連訪法等,逐漸發展為現代一些共享方式
    1. 索引結點
    2. 符號鏈

①索引結點法

  1. 基本FCB法:
    1. 名+詳細資訊。
    2. 直接在檔案目錄中包含檔案的實體地址,該方法實現的共享不適用檔案動態變化。一個使用者對檔案的修改(如物理塊號增加),對其他使用者不可見,共享檔案的FCB資訊記錄同步更新困難。
  2. 檔名+索引結點指標。
    1. 一個使用者修改指標指向地址裡的內容,指標不變,其他使用者通過指標總能感知索引結點中的最新內容
    2. 索引結點中增加count計數
    3. 主人刪除操作問題:
  1. 刪,共享使用者訪問錯誤;不刪,計費問題。

 

 

②符號鏈法

    1. 建立一個link型別的檔案:“檔名+共享檔案路徑”(類似快捷方式)
    2. 檔案主人刪除檔案,共享者只會出現找不到檔案錯誤。不會發生共享檔案刪除後出現懸空指標的情況。
    3. 該方法適用於網路檔案共享,但根據路徑檢索共享檔案的目標位置增加了訪問開銷,link檔案獨佔索引結點也耗費一定的空間
  1. 無論哪種共享,連結就對應一個檔案,如果遍歷複製整個目錄內的檔案,可能會從多條路徑對共享檔案進行多次訪問

 

2)磁碟容錯

SFT,system fault tolerance

  1. 防止磁碟故障造成的檔案不安全
  2. SFT I:磁碟表面故障
    1. 雙目錄、雙檔案分配表(空間冗餘)
    2. 寫後讀校驗、熱修復重定向(時間操作冗餘)
      1. 寫入磁碟後再讀回記憶體做一致性校驗
      2. 熱修復寫過程:從壞道重定向到專區並記錄
  3. SFT II:磁碟驅動器、控制器故障
    1. 驅動器故障:磁碟映象
    2. 控制器故障:磁碟雙工——並行控制器,分離搜尋加快讀取

 

  1. SFT III:高階容錯技術
    1. 雙機熱備份
    2. 雙機互備份
    3. 公用磁碟模式

 

*資料一致性

  1. 一個數據分別儲存到多個檔案中,典型的如資料庫
  2. 保證資料一致性:

       高可靠儲存器(冗餘保證穩定,磁碟雙工)+ 一致性軟體

  1. 概念
    1. 事務:對資料各處儲存位置訪問、修改使其維持一致性的一次操作。
    2. 事務記錄:記錄事務執行時資料項修改全部資訊的資料結構:事務名、資料項名、舊值、新值。
    3. 恢復演算法:利用事務記錄表處理已完成、未完成事務。
    4. 檢查點:每隔一段時間,將記憶體中的事務記錄表、已修改資料、檢查點輸出到穩定儲存器,
  2. 併發控制
  3. 重複資料的一致性

 

要點問答

  • 存放在磁碟上的檔案訪問順序如何:

既可隨機訪問,又可順序訪問。

  • 作業系統中對資訊進行管理的部分叫:

檔案系統。

  • 檔案系統是:

檔案、管理檔案的軟體及資料結構的總體。

  • 從使用者角度看,檔案系統的主要目的是:

實現對檔案的按名存取。

  • 按檔案的邏輯結構將檔案分為兩大類:

記錄式檔案和流式檔案。

  • 使用位示圖(20行、30列)表示空閒盤塊狀態。當分配的盤塊號為132號時,其在位示圖中的行、列數為(行為0-19、列為0-29,首盤塊號為1) 4、11。當釋放的盤塊號為318時,其在位示圖中的行、列數為:

B=i*30+j+1;   b-1=i*30+j

i=b-1 div 30=10;mod= j=17

 

  • 為了解決不同使用者的檔案“命名衝突”問題,通常在檔案系統中採用:

多級目錄結構。

  • 按物理結構劃分,檔案主要有三類:

順序檔案、連結檔案、索引檔案。

  • 作業系統實現按名存取的關鍵在於:

解決檔名與檔案儲存地址的轉換。

 

  • 檔案系統提供了哪些基本操作?
  • 若有甲乙兩個使用者,甲使用者有兩個檔案A、B,乙使用者有三個檔案A、C、D,甲使用者的檔案A與乙使用者的檔案A不是同一個檔案。甲使用者的檔案B與乙使用者的檔案B是同一個檔案。請設計一個目錄組織方案,並畫圖說明。
  • 設某系統磁碟共有1600塊,塊號從0-1599,若用位示圖管理這1600塊的磁碟空間,問位示圖需要多少個位元組?
  • 什麼是檔案的物理結構和邏輯結構?
  • 檔案順序存取與隨機存取的主要區別是什麼?它們對有結構檔案和無結構檔案有何不同?