1. 程式人生 > >作業系統中檔案儲存空間的管理

作業系統中檔案儲存空間的管理

一、檔案儲存空間管理的概念

由於檔案儲存裝置是分成若干個大小相等的物理塊,並以塊為單位來交換資訊的,因此,檔案儲存空間的管理實質上是一個空閒塊的組織和管理問題,它包括空閒塊組織,空閒塊的分配和空閒塊的回收等幾個問題。

二、檔案儲存空間管理的方式

1. 空閒表法(空閒檔案目錄)

作業系統為磁碟外存上所有空閒區建立一張空閒表,每個表項對應一個空閒區,空閒表中包含序號、空閒區的第一塊號、空閒塊的塊數等資訊。

空閒表法適用於連續檔案結構,其分配的方式是,在系統為某個檔案分配空閒塊時,首先掃描空閒表項,如找到合適的空閒區項,則分配給申請者,並把該項從空閒表中去掉。如果一個空閒區項不能滿足申請者的要求,則把空閒表中的另一項滿足要求的分割槽分配給申請者(連續檔案結構除外)。如果一個空閒表項所含塊數超過申請者要求,則為申請者分配了所要的物理塊後,再修改該表項。 

2. 空閒連結串列法(自由連結串列法)

將所有空閒盤區拉成一條空閒鏈,根據空閒鏈所有的基本元素不同,可以把連結串列分成兩種形式:空閒盤塊鏈和空閒盤區鏈。

空閒盤塊鏈是將磁碟上的所有空閒分割槽,以盤塊為單位拉成一條鏈,當用戶建立檔案請求分配儲存空間時,系統從鏈首開始,依次摘下適當數目的空閒盤塊分配給使用者;當用戶刪除檔案時,系統將回收的盤塊依次加入到空閒盤塊鏈的末尾。

空閒盤區鏈是將磁碟上的所有空閒盤區(每個空閒盤區可包含若干個盤塊)拉成一條鏈。在管理的線性表中,每一個表項對應一個空閒區,增加一項存放指向空閒塊的指標,將磁碟上的所有空閒區(可包含若干個空閒塊)拉成一條鏈。每個空閒區上除含有用於指示下一個空閒區的指標外,還有本盤區大小(盤塊數)的資訊。 

3. 位示圖法

本方法利用二進位制的一位來表示磁碟中一個盤塊的使用情況,磁碟上所有的盤塊都有與之對應的一個二進位制位。當其值為0時,表示對應的盤塊空閒,當其值為1時,表示對應的盤塊已經分配。 

4. 成組連結法

空閒表法和空閒連結串列由於空閒表太長而不適合大型檔案系統的使用。成組連結法是兩種方法相結合的一種管理方法,兼備了兩種方法的優點而克服了兩種方法的缺點。其大致的思想是:把空閒的n個空閒扇區的地址儲存在第一個空閒扇區內,其後一個空閒扇區內則儲存另一順序空閒扇區的地址,以此類推,直至所有空閒扇區都予以連結。

以下以UNIX作業系統為例,說明成組連結法的原理。

(1) UNIX作業系統採用索引結構存放檔案物理塊的地址

    在UNIX 作業系統中,一個塊定義為512 bytes,每一個檔案對應一個唯一的機內程式碼,稱為i節點,在檔案的i節點中,放有存放檔案的物理塊號,由對應檔案的邏輯位元組偏移量計算出邏輯塊號後,就可搜尋i節點的地址索引結構而得檔案的物理塊號。

(2) UNIX system 的i節點中,定義有一個40位元組長的字元陣列。

由於每個物理塊佔用3個位元組,因此,此字元組最多可以放下13個物理塊號。顯然,對於大於13個物理塊(6.5KB)的檔案,i節點中的索引陣列將無法存放所有的物理塊號。

(3) UNIX系統把檔案分為小型、中型、大型和巨型四種。

(4) UNIX 系統檔案的物理結構如圖1

(5)UNIX的空閒塊管理也使用類似的方法

成組連結法