檔案系統基礎

AH20發表於2024-10-19

初識檔案系統

img

檔案是以硬碟位載體儲存在計算機上的資訊集合,在系統執行時,計算機以程序為基本單位進行資源的排程與分配而在使用者進行的輸入、輸出中,則以檔案為基本單位。這就需要作業系統有一個檔案管理系統。

作業系統的檔案管理系統需要關心以下內容:

  • 計算機中存放了各種各樣的檔案,一個檔案有哪些屬性?
  • 檔案內部的資料應該怎樣組織起來?
  • 檔案之間又應該又應該怎麼組織起來?
  • 從下往上看,OS應提供哪些功能,才能方便使用者、應用程式使用檔案?
  • 從上往下看,檔案資料應該怎麼存放在外存(磁碟)上?

下面我們來依次探討這些問題

檔案的屬性

一個檔案應該具有如下屬性:

  • 檔名:由建立檔案的使用者決定檔名,主要是為了方便使用者找到檔案,同一目錄下不允許有重名檔案
  • 識別符號:一個系統內的各檔案識別符號唯一,對使用者來說毫無可讀性,因此識別符號只是作業系統用於區分各個檔案的一種內部名稱。
  • 型別:指明檔案的型別,開啟不同型別的檔案時,作業系統要做不同的處理
  • 位置:檔案存放的路徑(讓使用者使用);在外存中的地址(作業系統使用,對使用者不可見)
  • 大小:指明檔案大小
  • 建立時間、上次修改時間、檔案所有者資訊
  • 保護資訊:對檔案進行保護的訪問控制資訊

檔案的邏輯結構

img

按檔案是否有結構分類,可以分為無結構檔案、有結構檔案兩種。

  • 無結構檔案:檔案內部的資料就是一系列二進位制流或字元流組成。又稱“流式檔案”。如:Windows 作業系統中的 .txt 檔案。由於無結構檔案沒有結構,所以對記錄的訪問只能透過窮舉搜尋的方式,因而這種檔案形式對很多應用不合適。

  • 有結構檔案:由一組相似的記錄組成,又稱“記錄式檔案”每條記錄由若干個資料項組成。如:資料庫表檔案。一般來說,每條記錄有一個資料項可作為關鍵字。根據各條記錄的長度(佔用的儲存空間)是否相等,又可分為定長記錄和可變長記錄兩種。

有結構檔案的組織形式可以分為順序檔案、索引檔案、索引順序檔案

順序檔案

img

檔案中的記錄一個接一個地順序排列,記錄可以是定長記錄或變長記錄。順序檔案中記錄的排列有兩種結構:①串結構,各記錄之間的順序與關鍵字無關,通常是按存入的先後時間進行排列,檢索時必須從頭開始順序依次查詢,比較費時;②順序結構,所有記錄按關鍵字順序排列,對於定長記錄的順序檔案,檢索時可採用折半查詢,效率較高。

在對記錄進行批次操作,即每次要讀或寫一大批記錄時,順序檔案的效率是所有邏輯檔案中最高的。此外,對於順序儲存裝置(如磁帶),也只有順序檔案才能被儲存並能有效地工作。在經常需要查詢、修改、增加或刪除單個記錄的場合,順序檔案的效能較差。

索引檔案

img

另外,也可以使用不同的資料項建立多個索引表,如學號和姓名各建立一張索引表

索引順序檔案

索引順序檔案是順序檔案和索引檔案的結合。最簡單的索引順序檔案只使用了一級索引,先將變長記錄順序檔案中的所有記錄分為若干組,然後為檔案建立一張索引表,併為每組中的第一個記錄建立一個索引項,其中包含該記錄的關鍵字和指向該記錄的指標。

如圖4.5所示,主檔案包含姓名和其他資料項,姓名為關鍵字,記錄按姓名的首字母分組,同一個組內的關鍵字可以無序,但是組與組之間的關鍵字必須有序。將每組的第一個記錄的姓名及其邏輯地址放入索引表,索引表按姓名遞增排列。檢索時,首先查詢索引表,找該記錄所在的組,然後在該組中使用順序查詢,就能很快地找到記錄。

img

img

直接檔案和雜湊檔案

給定記錄的鍵值或透過雜湊函式轉換的鍵值直接決定記錄的實體地址。 雜湊檔案具有很高的存取速度,但是會引起衝突,即不同關鍵字的雜湊函式值可能相同。 複習了資料結構的讀者讀到這裡時,會有這樣的感覺:有結構檔案邏輯上的組織,是為在檔案中查詢資料服務的(順序查詢、索引查詢、索引順序查詢、雜湊查詢)。

img

相關文章