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