檔案
是指由創建者所定義的、具有檔案名稱的一組相關元素的集合,可分為有結構檔案和無結構檔案兩種。在有結構的檔案中,檔案由若干個相關記錄組成;而無結構檔案則被看成是一個字元流。檔案在檔案系統中是一個最大的數據單位,它描述了一個對象集。例如,可以將一個班的學生記錄作為一個檔案。一個檔案必須要有一個檔案名稱,它通常是由一串 ASCII 碼或(和)漢字構成的, 名字的長度因系統不同而異。如在有的系統中把名字規定為 8 個字元,而在有的系統中又規定可用 14 個字元。用戶利用檔案名稱來訪問檔案。此外,檔案應具有自己的屬性,屬性可以包括:
(1) 檔案類型。可以從不同的角度來規定檔案的類型,如源檔案、目標檔案及執行檔等。
(2) 檔案長度。檔案長度指檔案的當前長度,長度的單位可以是位元組、字或塊,也可能是最大允許的長度。
(3) 檔案的物理位置。 該項屬性通常是用於指示檔案在哪一個設備上及在該設備的哪個位置的指針。
(4) 檔案的建立時間。這是指檔案最後一次的修改時間等。
檔案類型
為了便於管理和控制檔案而將檔案分成若干種類型。由於不同系統對檔案的管理方式不同,因而它們對檔案的分類方法也有很大差異。為了方便系統和用戶了解檔案的類型,在許多 OS 中都把檔案類型作為擴展名而綴在檔案名稱的後面,在檔案名稱和擴展名之間用“.”號隔開。下面是常用的幾種檔案分類方法。
按用途分類
根據檔案的性質和用途的不同,可將檔案分為三類:
(1) 系統檔案。這是指由系統軟體構成的檔案。大多數的系統檔案只允許用戶調用,但不允許用戶去讀,更不允許修改;有的系統檔案不直接對用戶開放。
(2) 用戶檔案。指由用戶的原始碼、目標檔案、執行檔或數據等所構成的檔案。用戶將這些檔案委託給系統保管。
(3) 庫檔案。 這是由標準子例程及常用的例程等所構成的檔案。 這類檔案允許用戶調用,但不允許修改。
按數據形式
按這種方式分類,也可把檔案分為三類:
(1) 源檔案。這是指由源程式和數據構成的檔案。通常由終端或輸入設備輸入的源程式和數據所形成的檔案都屬於源檔案。它通常是由 ASCII 碼或漢字所組成的。
(2) 目標檔案。這是指把源程式經過相應語言的編譯程式編譯過,但尚未經過連結程式連結的目標代碼所構成的檔案。它屬於二進制檔案。通常,目標檔案所使用的後綴名是“.obj” 。
(3) 執行檔。這是指把編譯後所產生的目標代碼再經過連結程式連結後所形成的檔案。
存取控制屬性
根據系統管理員或用戶所規定的存取控制屬性,可將檔案分為三類:
(1) 只執行檔案。該類檔案只允許被核准的用戶調用執行,既不允許讀,更不允許寫。
(2) 唯讀檔案。該類檔案只允許檔案主及被核准的用戶去讀,但不允許寫。
(3) 讀寫檔案。這是指允許檔案主和被核准的用戶去讀或寫的檔案。
組織和處理類
根據檔案的組織形式和系統對其的處理方式,可將檔案分為三類:
(1) 普通檔案:由 ASCII 碼或二進制碼組成的字元檔案。一般用戶建立的源程式檔案、數據檔案、目標代碼檔案及作業系統自身代碼檔案、庫檔案、實用程式檔案等都是普通檔案,它們通常存儲在外存儲設備上。
(2) 目錄檔案:由檔案目錄組成的,用來管理和實現檔案系統功能的系統檔案,通過目錄檔案可以對其它檔案的信息進行檢索。由於目錄檔案也是由字元序列構成,因此對其可進行與普通檔案一樣的種種檔案操作。
(3) 特殊檔案:特指系統中的各類 I/O 設備。為了便於統一管理,系統將所有的輸入/輸出設備都視為檔案,按檔案方式提供給用戶使用,如目錄的檢索、許可權的驗證等都與普通檔案相似,只是對這些檔案的操作是和設備驅動程式緊密相連的,系統將這些操作轉為對具體設備的操作。根據設備數據交換單位的不同,又可將特殊檔案分為塊設備檔案和字元設備檔案。前者用於磁碟、光碟或磁帶等塊設備的 I/O 操作,而後者用於終端、印表機等字元設備的 I/O 操作。
檔案操作
用戶通過檔案系統所提供的系統調用實施對檔案的操作。 最基本的檔案操作有: 創建檔案、刪除檔案、讀檔案、寫檔案、截斷檔案和設定檔案的讀/寫位置。但對於一個實際的 OS,為了方便用戶使用檔案而提供了更多的對檔案的操作,如打開和關閉一個檔案及改變檔案名稱等操作。
(1) 創建檔案。在創建一個新檔案時,系統首先要為新檔案分配必要的外存空間,並在檔案系統的目錄中,為之建立一個目錄項。目錄項中應記錄新檔案的檔案名稱及其在外存的地址等屬性。
(2) 刪除檔案。當已不再需要某檔案時,可將它從檔案系統中刪除。在刪除時,系統應先從目錄中找到要刪除檔案的目錄項,使之成為空項,然後回收該檔案所占用的存儲空間。
(3) 讀檔案。在讀一個檔案時,須在相應系統調用中給出檔案名稱和應讀入的記憶體目標地址。此時,系統同樣要查找目錄,找到指定的目錄項,從中得到被讀檔案在外存中的位置。在目錄項中,還有一個指針用於對檔案的讀/寫。
(4) 寫檔案。在寫一個檔案時,須在相應系統調用中給出該檔案名稱及該檔案在記憶體中的(源)地址。為此,也同樣須先查找目錄,找到指定檔案的目錄項,再利用目錄中的寫指針進行寫操作。
(5) 截斷檔案。如果一個檔案的內容已經陳舊而需要全部更新時,一種方法是將此檔案刪除,再重新創建一個新檔案。但如果檔案名稱及其屬性均無改變時,則可採取另一種所謂的截斷檔案的方法,此即將原有檔案的長度設定為 0,或者說是放棄原有的檔案內容。
(6) 設定檔案的讀/寫位置。前述的檔案讀/寫操作都只提供了對檔案順序存取的手段,即每次都是從檔案的始端讀或寫。設定檔案讀/寫位置的操作,用於設定檔案讀/寫指針的位置,以便每次讀/寫檔案時,不是從其始端而是從所設定的位置開始操作。也正因如此,才能改順序存取為隨機存取。
檔案結構
檔案的 邏輯結構(File Logical Structure)。這是從用戶觀點出發所觀察到的檔案組織形式, 是用戶可以直接處理的數據及其結構, 它獨立於檔案的物理特性, 又稱為檔案組織(FileOrganization)。
檔案的 物理結構,又稱為檔案的存儲結構,是指檔案在外存上的存儲組織形式。這不僅與存儲介質的存儲性能有關,而且與所採用的外存分配方式有關。
無論是檔案的邏輯結構,還是其物理結構,都會影響對檔案的檢索速度。檔案的邏輯結構。對檔案邏輯結構所提出的基本要求,首先是能提高檢索速度,即在將大批記錄組成檔案時,應有利於提高檢索記錄的速度和效率;其次是便於修改,即便於在檔案中增加、刪除和修改一個或多個記錄;第三是降低檔案的存儲費用,即減少檔案占用的存儲空間,不要求大片的連續存儲空間。