現代操作系統--文件系統--第四章

文件系統

進程終止,保存信息信息丟失。
目前把磁盤當作一種固定大小的線性序列。 並且支持日下兩種操作:

  1. 讀塊。2.寫塊。

進程(與線程)。地址空間和文件,這些抽象空間均是操作系統中最重要的概念。操作系統中處理問文件的部分稱爲文件系統(file system)。操作包括文件的構造,命名,存取,保護,管理和實現。

主要從兩方面來介紹文件系統。 一,用戶使用,二,系統設計。

使用文件系統

文件

文件命名,Linux和windows不同。 windows通過後綴實現分類。
文件結構 操作系統不關心,只是識別爲字節,含義只在用戶程序中解釋。
文件類型: unix分爲普通文件(regular file)字符特殊文件(character special file)和塊特殊文件(block special file)。目錄文件以後討論。
字符特殊文件和輸入/輸出有關, 用於串行I/O類設備, 如終端,打印機。塊特殊文件重要用於磁盤文件。 本章主要討論普通文件。
文件存取:現在都是隨機的,隨機存取文件(random access file)。
文件屬性:文件都有自己的屬性,有些時候稱爲元數據。
文件操作:每個系統有針對不同的文件操作有不同的系統調用。創建刪除,打開關閉。

目錄

目錄使用:路徑有絕對路徑和相對路徑的區分。 相對路徑指相對於當前目錄。 絕對路徑:從根目錄開始。
目錄操作:創建,刪除,關閉等,系統調用。


文件系統的實現

文件系統佈局:文件系統存放在磁盤上。 多數磁盤劃分爲一個或多個分區,每個分區中有一個獨立的文件系統。 磁盤中0號扇區稱爲主引導記錄。用來引導計算機。 MBR末尾是分區表。 表內是每個分區的起始和結束位置。MBR會去確定第一個活動分區,第一個活動分區內是操作系統。
一個典型的分區:引導塊,超級塊,空閒空間管理,i節點,根目錄, 文件和目錄。

文件的實現:
實現存儲的關鍵問題是記錄哥哥文件分別用到哪些磁盤塊。

  1. 連續分配。 CD-ROM在用。
  2. 鏈表分配。缺點是找任意一塊都要找起點。爲了解決問題,取出每個磁盤塊的指針字,放入內存中。這樣的表格稱爲文件分配表(File Allocation Table FAT)。但這種發難對於大磁盤而言不合適。
  3. I節點。鏈表磁盤塊地址記錄在文件中,只有打開文件是纔會需要。節省空間。

目錄的實現

目錄系統的主要功能是把ASCII文件名映射成定位文件數據所需的信息。 目錄文件中存放有目錄下文件的文件名和元數據。
目錄下文件查找:1.目錄下使用散列表,2.查找信息放入告訴緩存。
共享文件: 爲了共享文件,使用i節點引用記數。

日誌文件系統:日誌保存記錄系統操作,可以在任務執行奔潰的時候。獲得錯誤現場,並完成他們。 Linux的ext3 和windows的 NTFS都是。
虛擬文件系統:抽象出所有文件系統都共有的部分, 並將這部分代碼放在單獨的一層。這一層叫VFS。 所有和文件相關的系統調用在最初的處理上都先通過虛擬文件系統,來自用戶的調用都是posix標準系統調用,也可以說用戶通過POSIX接口連接VFS。
VFS有兩個接口對上層的用戶進程和對下層的文件系統。不同的文件系統統一先註冊到VFS。

文件系統管理和優化

空間管理 :文件會分成很多連續的塊。 塊大小,經過統計計算均衡設定爲4K。 但是現在磁盤超過了1T,有人設定爲64K。
除了要記錄使用的塊,還要記錄未使用的空閒塊。以及對限額。
文件系統備份:主要使用按日期備份。恢復後檢驗一致性,通過文件一致性和塊一致性檢測。

文件系統的性能

硬盤較慢,差內存百萬倍性能。
1。最常用的方法是塊高速緩存(block cache)或者緩衝區高速緩存(buffer cache)。邏輯上是磁盤,但性能上考慮放在內存中。 使用雙向鏈表,按照使用時間鏈接起來。
引入問題:改變了buffer的數據,怎麼落盤? 答:系統調用週期性檢測回寫。
2. 塊提前讀:預測即將使用的塊,提前寫入高速緩存。提前寫只適用於順序讀取的文件,隨機存取文件不起作用。
3. 優化磁盤移動軌跡。優化磁盤存放位置。

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