【操作系統】文件系統(一):文件的存儲介質及結構

技術是開源的,知識是共享的。

1 文件與文件系統

1.1 基本概念

文件實際上是對磁盤的抽象,是指一組帶標識(即文件名)的、在邏輯上有完整意義的信息項的序列

信息項:是構成文件內容的基本單位(單個或多個字節),各信息項之間具有順序關係。

文件系統是操作系統中統一管理信息資源的一種軟件,管理文件的存儲、檢索、更新,提供安全可靠的共享和保護手段,並且方便用戶使用。主要作用有:

  • 統一管理磁盤空間,實施磁盤空間的分配回收
  • 實現文件的按名存取
  • 實現文件信息的共享,並提供文件的保護、保密手段
  • 提供與I/O系統的統一接口

表1-1 文件的分類

類別 描述
普通文件(regular) 包含了用戶的信息
目錄文件(directory) 管理文件系統的系統文件
特殊文件(special file) 字符設備文件:和輸入輸出有關,如打印機、網卡等;塊設備文件:磁盤

1.2 文件的邏輯結構與文件存取

1.2.1 文件的邏輯結構

流式文件:構成文件的基本單位是字符。文件是有邏輯意義、無結構的一串字符的集合。
記錄式文件:文件由若干個記錄組成,可以按記錄進行讀、寫、查找等操作。每條記錄都有其內部結構。
此外還有樹形結構、堆結構、順序結構、索引結構等。

1.2.2 文件存取

包括順序訪問和隨機訪問(該方式需要提供讀寫位置)。

2 文件的存儲介質

2.1 存儲介質與物理塊

存儲介質主要包括磁盤(包括固態硬盤SSD)、磁帶、U盤、光盤等。
物理塊(塊block、簇cluster)是信息存儲、傳輸、分配的獨立單位。存儲設備被劃分爲大小相等的物理塊,統一編號。

2.2 磁盤的典型結構

每個磁盤包含一個盤面,盤面上有很多個同心圓,稱之爲磁道,每個磁道上有若干個圓弧稱之爲扇區。每個盤面上都有唯一的一個讀寫磁頭,該磁頭沿半徑方向運動。
任何時刻只有一個磁頭處於活動狀態並且輸入輸出的數據流以位串的形式出現。
磁盤中的物理地址有三部分組成:磁頭號(盤面號)、磁道號(柱面號)、扇區號
每個扇區包含三部分內容**:標題、數據、校驗信息**。
在這裏插入圖片描述

2.3 磁盤訪問

每次磁盤請求有三個步驟組成(SSD只有第三步):
1、尋道時間:磁頭移動定位到指定磁道;
2、旋轉延遲時間:等待指定扇區從磁頭下旋轉經過;
3、數據傳輸時間:數據在磁盤與內存之間的實際傳輸。

3 磁盤空間管理

3.1 相關數據結構

1 位圖

  • 用一串二進制位反映磁盤空間中分配使用情況,每個物理塊對應一位,已被分配的物理塊爲0,否則爲0;
  • 申請物理塊時,可以在位圖中查找爲1的位,返回對應的物理塊號並同時將對應位修改成0;歸還時將對應位置1。
    2 空閒塊表
    將所有的空閒塊記錄在一個表中,即空閒塊表。表中主要記錄兩項內容:起始塊號,塊數。
    3 空閒塊鏈表
    把所有空閒塊鏈成一個鏈。爲了防止鏈過多,可以用成組鏈接法。

3.2 磁盤地址和塊號的轉換

已知塊號,則磁盤地址:

柱面號=[塊號/(磁頭數扇區數)]
磁頭號=[(塊號mod(磁頭數
扇區數))/扇區數]
扇區號=(塊號mod(磁頭數*扇區數))mod扇區數

已知磁盤地址:

塊號=柱面號*(磁頭數扇區數)+磁頭號扇區數+扇區號

當採用位圖的數據結構時:

已知字號i、位號j:塊號=i*字長+j
已知塊號:字號=[塊號/字長] 位號=塊號mod 字長

4 文件控制塊及文件目錄

4.1 文件屬性

文件屬性,又稱爲文件控制塊(File Control Block),是爲管理文件而設置的數據結構,保存管理文件所需的所有有關信息。主要包括文件名、文件大小、文件地址、創建時間、最後修改時間、各種標誌(只讀、隱藏、系統、歸檔)等。

4.2 文件目錄、目錄文件與目錄項

文件目錄
統一管理每個文件的元數據以支持文件名到文件物理地址的轉換;將所有文件的管理信息組織在一起,即構成文件目錄。
目錄文件
將文件目錄以文件的形式存放在磁盤上。
目錄項
目錄項是構成文件目錄的基本單元,可以是FCB,目錄是文件控制塊的有序集合

4.3 與目錄相關的概念

路徑名(文件名)
絕對路徑名:從根目錄開始
相對路徑名:從當前目錄開始

5 文件的物理結構

5.1 連續結構

文件信息存放在若干連續的物理塊中。
優點
支持順序存取和隨機存取;所需的磁盤尋道次數和尋道時間最少
缺點
文件不能動態增長;不利於文件的插入和刪除;容易造成外部碎片。

5.2 鏈接結構

5.2.1 概念

一個文件的信息存放在若干不連續的物理塊中,各塊之間通過指針連接,前一個物理塊指向下一個物理塊。
優點
提高了磁盤空間利用率;有利於文件插入和刪除;有利於文件動態擴充
缺點
存取速度慢,不適於隨機存取;有可靠性問題,如指針出錯;需要更多的尋道次數和尋道時間;鏈接指針還需要佔用一定的空間

5.2.2 鏈接結構的一種變形——文件分配表FAT

將所有的物理塊放在統一的表中,稱爲文件分配表,表中記錄了所有物理塊的塊號及對應的表項的值:0表示是空的物理塊,正整數表示下一塊塊號,-1表示這個是該文件的最後一塊。

5.3 索引結構

5.3.1 概念

一個文件的信息存放在若干個不連續的物理塊中,系統爲每個文件建立一個專用數據結構——索引表,並將這些物理塊的塊號存放在該索引表中。索引表就是磁盤塊地址數組,其中第i個條目指向文件的第i塊。

5.3.2 索引表的組織方式

鏈接方式
一個盤塊存放一個索引表,多個索引錶鏈接起來
多級索引方式
將文件的索引表地址放在另一個索引表中
綜合模式
直接索引方式與間接索引方式結合

5.3.3 Unix的三級索引結構

1、每個文件的主索引表有15個索引項(FCB中),每項2個字節;
2、前12項直接存放文件的物理塊號(直接尋址);
3、如果文件大於12塊,則利用第13項指向一個物理塊,在該塊中存放的是一級索引表;

假設扇區大小是512個字節,物理塊等於扇區的大小,則一級索引表可以存放256個物理塊號

4、對於更大的文件還可利用第14和第15項作爲二級和三級索引表。
故Unix的三級索引結構最多可以容納12+256+2562+2563個塊

6 文件系統的實現

6.1 相關術語

磁盤分區(partition):把一個物理磁盤的存儲空間劃分爲幾個相互獨立的部分,稱爲分區。
文件卷(volume):磁盤上的邏輯分區,由一個或多個物理塊組成。

一個文件卷可以是整個磁盤或者部分磁盤或者跨盤(RAID)。
同一個文件卷中使用同一份管理數據進行文件分配和磁盤空間管理。
一個文件捲上包括:文件系統信息、一組文件(用戶文件、目錄文件)、未分配空間。
塊(Block)或簇(Cluster):一個或多個(2的冪)聯繫的扇區,可尋址數據塊。

格式化(format):在一個文件捲上建立文件系統,即建立並初始化用於文件分配和磁盤空閒空間管理的管理數據(即元數據)。

6.2 磁盤上的內容

表6-1 磁盤內容

分區 說明
引導區 包括了從該卷引導操作系統所需要的信息,每個卷一個,通常爲第一個扇區
卷信息 包括該卷的塊(簇)數、塊(簇)大小、空閒塊(簇)數量和指針等
目錄文件 根目錄文件和其它目錄文件
用戶文件

6.3 內存中所需的數據結構——以Unix爲例

在這裏插入圖片描述

7 文件系統的實例——Unix

7.1文件目錄檢索

訪問一個文件有兩個步驟組成:
1 目錄檢索
用戶給出文件名–>按文件名查找到目錄項FCB

根據路徑名檢索:
全路徑名:從根開始 \A\B\C\File1
相對路徑:從當前目錄開始 C\File1

2 文件尋址
根據目錄項/FCB中文件物理地址等信息,計算出文件中任意記錄或字符在存儲介質上的地址。

7.2 Unix的文件系統

1 構成
Unix系統中,每個文件由一個目錄項、一個i節點和若干個磁盤塊組成。目錄文件是由目錄項構成的。
在這裏插入圖片描述
2 查找文件的流程
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章