檔案系統的接口介紹包含了檔案的基本概念介紹、檔案的訪問方法、檔案的目錄結構、檔案系統的功能和接口。
檔案概述
檔案定義
計算機可以在各種存儲介質上,如磁碟、磁帶、光碟等上存儲信息,來方便使用,這樣作業系統提供了一種一致的存儲信息的邏輯視圖。OS可以從存儲設備的物理特性抽象定義邏輯存儲單元:檔案。檔案被作業系統映射到物理設備上。這些存儲設備通常是可以是長久保存的。
檔案是一個存儲在第二存儲設備上相關信息的命名集合。從一個用戶的觀點來看,檔案是邏輯存儲設備的最小分配單元,不使用檔案,數據將無法寫入第二存儲設備。通常,數據是一個bit、byte、lines或者記錄的序列 。
檔案屬性
檔案有一定的屬性,這根據系統的不同而有所不同,但是通常都包括如下屬性:
名稱:檔案符號名稱是唯一的、按照人們容易讀取的形式保存。
標識符:標識檔案系統內檔案的唯一標籤。
類型:被支持不同類型的檔案系統所使用。
大小:檔案當前大小。
保護:決定誰能讀、寫、執行等的訪問控制信息。
時間、日期和用戶標識:檔案創建、上次修改和上次訪問的時間。
檔案操作
檔案屬於抽象數據類型。為了合適的定義檔案,需要考慮檔案的操作。
創建檔案:創建檔案有兩個步驟。第一,必須在檔案系統中為檔案找到空間。第二,在目錄中為檔案創建一個條目。
寫檔案:為了寫檔案,執行一個系統調用,其指明檔案名稱稱和要寫入檔案的內容。
讀檔案:為了讀檔案,使用一個系統調用,並指明檔案名稱稱和要讀入檔案塊的記憶體位置。
在檔案內重定位:搜尋目錄相應條目,設定當前檔案位置指針為給定值。
刪除檔案:為了刪除檔案,在目錄中搜尋給定名稱的檔案。找到相關條目後,釋放所有的檔案空間並刪除相應的條目。
截短檔案:用戶可能只要刪除檔案內容而保留其屬性,而不是強制刪除檔案再創建。該操作不改變檔案屬性,而是將其長度設為0並釋放空間 。
檔案類型
設計檔案系統時,總是要考慮作業系統是否應該識別和支持檔案類型。
實現檔案類型的常用技術是在檔案名稱稱內包含類型。這樣,用戶和作業系統僅僅通過檔案名稱稱就能確定檔案類型是什麼。
名稱可分為兩部分:名稱和擴展名。
檔案系統
檔案系統模型
檔案系統接口 | |
對對象操縱和管理的軟體集合 | 邏輯檔案系統 |
基本I/O管理程式(檔案組織模組) | |
基本檔案系統(物理I/O層) | |
I/O控制層(設備驅動程式) | |
對象及其屬性說明 |
如上圖,該模型分為三個層次,最底層是被操作對象及其相關屬性;最上層是系統提高給用戶的接口;中間是檔案系統功能實現的核心軟體層,它是實現操作的軟體集合 。
訪問方法
檔案用來存儲信息。當使用時,必須訪問和將這些信息讀入到計算機記憶體。檔案信息可按多種方式來進行訪問。有的系統只提供了一種檔案訪問方式,有的系統則支持多種訪問方式。
順序訪問:最簡單的訪問方式。檔案信息按順序,一個記錄接著一個記錄地加以處理。也是最為常用的使用方式。編輯器和編譯器通常按這種方式訪問檔案。大量的檔案操作是讀和寫。讀操作讀取下一檔案部分,並自動前移檔案指針,以跟蹤I/O位置。類似地,寫操作會向檔案尾增加內容,相應的檔案指針移到新增數據之後。
直接訪問:另一方式是直接訪問(或相對訪問)。檔案由固定長度的邏輯記錄組成,以允許程式按任意順序進行快速讀和寫。直接訪問方式是基於檔案的磁碟模型,因為磁碟允許對任意檔案塊進行隨機讀和寫。直接訪問檔案可立即訪問大量信息,所以非常有用。資料庫通常採用這種類型的檔案 。
目錄結構
一個存儲設備可以整個用於一個檔案系統,或者進行精細劃分。例如,一個磁碟可以分區為多個分區,每個分區保存一個檔案系統。分區可以限定單個檔案系統的大小,將多個檔案系統類型放到一個設備中,或者將一個設備的一部分用作其它用途。包含檔案系統的一個實體通常成為一個卷。每個卷可以看成是一個虛擬磁碟。每個包含一個檔案系統的卷通常也包含系統中的檔案信息。這個信息保存在設備目錄中。
目錄包含了卷中所有檔案的信息,如檔案名稱、位置、大小、類型等。在一個計算機系統中,可以有多個存儲設備,每個存儲設備都可以劃分成為卷。這樣,計算機可以有0個或多個檔案系統,每個檔案系統都可以是不同的類型。計算機中的檔案系統可以是可擴展的。目錄也可以看成是將檔案名稱映射成為目錄入口的符號表。這樣,我們可以看到可以用多種方式組織目錄。這些組織方式允許我們插入、刪除、查找、列出檔案等操作 。
檔案系統的功能
1)檔案存儲空間的管理;
2)對檔案目錄的管理;
3)地址映射;
4)檔案的讀、寫管理;
5)檔案的共享與保護;
在這些功能的實現中,通常又進一步劃分成幾個層次。其中有的層次用於處理物理檔案系統;有的層次用於處理邏輯檔案系統。
檔案系統的接口
檔案系統的接口包括以下三個接口。
1)命令接口:用戶可以從終端鍵入命令實現操作;
2)程式接口:用戶程式可通過系統調用實現操作;
3)GUI接口:用戶可在圖形視窗點擊滑鼠實現操作。