1. 文件是進程創建的信息邏輯單元
操作系統中處理文件的部分稱爲文件系統。
所有系統都允許用1到8個字母組成的字符串作爲合法的文件名。
2. 文件結構
字節序列,記錄序列、樹
3. 文件類型
普通文件和目錄
普通文件:ASCII文件(可打印,編輯)和二進制文件。
UNIX還有字符特殊文件(用於串行的I/O類設備文件)和塊特殊文件(用於磁盤類設備)。
4. 文件存取
順序存取和隨機存取
5. 文件屬性
6. 文件操作
Create,Delete,Open,Close,Read,Write,Append,Seek,Get attributes,Set Attributes,Rename
7. 目錄
一級目錄系統和層次目錄系統
路徑名:絕對路徑名和相對路徑名
目錄操作:Create,Delete,Opendir,Closedir,Readdir,Rename,Link,Unlink
8. 文件系統的實現
文件系統的佈局
- 盤分區,每分區中一獨立的文件系統。MBR( Master Boot Record主引導記錄) ,
- 啓動時,BIOS讀入並執行MBR。MBR確定活動分區,讀入它的第一塊(引導塊\boot block),並執行之。引導塊中的程序將裝入該分區中的操作系統。
- Super block(超級塊)包含文件系統的所有關鍵參數(確定文件系統類型用的魔數、文件系統中數據塊的數量及其他重要的管理信息等),在計算機啓動時、或在該文件系統首次使用時,將超級塊讀入內存。
- i-nodes (i節點)----數組。
文件存儲
1) 連續分配
特點:實現簡單,讀性能較好;但隨時間流失,磁盤會變得零碎.
適應於CD-ROM,DVD以及其他一次性寫光學介質
2) 鏈表分配
沒有碎片,順序讀取方便,但隨機讀取緩慢,每個磁盤塊大小不再是2的整數次冪(因指針佔一些字節)
3) 在內存中採用表的鏈表分配:文件分配表FAT
可隨機存取,但表佔內存空間大。FAT方案對於大磁盤不太合適。
4) i節點
給每個文件賦予一個i節點(n字節),其中列出文件屬性和文件塊的磁盤地址
對開文件時,其i節點纔在內存,最多打開k個文件,則內存最多需要kn個字節
但文件大小超出i節點能容納的數目時,最後的盤塊採用指針塊地址
9. 目錄的實現
目錄系統的主要功能是將ASCII文件名映射成定位文件數據所需的信息
何處存放文件屬性?
a) 文件屬性直接存放在目錄項中
目錄中有固定大小的目錄項,每個文件對應一項,其中包含文件名(定長)、屬性結構和磁盤地址。
b) 對i節點系統,把文件屬性存放在i節點中,目錄項只有文件名和i節點號。
變長文件名如何存儲?
a) 在行中:文件名放在固定部分後,目錄項長度不固定,移走文件後,會引入長度可變的空隙。
b) 在堆中:目錄項都有固定長度,文件名放置在目錄後面的堆中。
散列表:優點:查找非常迅速,缺點:需要複雜的管理。
10. 共享文件
文件系統本身是一個有向無環圖,而不是一棵樹。
共享的兩種方式
1) 磁盤塊列入i節點,而不列入目錄
2) 建立一個類型爲LINK的新文件,連接到共享的文件,新文件中只包含連接的文件的路徑名。(符號連接)
11. 日誌結構的文件系統(LFS)
基本思想:是將整個磁盤結構化爲一個日誌。
i節點分散在整個日誌中,而不是放在磁盤的某個固定位置,建立i節點圖。
所有的寫操作最初都被緩存在內存中,然後週期性地把所有以緩存的寫作爲一個單獨的段,在日誌的末尾寫入磁盤。
設立一個“清理線程”週期地掃描日誌進行磁盤壓縮。
12. 日誌文件系統(JFS)
基本思想:保存一個用於記錄系統下一步將要做什麼的日誌,當系統在完成即將完成的任務前崩潰時,重新啓動後,可以查看日誌會的崩潰前計劃完成的任務。如微軟的NTFS和Linux的ext3和ReiserFS。
被寫入日誌的操作必須是冪等的(可重複執行多次)
13. 虛擬文件系統(VFS)
絕大多數UNIX操作系統都是用VFS將多種FS統一成一個有序的框架。即抽象所有FS都共有的部分,且將該部分代碼放在單獨的一層,該層調用底層的實際文件系統來具體管理數據。
14. 文件系統管理和優化
1. 磁盤空間管理
存儲n個字節的文件
a) 分配n個字節的連續磁盤空間
b) 把文件分成很多個連續(或並不一定連續)的塊
幾乎所有的文件系統都把文件分割成固定大小的塊來存儲,各塊之間不一定相鄰。
2. 記錄空閒塊:
a) 空閒表
b) 位圖:n個塊磁盤需要n位位圖
空閒表特殊情況下產生不必要的磁盤I/O,書中寫的比較清楚
解決方法:拆分滿了的指針塊。保持磁盤上的大多數指針塊爲滿的狀態(減少磁盤的使用),但在內存中留一個半滿的指針。
3. 磁盤配額
系統管理員分給每個用戶擁有文件和塊的最大數量,操作系統確保每個用戶不超過分給他們的配額。
4. 文件系統備份
轉儲磁盤到磁帶上有兩種方案:
物理轉儲(從磁盤的第0塊開始,全部按序輸出到磁帶上)簡單快速,不能跳過指定的目錄,無法增量轉儲,不能滿足恢復個人文件的請求。
邏輯轉儲(從一個或幾個指定的目錄開始,遞歸地轉儲其自給定基準日期後所更改的全部文件和目錄)。
5. 文件系統的一致性
文件系統的狀態:一致、塊丟失、空閒表中有重複塊、重複數據塊
6. 改善文件系統性能
1) 高速緩存(塊高速緩存)
2) 塊提前讀
3) 減少磁盤臂運動
7. 磁盤碎片整理