OS學習筆記六:檔案系統
一、檔案與檔案系統
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、磁碟塊的一致性檢查
如果空閒塊中值為0,而使用塊中的記錄為1,則修改空閒塊中的記錄為1
如果空閒塊中值為1,而使用塊中的記錄為0,則修改空閒塊中的記錄為0
如果空閒塊中值為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、磁碟排程演算法
- 先來先 服務(FCFS)
- 最短尋道時間 優先(Shortest Seek Time First)
- 掃描 演算法SCAN ( 電梯演算法)
- 單向掃描排程演算法C-SCAN
- N-step-SCAN 策略
- FSCAN 策略
- 旋轉排程演算法
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
相關文章
- OS學習筆記七:IO系統筆記
- 北航OS課程筆記--七、檔案系統筆記
- Linux檔案型別(學習筆記六)Linux型別筆記
- linux磁碟和檔案系統的學習筆記Linux筆記
- QFS檔案系統-學習記錄
- os/signal學習筆記筆記
- Javascript 學習 筆記六JavaScript筆記
- Java學習筆記之檔案Java筆記
- RHCE7認證學習筆記15——訪問檔案系統筆記
- OS學習筆記八:死鎖筆記
- 記憶體檔案系統的再學習記憶體
- HexMap學習筆記(六)——河流筆記
- android學習筆記六Android筆記
- Spss 學習筆記(六)SPSS筆記
- DVWA-檔案包含學習筆記筆記
- 【C#學習筆記】讀檔案C#筆記
- 【C#學習筆記】寫檔案C#筆記
- 學習筆記:robots.txt檔案筆記
- OS學習筆記四:同步機制筆記
- OS學習筆記五:儲存模型筆記模型
- 分散式系統學習筆記分散式筆記
- 作業系統學習筆記作業系統筆記
- OpenCV學習筆記(六)——對XML和YAML檔案實現I/O操作OpenCV筆記XMLYAML
- Bada學習-檔案系統
- vue學習筆記(六) ----- vue元件Vue筆記元件
- 大資料學習筆記(六)大資料筆記
- 忽略某些檔案 —— Git 學習筆記 05Git筆記
- 【C#學習筆記】儲存檔案C#筆記
- 【C#學習筆記】播放wav檔案C#筆記
- redo日誌檔案學習筆記(一)筆記
- C++學習筆記----讀寫檔案C++筆記
- C、作業系統學習筆記作業系統筆記
- 系統程式設計學習筆記程式設計筆記
- RHCE7認證學習筆記24——磁碟、分割槽和檔案系統管理筆記
- 北航OS課程筆記--六、磁碟管理筆記
- ros學習檔案系統介紹ROS
- 【AIX 學習】檔案系統--監視AI
- 【AIX 學習】檔案系統之 PROCAI