文件系統初識
一、從認識文件開始
文件系統的管理功能是將其管理的程序和數據組織為一系列文件的方式實現的。而文件則是指具有文件名的若干相關元素的集合。元素通常是記錄,而記錄又是一組有意義的數據項的集合。
- 數據項、記錄和文件
上圖為文件、目錄和數據項之間的層次關系。
在文件系統中,數據項是最底層的數據組織形式,它可以分為兩種類型:基本數據項和組合數據項。
基本數據項是描述一個對象的某種屬性的字符集,是可以命名的最小邏輯數據單位,又稱為字段。例如:用於描述一個學生的基本數據項有:學號、姓名、年齡、所在班級等。
而組合數據項是由若干基本數據項組成的,簡稱組項。例如工資是個組項,它可以由基本工資、工齡工資和獎勵工資等基本項組成。
基本數據項描述某個對象的屬性、根據屬性的不同,需要用不同的數據類型加以描述。
由數據項的名字和類型兩者共同定義了一個數據項的“型”,而表征一個實體在數據項上的數據項則稱為“值”。
記錄是一組相關數據項的集合,用於描述一個對象在某方面的屬性。一個記錄應包含哪些數據項,取決於需要描述對象的哪些方面。
在諸多記錄中,為了能唯一地標識一個記錄,必須在一個記錄地各個數據項中確定出一個或幾個數據項,把它們地集合稱為關鍵字。或者說,關鍵字是唯一能標識一個記錄的數據項。
文件是由創建者所定義地,具有文件名地一組相關元素的集合,有有結構文件和無結構文件兩種形式。
在有結構文件中,文件是由若干個相關記錄組成,而無結構文件則被看成是一個字符流。文件在文件系統中是一個最大地數據單位,它描述了一個對象集。
文件的屬性包括:文件類型、文件長度、文件的物理位置、文件的建立時間。- 文件名和類型
文件名,文件名由文件名和擴展名兩部分組成,在不同的系統中,文件名的規定是不同的。
擴展名,擴展名是添加在文件名后面的若干個附加字符,又稱為后綴名,用於指示文件的類型。
文件類型:文件類型根據用途、文件中的數據形式、存取控制屬性的不同可以划分為多種文件類型。
根據用途可以划分為系統文件、用戶文件等;根據文件中數據的形式可以划分為源文件、目標文件、可執行文件等;根據存取控制屬性可以划分為只讀、只寫、讀寫文件等;根據文件的組織形式可以划分為普通文件、目錄文件、特殊文件等。
File System的基本層次
- 對象及其屬性
文件管理系統管理的對象分別有:文件、目錄、磁盤(磁帶)存儲空間。在文件系統中有着各種不同類型的文件,它們都屬於文件管理系統的直接對象。為了方便用戶的使用,文件管理系統中必須配置目錄。在目錄中的每個目錄項中,必須含有文件名、對文件屬性的說明,以及該文件所在的物理地址(或指針)。文件、目錄的存儲占用着計算機的硬件資源(磁盤、磁帶空間),文件管理系統對這部分的有效管理是提高對文件的存取速度的關鍵。- 對對象操縱和管理的軟件集合
該層是文件管理系統的核心部分,它都實現了下述功能:對文件存儲空間的管理、對文件目錄的管理、將文件的邏輯地址轉換為物理地址的轉換、對文件讀和寫的管理、對文件的共享和保護的功能。
要實現上述的功能,需要操作系統進行分層管理,類似於OSI四層模型,層次和功能的划分有助於提高效率。
一般的,將與文件系統有關的軟件分為四個層次:I/O控制層、基本文件系統層、基本I/O管理層、邏輯文件系統層- 文件系統的接口
為方便用戶程序以及用戶的使用,文件系統提供了兩類接口:命令接口和程序接口。
典型的命令接口:Linux中的terminal和Windows中的cmd窗口 。
典型的用戶應用程序接口:Android中的社交應用需要獲取文件管理的權限。
文件的基本操作------>略
二、我是一位用戶
從用戶的觀點出發觀察到的文件組織形式,即文件是由一系列的邏輯記錄組成的,又稱為文件的邏輯結構(File Logical Structure)。
從系統的觀點出發觀察到的文件組織形式,即文件是由系統存儲在外存上所形成的一種組織形式,是用戶不可見的。又稱為文件的物理結構(存儲結構)。文件的物理結構不僅與存儲介質的存儲性能有關,而且與所采用的外存分配方式有關。無論是文件的邏輯結構,還是物理結構,都會影響文件的檢索速度。
文件的邏輯結構
對文件邏輯結構的基本要求:有助於提高對文件的檢索速度、降低文件存放在外存上的存儲費用。
從文件是否有結構來分類:可分為有結構文件(記錄式文件)和無結構文件(流式文件);從文件的組織方式來分,可以分為順序文件、索引文件和順序索引文件。
在記錄式文件中,每個記錄都用於描述實體集中的一個實體,各記錄有着相同或不同數目的數據項,記錄的長度可分為定長記錄和變長記錄。
定長記錄,是指文件中所有的記錄都是相同的,所有文件中的各數據項都處在記錄中相同的位置,具有相同的順序和長度。定常記錄能有效地提高檢索記錄地速度和效率,能方便地對文件進行處理和修改,被廣泛用於數據處理中。
變長記錄,是指文件中各記錄的長度不相同。產生變長記錄的原因是多樣的......變長記錄主要用於許多商業模式中。
在流式文件中,主要用於描述源程序、可執行文件、庫函數等。對流式文件的訪問是通過讀寫指針來實現的。
記錄式文件的長度用記錄的數目來表示;流式文件的長度是以字節為單位的。
無結構文件包括順序文件、索引文件、索引順序文件三種。
順序文件,指由一系列記錄按某種順序排列所形成的文件,其中的記錄可以是定長記錄和變長記錄。
索引文件,指為可變長記錄文件建立一張索引表,為每個記錄設置一個表項,以加速對記錄的檢索速度。
索引順序文件,在為每個文件建立一張索引表時,並不是為每一個記錄建立一個索引表項,而是為每一組記錄中的第一個記錄建立一個索引表項。
文件的邏輯結構中記錄的組織方式來源於用戶和系統在管理上的目標和需求,不同的目標和需求產生了多種組織方式,從而形成了多種邏輯結構的文件
順序文件
順序文件中的記錄可以按照不同的順序進行排列。在串結構中,系統按照文件的存入時間先后進行排序;在順序結構中,系統根據用戶指定的關鍵字(關鍵字必須唯一的標識每一個記錄)進行排序。
在對文件中的記錄進行批量存取時(即每次要讀寫或寫一大批記錄),順序結構都是不錯的選擇。但在交互應用的場合,或者是在包含有大量的增刪操作的場合,順序文件對記錄的操作比較困難。
索引文件
索引文件應用在處理變長記錄的記錄式文件。在未知記錄長度的情況下,無法快速的對變長記錄文件進行尋址。我們為變長記錄文件建立一張索引表,為主文件中的每個記錄在索引表中分別設置一個表項,記錄指向記錄的指針(即記錄在邏輯地址空間的首址)以及記錄的長度,索引表按關鍵字排序,因此其本身也是一個定長記錄的順序文件,這樣就把對變長記錄順序文件的順序檢索轉變為對定長記錄索引文件的隨機檢索。
索引文件在增加存儲開銷的同時將一個需要順序查找的變長記錄文件改造為一個隨機訪問的“定長“記錄文件。
索引順序文件
索引順序文件是索引文件和順序文件結合的產物。它基本上克服了變長記錄的順序文件不能隨機訪問和增刪操作不便的缺點,又保留了順序文件的關鍵特征。相比較順序文件和索引文件,它引入了文件索引表和溢出文件,文件索引表可以實現對索引順序文件的隨機訪問,溢出文件可以記錄新增加和刪除、修改的文件的記錄。