一、檔案與檔案系統
1.1 檔案是什麼
- 檔案是對磁盤的抽象
- 所謂檔案是指一組帶辨別(辨別即為檔案名)的、在邏輯上有完整意義的資訊項的序列。
- 資訊項:構成檔案内容的基本機關(單個位元組,或多個位元組),各資訊項之間具有順序關系
- 檔案内容的意義:由檔案建立者和使用者解釋
-
作業系統之檔案管理(上)一、檔案與檔案系統
1.2 如何設計一個檔案系統
這裡先看檔案管理的需求:
-
從使用者角度
檔案系統是如何呈現在使用者面前:
* 一個檔案的組織
-
- 如何命名
- 如何保護檔案
- 可以實施的操作
- 從作業系統角度:怎樣組織、管理檔案
* 檔案的描述、分類
- 檔案目錄的實作
- 存儲空間的管理
- 檔案的實體位址
- 磁盤實際運作方式(與裝置管理的接口)
- 檔案系統的性能
1.3 檔案系統
- 作業系統中統一管理資訊資源的一種軟體,管理檔案的存儲、檢索、更新,提供安全可靠的共享和保護手段,并且友善使用者使用
- 檔案系統要完成哪些任務
1、統一管理磁盤空間,實施磁盤空間的配置設定與回收
2、實作檔案的按名存取:名字空間–映射–>磁盤空間
3、實作檔案資訊的共享,并提供檔案的保護、保密手段
4、向使用者提供一個友善使用、易于維護的接口,并向使用者提供有關統計資訊
5、提高檔案系統的性能
6、提供與IO系統的統一接口
1.4 檔案的分類
按檔案性質和用途分類(
UNIX
),一般分為普通檔案、目錄檔案、特殊檔案(裝置檔案)、管道檔案、套接字
-
普通檔案
即使用者自己建立的檔案,包含了使用者的資訊,一般為
或二進制檔案ASCII
-
目錄檔案
管理檔案系統的系統檔案
-
特殊檔案
字元裝置檔案:和輸入輸出有關,使用者模仿串行
I/O
裝置,例如終端、列印機、網卡等。
塊裝置檔案:磁盤
1.5 檔案的邏輯結構
-
無結構的流式檔案
對檔案内資訊不再劃分機關,它是依次的一串字元流構成的檔案。
-
有結構的記錄式檔案
使用者把檔案内的資訊按邏輯上獨立的含義劃分資訊機關,每個機關稱為一個邏輯記錄(簡稱記錄)。
-
作業系統之檔案管理(上)一、檔案與檔案系統 - **說明:**這裡是從使用者角度看檔案,由使用者的通路方式确定,這裡給出了三種邏輯結構,還可以組織成堆、順序、索引、索引順序、散列等結構。第一種是以位元組為機關的流式結構,第二種是一種記錄式檔案結構,最後一種是樹形結構。
1.6 典型的檔案邏輯結構與檔案存取
流式檔案:構成檔案的基本機關是字元
檔案是有邏輯意義、無結構的一串字元的集合
記錄式檔案:檔案由若幹記錄組成,可以按記錄進行讀寫、查找等操作。每條記錄有其内部結構
檔案的邏輯結構與檔案存取之間的關系
順序存取(通路)
随機存取:提供讀寫位置(目前位置)。如UNIX的seek操作。
1.7 檔案的存儲媒體
1.7.1 存儲媒體與實體塊
-
典型的存儲媒體
磁盤(包括固态盤
)、錄音帶、CD光牒、SSD
盤、…U
- 實體塊(塊
、簇block
cluster
)
資訊存儲、傳輸、配置設定的獨立機關
儲存設備劃分為大小相等的實體塊,統一編号
1.7.2 典型的磁盤結構
普通磁盤構造及工作原理
- 磁道(Track)
- 柱面(Cylinder)
- 扇區(Sector)
- 磁頭(Heads)
- 盤片(Platters)
- 每個碟片都有兩面,是以也會相對應每碟片有2個磁頭。
-
作業系統之檔案管理(上)一、檔案與檔案系統 - A:磁道
- B:扇面
- C:扇區
-
D:簇(扇區組)
在硬碟上定位某一資料記錄位置—C扇區,使用了三維定位。
-
作業系統之檔案管理(上)一、檔案與檔案系統
1.7.3 磁盤通路
磁盤工作時盤片在高速旋轉,機械手臂驅動磁頭沿着徑向移動,在磁道上讀取所需要的資料。
一次通路磁盤的請求:讀寫、磁盤位址(裝置号、柱面号、磁頭号、扇區号),記憶體位址(源/目)。完成過程由三個動作組成:
- 尋道(時間):磁頭移動定位到指定磁道
- 旋轉延遲(時間):等待指定扇區從磁頭下旋轉經過
- 資料傳輸(時間):資料在磁盤與記憶體之間的實際傳輸
1.7.4 磁盤空間管理
位圖
用一串二進制位反映磁盤空間中配置設定使用情況,每個實體塊對應一位,配置設定的實體塊為0,否則為1。
申請實體塊時,可以在位示圖中查找1的位,傳回對應的實體塊号
歸還時,将對應位轉置1。
空閑塊表
将所有空閑塊記錄在一個表中,即空閑塊表
主要兩項内容:起始塊号,塊數
空閑塊連結清單
把所有空閑塊鍊成一個表
擴充:成組連結法
磁盤位址與塊号的轉換
成組連結法設計思想
**說明:**左上角的是一個專用塊,表示一些有用資訊,而右邊大括号中的都是空閑塊。所有空閑塊我們分成了若幹組,典型的是100塊是一組,最後一個空閑組隻有99個空閑塊。專用塊中有20個空閑塊号,分别對應右邊的空閑塊組。每次要使用檔案的時候,就從專用塊中挑選空閑塊,一般從801開始配置設定。820中的第一塊實際上是記錄了後面一塊800中空閑塊的空閑塊号和總的空塊的數量,後面的以此類推。最後一個組中的0則表示最後一組的标志。
成組連結法:配置設定算法
配置設定一個空閑塊
查
L
單元(空閑塊數)
- 當
空閑塊數 > 1 , i = L + 空閑塊數
;
從i單元得到一個空閑塊号;
把該塊配置設定給申請者;
- 空閑塊數減1
-
, 取出空閑塊數 = 1
單元内容(一組的第一塊号或L + 1
);
其
值 = 0
無空閑塊,申請者等待
其值不等于零,把該塊内容複制到專用塊
該塊配置設定給申請者;
把專用塊内容讀到記憶體
L
開始的區域。
成組連結清單法:回收算法
歸還一塊
L
單元的空閑塊數
-
空閑塊數加一;空閑塊數 < 100
歸還塊号填入j := L + 空閑塊數
單元j
-
空閑塊數 = 100
, 則把記憶體中登記的資訊寫入歸還塊中;
把歸還塊号填入
L+ 1
單元;
将
單元置成L
。1