1. 程式人生 > >作業系統知識點——檔案系統

作業系統知識點——檔案系統

一、檔案的基本概念

(一)檔案的概念

檔案是具有檔名的一組相關元素集合,在檔案系統中是一個最大的資料單位,它描述了一個物件集,每個檔案都有一個檔名,使用者通過檔名來訪問檔案。檔案表示的範圍很廣,系統或使用者可以將具有一定功能的程式或資料集合命名為一個檔案。

(二)檔案的屬性

1、名稱

2、識別符號

3、檔案型別

4、檔案位置

5、檔案的大小、建立時間、使用者標識等

(三)檔案的分類

1、按照用途分類

(1) 系統檔案

(2) 庫檔案

(3) 使用者檔案

2、按照保護級別分類

(1) 只讀檔案

(2) 讀寫檔案

(3) 執行檔案

(4) 不保護檔案

3、按照資訊流向分類

(1) 輸入檔案

(2) 輸出檔案

(3) 輸入輸出檔案

4、按照資料形式分類

(1) 原始檔

(2) 目標檔案

(3) 可執行檔案

(四)檔案的操作

1、基本的檔案操作

(1) 建立檔案

(2) 刪除檔案

(3) 讀檔案

(4) 寫檔案

(5) 截斷檔案

(6) 設定檔案的讀/寫位置

2、檔案的開啟和關閉操作

(1) 開啟檔案

(2) 關閉檔案

二、檔案的邏輯結構

1、順序檔案

2、索引檔案

3、索引順序檔案

4、直接檔案和雜湊(Hash)檔案

三、檔案的目錄結構

(一)檔案目錄

檔案說明的集合成為檔案目錄。目錄最基本的功能是通過檔名存取檔案。一般來說,目錄應具有如下功能:

1、實現“按名存取”。

2、提高檢索速度。

3、允許檔案同名。

4、允許檔案共享。

(二)檔案控制塊(File Control BlockFCB

檔案控制塊至少包含以下資訊:

1、檔名。

2、檔案的結構。

3、檔案的物理位置。

4、存取控制資訊。

5、管理資訊。

(三)索引節點

存放在磁碟上的索引節點成為磁碟索引節點。每個檔案都有唯一的磁碟索引節點,其主要內容包括:

1、檔案主識別符號。

2、檔案型別。

3、檔案存取許可權。

4、檔案實體地址。

5、檔案長度。

6、檔案連結計數。

7、檔案存取時間。

當檔案被開啟時,磁碟索引節點被複制到記憶體的索引節點中,以便使用。存放在記憶體中的索引節點成為記憶體索引節點,其增加了以下內容:

1、索引節點編號。

2、狀態。

3、訪問計數。

4、邏輯裝置號。

5、連結指標。

(四)單級目錄結構

(五)二級目錄結構

二級目錄結構將檔案目錄分成主檔案目錄和使用者檔案目錄。

(六)樹形目錄結構

將二級目錄的層次關係加以推廣,便形成了多級目錄結構,又稱樹形目錄結構。樹形目錄結構中引入了路徑名和當前目錄的概念。

四、檔案的共享

1、基於索引節點的共享方式(硬連結)

2、利用符號鏈實現檔案共享(軟連結)

五、檔案的保護

(一)訪問型別

對檔案的保護可以從限制檔案的訪問型別出發,可以加一控制的訪問型別有讀、寫、執行、新增、刪除、列表清單(列出檔名和檔案屬性)等。此外,還可以對檔案的重新命名、複製、編輯等加以控制。

(二)訪問控制

訪問控制通常有以下4種方法:

1、訪問控制矩陣

2、訪問控制表

3、使用者許可權表

4、口令與密碼

六、檔案系統層級結構

檔案系統由3部分組成:與檔案管理有關的軟體、被管理的檔案以及實施檔案管理所需的資料結構。檔案系統的層次結構分為以下4層:

1、基本I/O控制層(又稱為裝置驅動程式層)。該層主要由磁碟驅動程式和磁帶驅動程式組成,負責啟動裝置I/O及時對裝置發來的中斷訊號進行處理。

2、基本檔案系統層(又稱為物理I/O層)。該層負責處理記憶體和磁碟或磁帶之間的資料塊交換,它關心的是資料塊在輔存裝置和記憶體緩衝區中的位置,而無須瞭解所傳送資料塊的內容或檔案結構。

3、基本I/O管理程式層(又稱為檔案組織模組層)。該層完成大量與磁碟I/O有關的工作,包括選擇檔案所在的裝置,進行檔案邏輯快到物理塊的轉換,對檔案空閒儲存空間進行管理,執行I/O緩衝區。

4、邏輯檔案系統層。該層處理檔案及記錄的相關操作,如允許使用者利用符號檔名訪問檔案及其中的記錄,實現對檔案及記錄的保護,實現目錄操作等。

 

七、檔案系統的實現

(一)目錄的實現

1、線性表

2、散列表

(二)檔案的實現

1、外存分配方式

(1)連續分配。要求為檔案分配連續的磁碟區域。

(2)連結分配

① 隱式連結。用於連結物理塊的指標隱式地放在每個物理塊中

② 顯示連結。用於連結物理塊的指標顯示存放在記憶體的一張連結串列中,稱為檔案分配表(File Allocation TableFAT)。

(3)索引分配。系統為每個檔案分配一個索引塊,索引塊中存放索引表,索引表中的每個表項對應分配給該檔案的一個物理塊。

① 單級索引分配。單級索引分配方法就是將每個檔案所對應的盤塊號集中放在一起,為每個檔案分配一個索引塊(表),再把分配給該檔案的所有盤塊號都記錄在該索引塊表中,因而該索引塊就是一個包含多個盤塊號的陣列。

② 兩級索引分配。當檔案較大,一個索引塊放不下檔案的塊序列時,可以對索引塊再建立索引,這樣構成了二級索引。

③ 混合索引分配。將多種索引分配方式相結合而形成一種分配方式,例如在系統中即採用了直接地址,又採用了單級索引分配方式(一次間接地址)和兩級索引分配方式(二次間接地址)。

2、檔案儲存空間管理

(1)空閒檔案表。空閒檔案表法為所有空閒檔案單獨建立一個目錄,每個空閒檔案在這個目錄中佔一個表目。表目的內容包括第一個空閒塊號、物理塊號和空閒塊數目。僅適用於連續檔案。

(2)空閒塊連結串列。將檔案儲存裝置上是所有空閒塊連結在一起,形成一條空閒塊鏈,並設定一個頭指標指向空閒塊鏈的第一個物理塊。當用戶建立檔案時,就按需要從鏈首依次取下幾個空閒塊分配給檔案。當檔案撤銷時,回收其儲存空間,並將回收的空閒塊依次鏈入空閒塊連結串列中。

(3)位示圖法。為檔案儲存器建立一張位示圖(其實就是一連串的二進位制位),以反映整個儲存空間的分配情況。在位示圖中,每一個二進位制位都對應一個物理塊,若某位為1,表示對應的物理塊已分配;若為0,表示對應的物理塊空閒。

(4)成組連結法。適用於大型檔案系統(UNIX的檔案儲存空間管理方法)。將一個檔案的所有空閒塊按照每組100塊分成若干組,把每一組的盤塊數目和該組的所有盤塊號記入到前一組的第一個盤塊中,第一組的盤塊數目和第一組的所有盤塊號記入超級塊中。這樣每組的第一個盤塊就連結成了一個連結串列,而組內的多個盤塊形成了堆疊。每組的第一塊是存放下一組的塊號的堆疊,堆疊是臨界資源,每次只能允許一個程序訪問,所以系統設定了一把鎖來對其互斥的訪問。

① 分配空閒盤塊的方法。當系統要為檔案分哦欸空閒盤塊時,先查詢第一組的盤塊數,若不止一塊,則將超級塊中的空閒盤塊數減1,將棧頂的盤塊分配出去。若第一組只剩下一塊(是防止下一組的盤塊數和盤塊號的那個塊,不是空閒塊)且棧頂的盤塊號不是結束標記0(說明這一組不是最後一組),則先將該塊的內容讀到超級塊中(下一組成了第一組,所以下一組的盤塊數和盤塊號需要方到超級塊中),然後再將該塊分配出去(該塊的循序不再有用,這塊成了空閒塊);若棧頂的盤塊號是結束標記0,則表示磁碟已無空閒盤塊,分配不成功。

② 空閒盤塊回收的方法。當系統回收空閒塊是,若第一組不滿100塊,則只要在超級塊知道空閒塊的棧頂放入該空閒塊的塊號,並將其中的空閒塊數加1即可;若第一組已經有100塊了,則先將第一組中的盤塊數和盤塊號寫入到該空閒塊,然後將“盤塊數=1及棧頂塊號=該空閒塊塊號”寫入超級塊中(該空閒塊成了新的第一組,原本的第一組成了第二組)。                                 

八、磁碟排程演算法

(一)先來先服務(FCFS)演算法

FCFS按照程序請求訪問磁碟的先後順序進行排程。

(二)最短尋道時間優先(SSTF)演算法

SSTF演算法選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件。

(三)掃描演算法(SCAN)或電梯排程演算法

SCAN演算法在磁頭當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件。

(四)迴圈掃描(CSCAN)演算法

規定磁頭單向移動,例如規定自裡向外移動,當磁頭移動到最外磁軌時立即返回到最裡磁軌,如此迴圈進行掃描。

(五)各種排程演算法總結

排程演算法

為解決什麼問題引入

優點

缺點

FCFS

簡單、公平

未對尋道進行優化,所以平均尋道時間較長,僅適合磁碟請求較少的情況

SSTF

為了解決FCFS演算法平均尋道時間長的問題

FCFS演算法減少了平均尋道時間,有更好的尋道效能

並非最優,而且會導致“飢餓”現象

SCAN

為了解決SSTF演算法的“飢餓”問題

兼顧較好的尋道效能和防止“飢餓”現象,被廣泛應用在大中小型機器和網路中

存在一個請求剛好被錯過而需要等待很久的情形

CSCAN

為了解決SCAN演算法的一個請求剛好被錯過而需要等待很久的情形的問題

兼顧較好的尋道效能和防止“飢餓”現象,同時解決了一個請求可能等待很長時間的問題

可能出現磁臂長期停留在某處不動的情況(磁臂黏著)