《現代操作系統》第4章 文件系統

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.  磁盤碎片整理

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章