天天看點

作業系統學習筆記:檔案系統接口

計算機裝置之間差異很大,是以作業系統需要提供一組功能以便于應用程式控制這些裝置。作業系統的IO子系統的重要目的之一是為系統其它部分提供最簡單的接口。檔案接口是接口之一。

一、檔案概念

1、檔案屬性

名稱、辨別符(檔案系統内檔案的唯一标簽)、類型、位置(指向裝置和裝置上檔案位置的指針)、大小、保護、時間

2、檔案操作

1)建立。有兩個必要步驟:第一必須在檔案系統中為檔案找到空間,第二在目錄中為新檔案建立一個條目

2)寫

系統要為該檔案維護一個寫位置的指針。每當有寫操作必須更新寫指針。

3)讀

為了讀檔案,使用一個系統調用,并指明檔案名稱和要讀入檔案塊的記憶體位置。系統為該檔案維護一個讀位置指針。讀和寫使用同一指針。

4)檔案内重定位

設定目前檔案位置指針(讀寫指針)為給定值。不需要真正的IO,又稱為檔案尋址。

5)删除

6)截斷

以上是檔案的6個基本操作。

為提高性能,絕大多數OS要求使用檔案的時候,顯式打開。OS會維護一個全局的打開檔案表,以滿足各種檔案操作需要用到的搜尋、定位需求。每個打開檔案還有一個檔案計數器,以記錄多少程序打開了該檔案。總的來說,打開檔案有:

檔案指針,檔案打開計數器,檔案磁盤位置,通路權限

3、檔案類型

實作檔案類型的常用技術是在檔案名稱内包含類型,比如采用名稱 + 擴充名的方式,後者像UNIX,采用幻數(magic number),儲存在檔案的開始部分,但這些都不是必須的。真正确定檔案類型,或是否要使用該檔案,由應用程式開發者決定。檔案擴充名并非由作業系統所支援,隻用于給操作它們的應用程式以提示。

不過,像Mac OS X,每個檔案都有類型,建立時強制其建立者為相應的應用程式。

作業系統是否支援檔案類型是一件很糾結的事情。支援的檔案類型太少,會很不友善;太多又會讓作業系統過大。

4、檔案結構

磁盤系統通常具有明确的塊大小,而邏輯記錄則長度可變。常用解決辦法是先将若幹邏輯記錄打包,再放入實體記錄。檔案可當做一系列塊的組合。檔案最後一塊通常會有浪費,塊越大,内部碎片就越大。

二、通路方法

1、順序通路(錄音帶模型)

讀操作自動前移檔案指針,寫操作在檔案尾部增加内容,檔案指針移到新增資料後。當然指針也可重置到開始位置,或者向前向後跳過N個記錄。

順序通路适用于順序通路裝置,也适用于随機通路裝置。

2、直接通路(磁盤模型)

檔案由固定長度的邏輯記錄組成,按任意順序進行快速讀和寫。

操作之時,塊号作為參數傳入,可以迅速定位。通常,這個由使用者向作業系統提供的塊号是相對塊号,相對于檔案開始的索引。檔案系統由這個塊号做一定的運算,比如哈希運算,得到絕對塊号。

對支援直接通路的檔案,當然也很容易實作順序通路。

3、其他通路方式

其他通路方式可建立在直接通路方式之上,這些通路通常涉及建立檔案索引。索引包括各塊的指針。查找檔案中的記錄,首先搜尋索引,再根據指針直接通路檔案。

對于大檔案,索引會分級。

三、目錄結構

同一個作業系統可以存在若幹個檔案系統。這好了解,像我們的電腦中,一個盤是FAT32,另一個盤可能是NTFS。

1、存儲結構

作業系統學習筆記:檔案系統接口

卷:硬碟上的存儲區域。驅動器使用一種檔案系統(如 FAT 或 NTFS)格式化卷,并給它指派一個驅動器号。單擊“Windows 資料總管”或“我的電腦”中相應的圖示可以檢視驅動器的内容。一個硬碟包括好多卷,一卷也可以跨越許多磁盤

2、目錄概述

目錄可看做符号表,能将檔案名稱轉換成目錄條目。目錄有多種操作:

搜尋檔案、建立檔案、删除檔案、周遊目錄、重命名檔案、跟蹤檔案系統。所謂跟蹤檔案是指掌握整個檔案系統的細節,有哪些目錄和檔案,使用情況如何,等等。

3、單層結構目錄

所有檔案都在同一目錄中,濟濟一堂,熱鬧。便于了解和支援。但多使用者時,會有嚴格限制。比如檔案名唯一問題。

4、雙層結構目錄

每個使用者都有自己的使用者檔案目錄。每個使用者的檔案目錄結構都一樣。當使用者引用特定檔案時,隻需搜尋他自己的目錄。再也不用擔心自己的檔案名與其他使用者的重名了。

這種結構,如果使用者完全獨立是優點,但如果之間需要合作互動就是缺點。這種情況下,檔案路徑需要帶上使用者名(感覺類似資料庫裡面的schema)。檔案系統中的不同分區可看成是不同的使用者。

有一個特例是系統檔案。系統檔案作為公用,如果隻能在使用者自己檔案目錄内搜尋的話,那麼每個使用者目錄都應該有一份,太浪費。解決辦法是定義一個特殊使用者目錄,所有系統檔案置于其中。當需要搜尋時,先搜使用者檔案夾,找不到就搜這個特殊目錄。

5、樹狀結構目錄

二層結構擴充而來。允許使用者建立自己的子目錄。

6、無環圖目錄

樹狀結構目錄擴充。允許共享目錄和檔案,即同一檔案可分屬多個不同的目錄。

UNIX中,共享目錄或檔案處理為連結。

7.通用圖目錄

無環圖目錄有時容易出現環,比如連結中,出現了自我引用的情況。存在環可能會導緻周遊目錄時死循環。應避免出現環,或者出現之後要消除,比如增加垃圾回收,消除哪些沒有引用或自引用的連結。或者改變周遊算法,周遊目錄時避開連結。

四、檔案系統安裝

檔案系統要正确使用,必須安裝

五、檔案共享

1、多使用者

2、遠端檔案系統

NFS:網絡檔案系統

DFS:分布式檔案系統

1)客戶機-伺服器模型

2)分布式資訊系統

為了便于管理客戶機-伺服器服務,提供用于遠端計算所需資訊的統一通路

3)故障模式

遠端檔案系統很容易出現各種故障,比如掉線等。當故障出現時,客戶機系統并不将此作為本地檔案系統故障那樣進行處理,但會終止對故障伺服器的所有操作,或者等候直至伺服器再次可用。這種故障語義由遠端檔案系統協定所定義和實作。通常,終止操作代價較大,絕大多數分布式檔案系統在故障出現時,選擇等候。

那麼故障恢複時,客戶機和伺服器之間可能需要一定的狀态資訊。NFS采用了一種簡單的方法實作了無狀态的DFS,但它不夠安全。

3、一緻性語義

多使用者操作情況下,如何保持檔案一緻性。

1)UNIX語義

使用者的寫操作,可以被其他所見

允許使用者共享檔案指針位置,移動檔案指針會影響其他使用者

采用UNIX語義,一個檔案與單個實體映射關聯,互斥通路。

2)會話語義

使用者寫操作不能立即被打開同一檔案的其他使用者所見

檔案關閉後,修改隻能被新打開的會話所見,已經打開的使用者看不到

采用這種語義,一個檔案可以對多個實體映射進行關聯,并發性很好。

3)不可修改共享檔案語義

既然是共享檔案,就不能修改,隻讀。

在分布式系統中實作這種語義最簡單。

六、保護

檔案的保護包括可靠性保護和防止非法通路。可靠性通常由檔案備份提供;這裡說的保護是指防止非法通路。

1、通路類型

通過限制可進行的檔案通路類型,比如說:

讀、寫、執行、添加、删除、清單清單

繼續閱讀