1. 程式人生 > 其它 >第四章 檔案系統

第四章 檔案系統

 所有計算機程式都需要儲存和檢索資訊。

 直接在程序的虛擬地址空間儲存資訊會遇到幾個問題

1. 虛擬地址空間容量小
2. 虛擬空間資訊不能長期儲存
3. 不能多個程序同時訪問同一資訊

  因此長期儲存資訊需要滿足三個基本要求:

  1. 能夠儲存大量資訊
  2. 資訊能夠長期(幾天甚至幾年)儲存
  3. 能使多個程序能夠共享資訊

  磁碟天然適合用作長期儲存大量資料(近年來有被固態硬碟代替的趨勢)。 此處先把磁碟當做一個大陣列,有如下兩個基本操作:

  1. 讀塊K
  2. 寫塊K

 檔案系統是作業系統中負責檔案的構造,訪問, 保護,實現的內容。本章前兩節介紹檔案的邏輯結構, 後面介紹檔案的物理結構。

4.1 檔案

4.1.1 檔案命名

 任何一種抽象機制最重要的特性就是對管理物件的命名方式。

 檔案的具體命名規則在不同的作業系統中的實現是不同的。

  1. Unix作業系統區分大小寫,而MS_DOS作業系統不區分.
  2. Unix作業系統副檔名寬鬆,但MS-DOS關注副檔名

4.1.2 檔案結構

 檔案系統可分為三種構造方式:位元組序列,記錄序列,樹。

  1. 位元組序列。(Unix和Windows)(靈活) 作業系統不關心也不知道檔案內容是什麼, 所看到的就是位元組。其檔案內容的含義只在使用者程式中解釋。
  2. 記錄序列。(早期大型計算機)檔案由一組有結構的相同長度的記錄組成。
  3. 樹。(現代大型資料計算機) 檔案由一組不同長度的記錄組成的樹組成。記錄的固定部分有一個鍵欄位。

4.1.3 檔案型別

  UNIX支援包括普通檔案(包含使用者資訊), 目錄(管理檔案系統結構), 字元特殊檔案(序列I/O類裝置), 塊特殊檔案(磁碟)在內的多種檔案型別。

普通檔案又被分為

  1. ASCII檔案。 可以顯示和列印,用文字編輯器編輯
  2. 二進位制檔案。 難以理解,只有特殊的程式瞭解其內部結構。例如可執行二進位制檔案。

4.1.4 檔案訪問

  1. 順序訪問(早期只有這一種)
  2. 隨機訪問

4.1.5 檔案屬性

  檔案除檔名還有檔案資料以外還有檔案屬性。
與檔案保護有關的:

  1. 保護。 誰可以訪問檔案,以什麼方式訪問檔案
  2. 口令。 訪問檔案需要的口令
  3. 建立者。 建立檔案的使用者ID
  4. 所有者。 當前所有者
    控制或啟用某些特殊屬性:
  5. 只讀標誌
  6. 隱藏標誌
  7. 系統標誌
  8. 存檔標誌
    等等

4.1.6 檔案操作

  1. create:建立不包含任何資料的檔案,並設定檔案屬性。
  2. delete: 釋放檔案磁碟空間
  3. open: 把檔案屬性和磁碟地址表裝入記憶體以方便後續操作
  4. close: 刪除記憶體中的檔案屬性和磁碟地址表
  5. read:(指明資料大小和讀入記憶體地址)
  6. write: 從檔案當前位置寫入資料
  7. append:在檔案尾寫入資料
  8. seek: 設定檔案位置指標
  9. rename:重新命名檔案

4.2 目錄

檔案系統提供目錄記錄檔案的位置。

目錄按結構可分為:

  1. 一級目錄結構:(早期計算機,嵌入式)(尋找檔案困難)
  2. 層次目錄結構

目錄操作

  1. create: 建立目錄結構
  2. delete: 刪除目錄,只有空目錄可被刪除
  3. opendir : 相當於開啟檔案
  4. closedir: 關閉目錄釋放使用者表空間
  5. link: (硬連結)指定路徑名和檔名,建立一個連結
  6. unlink: 考慮硬連結的刪除(硬連結更有效, 軟連線更靈活)