1. 程式人生 > >《作業系統》總結四(檔案管理)

《作業系統》總結四(檔案管理)

檔案的屬性

檔案有一定的屬性,這根據系統的不同而有所不同,但是通常都包括如下屬性:

①名稱:檔名稱唯一,以容易讀取的形式儲存。

②識別符號:標識檔案系統內檔案的唯一標籤,通常為數字,它是對人不可讀的一種內部名稱。

③型別:被支援不同型別的檔案系統所使用。

④位置:指向裝置和裝置上檔案的指標。

⑤大小:檔案當前大小(用位元組、字或塊表示),也可包含檔案允許的最大值。

⑥保護:對檔案進行保護的訪問控制資訊。

⑦時間、日期和使用者標識:檔案建立、上次修改和上次訪問的相關資訊,用於保護、 安全和跟蹤檔案的使用。

所有檔案的資訊都儲存在目錄結構中,而目錄結構也儲存在外存上。檔案資訊當需要時再調入記憶體。通常,目錄條目包括檔名稱及其唯一識別符號,而識別符號定位其他屬性的資訊。

檔案的基本橾作

檔案屬於抽象資料型別。為了恰當地定義檔案,就需要考慮有關檔案的操作。作業系統提供系統呼叫,它對檔案進行建立、寫、讀、定位和截斷。.

①建立檔案:建立檔案有兩個必要步驟,一是在檔案系統中為檔案找到空間;二是在目錄中為新檔案建立條目,該條目記錄檔名稱、在檔案系統中的位置及其他可能資訊。

②寫檔案:為了寫檔案,執行一個系統呼叫,指明檔名稱和要寫入檔案的內容。對於給定檔名稱,系統搜尋目錄以查詢檔案位置。系統必須為該檔案維護一個寫位置的指標。每當發生寫操作,便更新寫指標。

③讀檔案:為了讀檔案,執行一個系統呼叫,指明檔名稱和要讀入檔案塊的記憶體位置。同樣,需要搜尋目錄以找到相關目錄項,系統維護一個讀位置的指標。每當發生讀操作時,更新讀指標。一個程序通常只對一個檔案讀或寫,所以當前操作位置可作為每個程序當前檔案位置指標。由於讀和寫操作都使用同一指標,節省了空間也降低了系統複雜度。

④檔案重定位(檔案定址):按某條件搜尋目錄,將當前檔案位置設為給定值,並且不會讀、寫檔案。

⑤刪除檔案:先從目錄中找到要刪除檔案的目錄項,使之成為空項,然後回收該檔案所佔用的儲存空間。

⑥截斷檔案:允許檔案所有屬性不變,並刪除檔案內容,即將其長度設為0並釋放其空間。

這6個基本操作可以組合執行其他檔案操作。例如,一個檔案的複製,可以建立新檔案、 從舊檔案讀出並寫入到新檔案。

檔案的開啟與關閉

因為許多檔案操作都涉及為給定檔案搜尋相關目錄條目,許多系統要求在首次使用檔案時,使用系統呼叫open,將指明檔案的屬性(包括該檔案在外存上的物理位置)從外存拷貝到記憶體開啟檔案目錄表的一個表目中,並將該表目的編號(或稱為索引)返回給使用者。作業系統維護一個包含所有開啟檔案資訊的表(開啟檔案表,open-file table)。當用戶需要一個檔案操作時,可通過該表的一個索引指定檔案,就省略了搜尋環節。當檔案不再使用時,程序可以關閉它,作業系統從開啟檔案表中刪除這一條目。

大部分作業系統要求在檔案使用之前就被顯式地開啟。操作open會根據檔名搜尋目錄,並將目錄條目複製到開啟檔案表。如果呼叫open的請求(建立、只讀、讀寫、新增等)得到允許,程序就可以開啟檔案,而open通常返回一個指向開啟檔案表中的一個條目的指標。通過使用該指計(而非檔名)進行所有I/O操作,以簡化步驟並節省資源。

整個系統表包含程序相關資訊,如檔案在磁碟的位置、訪問日期和大小。一個程序開啟一個檔案,系統開啟檔案表就會為開啟的檔案增加相應的條目。當另一個程序執行open時,只不過是在其程序開啟表中增加一個條目,並指向整個系統表的相應條目。通常,系統開啟檔案表的每個檔案時,還用一個檔案開啟計數器(Open Count),以記錄多少程序打開了該檔案。每個關閉操作close則使count遞減,當開啟計數器為0時,表示該檔案不再被使用。系統將回收分配給該檔案的記憶體空間等資源,若檔案被修改過,則將檔案寫回外存,並將系統開啟檔案表中相應條目刪除,最後釋放檔案的檔案控制塊(File Control Block, FCB)。

每個開啟檔案都有如下關聯資訊:
  • 檔案指標:系統跟蹤上次讀寫位置作為當前檔案位置指標,這種指標對開啟檔案的某個程序來說是唯一的,因此必須與磁碟檔案屬性分開儲存。
  • 檔案開啟計數:檔案關閉時,作業系統必須重用其開啟檔案表條目,否則表內空間會不夠用。因為多個程序可能開啟同一個檔案,所以系統在刪除開啟檔案條目之前,必須等待最後一個程序關閉檔案。該計數器跟蹤開啟和關閉的數量,當該計數為0 時,系統關閉檔案,刪除該條目。
  • 檔案磁碟位置:絕大多數檔案操作都要求系統修改檔案資料。該資訊儲存在記憶體中以免為每個操作都從磁碟中讀取。
  • 訪問許可權:每個程序開啟檔案都需要有一個訪問模式(建立、只讀、讀寫、新增等)。該資訊儲存在程序的開啟檔案表中以便作業系統能允許或拒絕之後的I/O請求。