OS學習筆記六:檔案系統

衣舞晨風發表於2017-10-10

一、檔案與檔案系統

1、檔案是什麼?

  • 檔案 是 對磁碟的 抽象

  • 所謂檔案 是指 一組帶標識(標識即為檔名)的、在邏輯上有完整意義的資訊項的序列

  • 資訊項:構成檔案內容的基本單位(單個位元組,或多個位元組),各資訊項之間具有順序關係

  • 檔案內容的意義:由檔案建立者和使用者解釋

2、檔案系統

  • 作業系統中統一管理資訊資源的一種軟體,管理檔案的儲存、檢索、更新,提供安全可靠的共享和保護手段,並且方便使用者使用

  • 統一 管理磁碟空間,實施磁碟空間 的分配與回收

  • 實現檔案的按名存取

    名字 空間 對映 磁碟空間

  • 實現檔案資訊的共享,並提供檔案的 保護、保密手段

  • 向 使用者提供一個方便 使用、易於維護 的 介面,並向 使用者提供 有關統計資訊

  • 提高檔案系統的效能

  • 提供與I/O 系統的 統一 介面

3、檔案分類

按檔案性質和用途分類(UNIX ):

  • 普通檔案、目錄檔案、特殊檔案( 裝置檔案) 、管道檔案、套接字

  • 普通檔案(regular):包含 了使用者的資訊,一般為ASCII 或二進位制檔案

  • 目錄檔案(directory):管理 檔案系統的系統檔案

  • 特殊檔案(special file):

    • 字元 裝置檔案:和輸入輸出有關,用於模仿序列I/O裝置,例如終端,印表機, 網 卡 等

    • 塊 裝置檔案

二、檔案的儲存介質

1、物理塊(塊block 、簇cluster )

  • 資訊儲存 、傳輸、 分配的獨立單位
  • 儲存裝置劃分為大小相等的物理塊,統一編號

2、典型磁碟結構

這裡寫圖片描述

任何時刻只有一個磁頭處於活動狀態:輸入輸出資料流以位串形式出現

實體地址形式 : 磁頭號(盤面號)、磁軌號(柱面號)、扇區號

扇區 :標題(10 位元組) 、資料(512 位元組) 、ECC 糾錯資訊(12-16 位元組)

磁臂帶動磁頭按照碟片的半徑方向移動

碟片中間的軸可以帶動碟片旋轉,平常所的多少轉就是指的這個

3、磁碟的訪問

一次訪盤請求:

讀/ 寫,磁碟地址(裝置號,柱面號,磁頭號,扇區號),記憶體地址(源/ 目)

完成過程由三個動作組成:

  • 尋道(時間) :磁頭移動定位到指定磁軌

  • 旋轉延遲(時間) :等待指定扇區從磁頭下旋轉經過

  • 資料傳輸(時間) :資料在磁碟與記憶體之間的實際傳輸

SSD沒有前兩步

三、磁碟的空間管理

1、有關的資料結構

  • 點陣圖法

    • 用一串二進位制位反映磁碟空間中分配使用情況,每個物理塊對應一位,分配物理塊為0 ,否則為1

    • 申請物理塊時,可以在位示圖中查詢為1 的位,返回對應物理塊號

    • 歸還時,將對應位 轉置1

  • 空閒塊表

    • 將 所有空閒塊記錄在一個表中,即空閒塊表

    • 主要兩項內容:起始塊號,塊數

  • 空閒塊連結串列

    • 把所有空閒塊鏈成一個鏈

    • 擴充套件:成組連結法

2、磁碟地址與塊號的轉換

已知塊號,則磁碟地址:

柱面號=[ 塊號/ (磁頭數 × 扇區數)]
磁頭號=[ (塊號mod  (磁頭數 × 扇區數))/ 扇區數]
扇區號=(塊號mod  (磁頭數 × 扇區數))mod  扇區數

已知磁碟地址:

塊號=柱面號 × (磁頭數 × 扇區數)+磁頭號 × 扇區數+扇區號

點陣圖計算公式:

已知字號i 、位號j  : 塊號=i × 字長+j
已知塊號: 字號=[  塊號/ 字長] 位號=塊號 mod 

點陣圖計算公式:

已知字號i 、位號j : 塊號=i × 字長+j

已知塊號: 字號=[ 塊號/ 字長] 位號=塊號 mod 字長

四、檔案控制塊及檔案目錄

1、檔案屬性

  • 檔案控制塊(File Control Block )
    為管理檔案而設定的資料結構, 儲存 管理檔案所需的所有有關資訊(檔案屬性或後設資料)

  • 常用屬性
    檔名,檔案號 ,檔案大小 , 檔案地址 , 建立時間,最後修改時間,最後訪問時間, 保護,口令,建立者,當前擁有者,檔案型別,共享計數,各種標誌( 只讀、隱藏、系統、歸檔、ASCII/ 二進位制、順序/ 隨機訪問、臨時檔案、鎖)

2、檔案目錄、目錄檔案、目錄項

  • 檔案目錄

    • 統一 管理每個檔案 的後設資料,以支援檔名到檔案實體地址的轉換

    • 將所有檔案的管理資訊組織在一起,即構成檔案目錄

  • 目錄檔案

    • 將檔案目錄以檔案的形式存放在磁碟上
  • 目錄項

    • 構成檔案目錄的基本單元

    • 目錄項 可以 是FCB , 目錄是 檔案控制 塊的有序集合

五、檔案的物理結構

1、檔案的物理結構

  • 檔案 在儲存介質 上的存放方式

  • 主要解決兩個問題:

    • 假設一個檔案被劃分成N 塊,這N 塊在磁碟上是怎麼存放的?

    • 其地址( 塊號或簇號) 在FCB

2、Unix的三級索引結構

UNIX 檔案系統採用的是多級索引結構( 綜合模式)

  • 每個檔案的索引表有15 個索引項,每項2 個位元組

  • 前12 項直接存放檔案的物理塊號(直接定址)

  • 如果檔案大於12 塊,則利用第13 項指向一個物理塊,在該塊中存放檔案物理塊的塊號(一級索引表)假設扇區大小為512 位元組,物理塊等於扇區塊大小,一級索引表可以存放256 個物理塊號

  • 對於更大的檔案還可利用第14 和第15 項作為二級和三級索引表

試問:採用這種結構,一個檔案最大可達到 ? 個物理塊

這裡寫圖片描述

六、檔案系統的實現

1、概述

  • 實現檔案系統需要考慮
    磁碟上 與 記憶體中 的 內容 佈局
  • 磁碟上
    • 如何啟動作業系統?
    • 磁碟是怎樣管理的?怎樣獲取磁碟的有關資訊?
    • 目錄檔案在磁碟上怎麼存放?普通檔案在磁碟上怎麼存放?
  • 記憶體中
    • 當程式 使用檔案時 ,作業系統是如何支援的?
    • 檔案系統的記憶體資料結構

2、相關術語

  • 磁碟分割槽(partition) :
    把 一個 物理磁碟 的儲存空間劃分為幾個相互獨立的部分,稱為 分割槽

  • 檔案卷(volume) :磁碟上的邏輯分割槽,由一個或多 個物理塊( 簇) 組成

    • 一個檔案卷 可以是整個磁碟 或 部分磁碟 或 跨盤(RAID )
    • 同 一個檔案卷中 使用同一份管理資料 進行檔案 分配和磁碟空閒空間管理 ,不同 的檔案卷 中的 管理 資料是相互獨立的

    • 一個檔案 捲上:包括檔案系統 資訊、一組檔案(使用者檔案、目錄檔案)、未分配空間

    • 塊 (Block )或 簇 (Cluster ) : 一 個或多個(2 的冪)連續的 扇區,可 定址資料塊

  • 格式化(format) :在一個檔案捲上建立檔案系統,即建立並初始化 用於檔案 分配和磁碟空閒空間管理的 管理資料

3、磁碟上的內容

  • 引導 區

    包括 了 從該卷引導作業系統所需要的資訊每個卷(分割槽)一個,通常為第一個扇區

  • 卷(分割槽)資訊

    包括該卷(分割槽)的塊(簇)數、 塊(簇)大小 、空閒 塊(簇)數量 和指標、空閒FCB 數量和指標……

  • 目錄檔案( 根目錄檔案及其他目錄檔案)
  • 使用者檔案

4、記憶體中需要的資料結構–以UNIX為例

這裡寫圖片描述

七、檔案系統例項–UNIX

1、檔案目錄檢索

這裡寫圖片描述

2、目錄檔案實現時改進

  • 提問:如何加快目錄檢索?

  • 一種解決方案:

    目錄項分解法:即把FCB 分成兩部分

    • 符號目錄頂

      檔名,檔案 號

    • 基本目錄項

      除 檔名 外的所有 欄位

    例子:UNIX 的I 節點(索引節點 或 inode)

3、改進後的好處

這裡寫圖片描述

4、UNIX檔案系統

  • FCB = 目錄項 + i 節點

  • 目錄項:檔名 + i 節點號

  • 目錄 檔案由目錄項構成

  • i 節點 :描述檔案的相關 資訊

  • 每個檔案由一個目錄項、一個i 節點和若干磁碟塊構成

八、檔案系統例項——FAT

1、檔案分配表FAT

  • 可以把檔案分配表 看成 是 一個整數陣列 ,每個 整數 代表 磁碟分 區 的一個簇 號

  • 狀態

    未使用、壞簇、系統保留、被檔案佔用(下一簇簇號)、最後一簇(0xFFFF )

  • 簇 號從0 開始編號,簇0 和簇1 是保留的

這裡寫圖片描述

3、FAT32檔案系統

這裡寫圖片描述

九、檔案系統的管理

1、檔案系統一致性

  • 問題的產生:

    磁碟塊 → 記憶體 → 寫回磁碟塊

    若在寫回之前,系統崩潰,則檔案系統出現不一致(這裡的一不一致指的是:後設資料,比如FCB什麼的,而不是某個檔案的內容)

  • 解決方案:

    設計一個實用程式,當系統再次啟動時,執行該程式,檢查磁碟塊和目錄系統

2、磁碟塊的一致性檢查

這裡寫圖片描述

  1. 如果空閒塊中值為0,而使用塊中的記錄為1,則修改空閒塊中的記錄為1

  2. 如果空閒塊中值為1,而使用塊中的記錄為0,則修改空閒塊中的記錄為0

  3. 如果空閒塊中值為0,而使用塊中的記錄為2,則需要重新分配一個空閒塊來儲存多出來的那份使用塊,並修改之前使用塊記錄為1

3、檔案系統的寫入策略

  • 通 寫(write-through )

    記憶體 中的修改立即寫到磁碟

    缺點 :速度效能差

    例 : FAT 檔案系統

  • 延遲 寫(lazy-write )

    利用回 寫(write back )快取 的方法得到高速

    可恢復性 差

  • 可 恢復寫(transaction log )

    採用 事務日誌來實現檔案系統的寫入

    既 考慮安全性,又考慮速度效能

    例 :NTFS

4、UNIX的檔案訪問控制

這裡寫圖片描述

十、檔案系統的效能

1、檔案系統的效能問題

  • 磁碟服務

    → 速度成為系統效能的主要瓶頸之一

  • 設計檔案系統應儘可能減少磁碟訪問次數

  • 提高檔案系統效能的方法:

    目錄 項(FCB) 分解 、當前目錄、磁碟 碎片 整理塊快取記憶體 、磁碟排程、提前讀取、合理分配磁
    盤空間、資訊的優化分佈、RAID 技術… …

2、塊快取記憶體(BLOCK CACHE)

又 稱為 檔案 快取 、磁碟快取記憶體 、緩衝區快取記憶體

是指: 在 記憶體中為磁碟 塊 設定的一個緩衝區, 儲存了磁碟 中 某些 塊 的副本

  • 檢查所有的讀請求,看所 需塊 是否在塊快取記憶體 中

  • 如果 在,則可直接進行讀操作;否則,先將資料塊讀入塊快取記憶體, 再拷貝到所需的地方

  • 由於訪問的區域性性 原理 ,當一資料塊 被 讀 入 塊 快取記憶體 以滿足一個I/O 請求時, 很可能 將來還會 再次訪問 到 這 一 資料

3、提前預取

  • 思路:每次訪問磁碟,多讀入一些磁碟塊

  • 依據:程式執行的空間區域性性原理

  • 開銷: 較小( 只有資料傳輸時間)

  • 具有針對性

4、合理分配磁碟空間

分配 磁碟 塊 時,把有可能順序存取的塊放在 一起

→ 儘量 分配在同一柱面上,從而減少磁碟臂的 移動次數和距離

這裡寫圖片描述

5、磁碟排程

  • 當 有 多 個訪盤 請求等待 時,採用一定的策略,對這些請求的服務順序調整 安排

    → 降低 平均磁碟服務時間,達到公平、高效

  • 公平:一個I/O 請求在有限時間內滿足

  • 高效:減少裝置 機械運動帶來 的

一次訪盤時間 = 尋道時間+ + 旋轉延遲時間+ + 傳輸時間

• 減少尋道時間

• 減少延遲時間

6、磁碟排程演算法

  1. 先來先 服務(FCFS)
  2. 最短尋道時間 優先(Shortest Seek Time First)
  3. 掃描 演算法SCAN ( 電梯演算法)
  4. 單向掃描排程演算法C-SCAN
  5. N-step-SCAN 策略
  6. FSCAN 策略
  7. 旋轉排程演算法

7、RAID技術

  • RAID (獨立磁碟冗餘陣列)

    (Redundant Arrays of Independent Disks)
    多塊磁碟按照一定 要求 構成一 個 獨立的 儲存裝置

  • 目標: 提高 可靠性 和 效能

  • 考慮:磁碟 儲存系統 的 速度、容量、容錯、資料災難發生後的資料恢復

8、RAID技術的思想

資料是如何組織的?

  • 通過 把多個磁碟組織在一起,作為一個邏輯卷提供磁碟跨越功能
  • 通過 把資料分成多個資料塊, 並行 寫入/ 讀出多個磁碟,以提高資料傳輸率( 資料分條stripe )
  • 通過 映象或校驗操作,提供容錯能力( 冗餘 )

最簡單的RAID 組織方式: 映象

最複雜的RAID 組織方式: 塊交錯校驗

9、RAID 0 –條帶化

  • 資料分佈 在陣列的所有磁碟上

  • 有資料請求時,同時多個磁碟並行操作

  • 充分利用匯流排頻寬,資料吞吐率提高,驅動器負載均衡

無冗餘(即無差錯控制)

效能最佳

10、RAID 1 –映象

  • 最大限度保證資料安全及可恢復性
  • 所有資料同時存在於兩塊磁碟的相同位置
  • 磁碟利用率50%

資料安性最好

11、RAID 4 –交錯塊奇偶校驗

  • 帶奇偶校驗

  • 以資料塊為單位

本文整理自:《作業系統原理》北京大學_陳向群 講義

個人微信公眾號:
這裡寫圖片描述

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章