文件:一組有意義的信息/數據集合
文件的屬性:
- 文件名:由創建文件的用戶決定文件名,主要是為了方便用戶找到文件。同一個目錄下不允許有重名文件
- 標識符:一個系統內的個文件標識符唯一,對用戶來說毫無可讀性。因此標識符只是操作系統用于區分各個文件的一種內部名稱
- 類型:指明文件的類型
- 位置:文件的存放路徑、在外存中的地址(操作系統使用,對用戶不可見)
- 創建時間
- 上次修改時間
- 文件所有者信息
- 保護信息:對文件進行保護的訪問控制信息
文件組織形式
- 無結構文件
- 有結構文件:由記錄組成
目錄也是一種特殊的有結構文件(由記錄組成)
類似于內存分為一個個“內存塊”,外存會分為一個個“塊/磁盤塊/物理塊”。每個磁盤塊的大小是相等的,一般包含2的整數冪個地址。文件的邏輯地址也可以分為(邏輯塊號,塊內地址)。操作系統同樣需要將邏輯地址轉換為外存的物理地址。塊內地址的位數取決于磁盤塊的大小。
操作系統以塊為單位為文件分配存儲空間。外存中的數據讀入內存時同樣以塊為單位。
文件的邏輯結構
無結構文件
內部的數據就是一系列二進制流或字符流,又稱作流式文件
有結構文件
記錄式文件,每條記錄有一個數據項作為關鍵字。可分為定長記錄和可變長記錄兩種。
順序文件:類似于順序表
- 串結構:記錄之間的順序,與關鍵字無關。通常按照記錄存入的時間決定記錄的順序
- 順序結構:記錄之間的順序按關鍵字順序排列
鏈式文件:
索引文件
索引順序文件
索引順序文件的效率比較高。
當文件比較多的時候可以采用多級索引順序文件,可以大大提高效率
文件目錄
目錄本身就是一種有結構文件,由一條條記錄組成。每條記錄對應一個在該目錄下的文件。
文件控制塊FCB:一個文件目錄項
FCB的有序集合稱為文件目錄。
- 單級目錄結構
- 兩級目錄結構:MFD(主文件目錄)和UFD(用戶文件目錄)
- 多級目錄結構(樹形目錄結構):樹形結構不便于實現文件的共享
- 無環圖目錄結構:可以用不同的文件名指向同一個文件。需要為每個共享節點設置一個共享計數器,用于記錄此時有多少個地方在共享該節點。用戶提出刪除節點的請求時,要是刪除該用戶的FCB,并使得共享計數器減一。
索引節點:FCB的改進
減小目錄表項長度,因此每個磁盤塊可以存放更多個目錄項,因此檢索文件時磁盤I/O的次數就會減少許多。
文件的物理結構
內存塊和外存塊的大小一般相同
連續分配
要求每個文件在磁盤上占有一組連續的塊。文件目錄中需要記錄起始塊號和長度。
優點:支持順序訪問和直接訪問(隨機訪問)
讀取某個磁盤塊時,需要移動磁頭,連續分配的文件在順序讀寫時速度最快
缺點:物理上采用連續分配的文件不方便拓展。而且會產生磁盤內部碎片。存儲空間利用率低。
鏈接分配
隱式分配
不會產生內部碎片
顯式鏈接
把用于鏈接文件各個物理塊的指針顯式地存放在一張表中,即文件分配表(FAT)
默認鏈接分配是隱式鏈接的
索引分配
鏈接方案
多層索引