1. 程式人生 > >作業系統(六)檔案與檔案系統

作業系統(六)檔案與檔案系統

1.檔案是什麼:

檔案是對磁碟的抽象

所謂檔案 是指一組帶標識(標識即檔名)的、在邏輯上有完整意義的資訊項的序列

資訊項:構成檔案內容的基本單位(單個位元組,或多個位元組)各個資訊項之間具有順序關係

檔案內容的意義:由檔案建立者和使用者解釋

2.檔案系統:

作業系統中同意管理資訊資源的一種軟體,管理檔案的儲存、檢索、更新,提供安全可靠的共享和保護手段,並且方便使用者使用

(1)統一管理磁碟空間,實施磁碟空間的分配和回收

(2)實現檔案的按名存取

(3)實現檔案資訊的共享,並提供檔案的保護、保密手段

(4)向用戶提供一個方便實用、易於維護的介面,並向用戶提供有關得到統計資訊

(5)提高檔案系統的效能

(6)提供與I/O系統的統一介面

3.檔案的分類

unix按著檔案性質 用途劃分:

普通檔案、目錄檔案、特殊檔案(裝置檔案);管道檔案;套接字

普通檔案:包含使用者資訊、一般為ASCII或二進位制檔案

目錄檔案:管理檔案系統的系統檔案

特殊檔案:字元裝置檔案:和輸入輸出有關,用於模仿序列I/O裝置,例如終端,印表機,網絡卡等;塊裝置檔案:磁碟

4.典型的檔案的邏輯結構與檔案存取:

流式檔案:構成檔案的基本單位是字元,檔案是有邏輯意義、無結構的一串字元的集合

記錄式檔案:檔案由若干個記錄組成,可以按記錄進行讀、寫、查詢等操作  每條記錄有其內部結構

操作:

順序存取、訪問

隨機存取、訪問:提供讀寫位置(當前位置)unix 的seek操作

5.檔案的儲存介質:

物理塊:

資訊儲存、傳輸、分配的獨立單位;儲存裝置劃分為大小相等的物理塊、統一編號

6。典型的磁碟結構:

任何時刻只有一個磁頭處於活動狀態:輸入輸出資料以位串形式出現

7.磁碟訪問:

一次訪盤請求:

讀、寫,磁碟地址(裝置號、柱面號、磁頭號、扇區號)。記憶體地址(源、目)

完成過程由三個動作組成:

尋道(時間):磁頭移動定位到指定磁碟

旋轉延遲(時間):等待指定扇區從磁頭下旋經過

資料傳輸(時間):資料在磁碟與記憶體之間的實際傳輸

SSD固態硬碟沒有前兩種時間(所以快???)

8.磁碟儲存資料結構

(1)點陣圖:用一串二進位制反映磁碟空間中的分配情況,每一個物理塊對應一位;申請物理塊時,可以在點陣圖中查詢1位

(2)空閒塊表:將所有空閒塊記錄在一個表中   主要兩項內容:起始塊號;塊數

(3)空閒塊連結串列:把所有空閒塊鏈成一個鏈;擴充套件:成組連結法(改進)

9.磁碟地址與塊號的轉換

已知塊號,則磁碟地址:



 

10.檔案屬性

檔案控制塊(FCB):為管理檔案而設定的資料結構,儲存管理檔案所需的所有有關資訊(檔案屬性或元資料)

常用屬性:檔名,檔案號,檔案大小,檔案地址,建立時間,最後修改時間,最後訪問時間,各種標誌(只讀、隱藏、系統、歸檔)

11.檔案目錄(重要):

統一管理每個檔案的元資料,以支援檔名到檔案實體地址的轉換

將所有檔案的管理資訊組織在一起,即構成檔案目錄

12.目錄檔案(重要):

將檔案目錄以檔案的形式存放在磁碟上

13.目錄項:

構成檔案目錄的基本單位

目錄項可以是FCB,目錄是檔案控制塊的有序集合

14.檔案的物理結構:

檔案在儲存介質上的存放方式

有三種結構:

(1)連續(順序)結構:

檔案的資訊存放在若干連續的物理塊中

FCB如何記錄檔案地址?給出檔案第一塊地址+長度

優點:簡單;支援順序存取和隨機存取,所需的磁碟尋道次數和時間最少;可以同時讀入多個塊,檢索一個快容易

缺點:檔案不能動態增長。預留空間:浪費或重新分配和移動;不利於檔案的插入和刪除;外部碎片:緊縮技術

(2)連結結構:

一個檔案的資訊存放在若干個不連續的物理塊中,個塊之間通過指標連線,前一個物理塊指向下一個物理塊

FCB儲存首地址即可

優點:提高了磁碟的空間利用率,不存在外部碎片問題;有利於檔案插入和刪除;有利於檔案動態擴充

缺點:存取速度慢,不適於隨機存取;可靠性問題,指標出錯;更多的尋道次數和尋道時間;連結指標佔用一定的空間

改造:連結結構的一個變形:檔案分配表FAT(U盤)把所有的物理塊指標集中存放在檔案分配表中

(3)索引結構:

一個檔案的資訊存放在若干不連續的物理塊中

系統為每個檔案建立一個專用資料結構——索引表,並將這些物理塊的塊號存放在該索引表中

索引表就是磁碟塊地址陣列,其中第i條目指向檔案的第i塊

FCB如何記錄檔案地址:

索引表存放在何處:FCB派生中一個欄位專門存放

優點:前兩者的優點,解決缺點:既能順序存取,又能隨機存取;滿足了檔案動態增長、插入刪除的要求;充分利用磁碟空間

缺點:尋道次數多,尋道時間長;索引錶帶來系統開銷:記憶體、磁碟空間、存取時間

15.索引表的組織方式:

(1)連結方式:一個盤存一個索引表,多個索引錶鏈接起來

(2)多級索引方式:將檔案的索引表地址放在另一個索引表中

(3)綜合模式:直接索引+間接索引 結合

16.UNIX的三級索引結構:


=


17.磁碟分割槽:

把一個屋裡磁碟的儲存空間劃分為幾個相互獨立的部分

18.檔案卷:

磁碟上的邏輯分割槽,由一個或多個物理塊組成

一個檔案卷可以是是整個磁碟或部分磁碟或跨盤

同一個檔案卷中使用同一份管理資料進行檔案分配和磁碟空閒空間管理,不同的檔案卷中的管理資料是相互獨立的

一個檔案捲上:包含檔案系統資訊、一組檔案(使用者檔案目錄)、未分配空間

塊或簇:一個或多個(2的冪)連續的扇區,可定址資料塊

19.格式化:

在一個檔案捲上建立檔案系統,即建立並初始化用於檔案分配和磁碟空閒空間管理的管理資料(元資料)

20.磁碟上的內容

以檔案卷為例:

引導區:包括了從該卷引導作業系統所需要的資訊。每個卷(分割槽)一個,通常為第一個扇區

卷(分割槽)資訊:包括該卷(分割槽)的塊(簇)數,塊大小,空閒塊(簇)數量和指標。空閒FCB數量和指標

目錄檔案(根目錄檔案及其他目錄檔案)

使用者檔案

21.磁碟上檔案系統的佈局


檔案分配表2是1的映象

22.記憶體中所需的資料結構——以UNIX為例

(1)系統開啟表:

整個系統一張

放在記憶體:用於儲存已開啟檔案的FCB

FCB(i節點)資訊;引用計數;修改標記

(2)使用者開啟檔案表:

每個程序一個

程序的PCB中記錄了使用者開啟檔案表的位置

檔案描述符;開啟方式;讀寫指標;系統開啟檔案表索引(用來找到FCB對應資訊)

23.檔案系統 FAT(windows)

FAT16檔案系統:

簇大小 1、2、4、8、16、32、64扇區

檔案系統的資料記錄在“引導扇區”中

檔案分配表FAT的作用:描述簇的分配狀態、標註下一簇的簇號等等

FAT表項:2位元組

目錄項:32位元組

根目錄大小固定

FAT12 FAT32(U盤常用)

24,FAT檔案分配表

可以把檔案分配表看成是一個整數陣列,每個整數代表磁碟分割槽的一個簇號

狀態:未使用,壞簇、系統保留、被檔案佔用(下一簇簇號)、最後一簇(0xffff)

簇號從0開始 01系統保留

檔案屬性:7-6保留 5歸檔 4目錄 3卷標 2系統 1隱藏 0只讀

25  FAT32檔案系統

根目錄區不是固定區域、固定大小,而是資料區的一部分,採用與子目錄檔案相同的管理方式

目錄項仍佔32位元組,但分為各種型別

支援長檔名格式(目錄項有指標指向堆)

檔名unicode

26.檔案操作的實現

建立檔案:建立系統與檔案的聯絡,實質是建立檔案的FCB

在目錄中為新檔案建立一個目錄項,根據提供的引數及需要填寫相關內容;費分配必要的儲存空間

開啟檔案:根據檔名在檔案目錄中檢索,並將改檔案的目錄項讀入記憶體,建立相應的資料結構,為後續的檔案操作做好準備

27.建立檔案 create

(1)檢查引數的合法性:字元;重名

(2)申請空閒目錄項,並填入相關內容

(3)為檔案申請磁碟塊

(4)返回

28.開啟檔案

為檔案讀寫做準備 fd=open(檔案路徑名,開啟方式)

(1)根據檔案路徑名查目錄,找到目錄項

(2)根據檔案號查系統開啟檔案表,看檔案是否被開啟

是->共享計數+1

否->將目錄項等資訊填入系統開啟檔案空表項

(3)根據開啟方式、共享說明和使用者身份檢查訪問合法性

(4)在使用者開啟檔案表中獲取一空表項,填寫開啟方式等,並指向系統開啟檔案表對應表項

返回資訊:fd:檔案描述符 是一個非負證書,用於以後讀寫檔案

29指標定位

seek(fd,新指標位置)(都是似曾相識的函式啊QAQ)

系統為每個程序開啟的每個檔案維護一個讀寫指標,即相對於檔案來頭的偏移地址

(1)由fd查使用者開啟檔案表,找到對應的表項

(2)將使用者開啟檔案表中檔案讀寫指標位置設為新指標的位置,供後續讀寫命令存取該指標處檔案內容

30.讀檔案

read(檔案描述符,讀指標,要讀的長度,記憶體目的地址)

(1)根據開啟檔案的檔案描述符,找到相應的檔案控制塊(目錄項)

確定讀操作的合法性 讀操作合法

若檔案未開啟 (不一定)

(2)將檔案的邏輯塊號轉化成物理塊號

根據引數中的讀指標。長度與檔案控制塊中的資訊確定塊號、塊數、快內位移

(3)申請緩衝區

(4)啟動磁碟I/O操作,把磁碟塊中的資訊讀入緩衝區,再傳送到指定的記憶體區

(5)反覆執行3,4直到獨處所需數量的資料或讀到檔案結束

31.檔案系統的可靠性:

低於和預防各種物理性破壞或人為性破壞的能力

壞塊問題;備份:通過轉儲操作,形成檔案或檔案系統的多個副本

32.檔案系統備份:

全量轉儲:定期將所有檔案拷貝到後快取儲器

增量轉儲:只轉儲修改過的檔案,即兩次備份之間的修改,減少系統開銷

物理轉儲:從磁碟第0塊開始,將所有磁碟塊按序輸出到磁帶

邏輯轉儲:從一個或幾個指定目錄開始,遞迴地轉儲到給定日期後所有更改的檔案和目錄

33.檔案系統一致性

問題的產生:

磁碟塊->記憶體->寫回磁碟塊

若寫回之前,系統崩潰,則檔案系統出現不一致

解決方案:

設計一個實用程式,當系統再次啟動時,執行該程式,檢查磁碟塊和目錄系統

34.磁碟塊的一致性檢查

UNIX一致性檢查工作過程:

(1)記錄每塊在檔案中出現的次數

(2)記錄了每塊在空閒塊表中出現的次數

35.檔案系統的寫入策略

(考慮檔案系統的一致性和速度)

(1)通寫:記憶體的修改立即寫回到磁碟  FAT系統

(2)延遲寫:利用回寫快取的方法得到高速  可恢復性差

(3)可恢復寫:利用事務日誌實現檔案系統寫入  安全性+速度   windows的NTFS

36.檔案保護機制:

用於提供安全性、特定的作業系統機制

對擁有許可權的使用者,應該讓其進行相應操作,否則禁止

防止其他使用者冒充對檔案進行操作

37.檔案的訪問控制

(1)主動控制:訪問控制表

每個檔案一個

記錄使用者ID和訪問許可權

使用者可以是一組使用者

檔案可以是一組檔案

(2)能力表:許可權表

每個使用者一個

記錄檔名和訪問權

使用者可以是一組使用者

檔案可以是一組檔案

38.UNIX檔案訪問控制

採用檔案的二級存取控制

審查使用者身份、審查操作的合法性

第一級:對訪問者的識別

對使用者分類:

檔案主(owner)

檔案主的同族使用者

其他使用者

第二級:對操作許可權的識別

對操作分類:

讀操作(r)

寫操作(w)

執行操作(x)

不能執行任何操作(-)

rwxrwxrwx  還記不記得後面還有一位許可權識別~~~

39.檔案系統性能問題

磁碟服務->速度成為系統性能的主要瓶頸

設計檔案系統應儘可能減少磁碟訪問次數

提高檔案系統性能的方法:

FCB分解、磁碟碎片整理

40.塊快取記憶體

在記憶體中為磁碟塊設定一個緩衝區,儲存了磁碟中某些塊的副本

檢查所有的讀請求,看所需塊是否在塊快取記憶體中

如果在,則可直接進行讀操作;否則先將資料讀入塊快取記憶體,再拷貝到所需的地方

由於訪問的區域性性原理,當一資料塊被讀入塊快取記憶體以滿足一個I/O請求時,很可能將來還會再次訪問

(所以涉及到了頁面置換的各種演算法??

用散列表組織快快取記憶體

塊快取記憶體的置換(修改LRU)

塊快取記憶體的寫入策略(該塊是否會影響檔案系統的一致性)

41.提前讀取

思路:每次訪問磁碟,多讀入一些磁碟塊

依據:程式執行的空間區域性性原理

開銷:較小(只有資料傳輸時間)

具有針對性

42.windows檔案訪問方式

(1)不使用檔案快取:普通方式 通過windows提供的flushfilebuffer函式實現

(2)使用檔案快取

預讀取。寫回

(3)非同步模式

不再等待磁碟操作的完成

使處理器和I/O同時操作

43.使用者對磁碟訪問通過訪問檔案快取實現

由windows的cache manager實現對快取的控制

讀取資料的時候預取

在Cache滿的時候,根據LRU原則清除快取的內容

定期更新磁碟內容使其與Cache一致(一秒)

Write-back機制

在使用者要對磁碟寫資料時,只更改Cache中的內容,由Cahe Manager覺得何時更新

資料在磁碟、系統快取和程序地址空間有3分拷貝,通常下使用者對資料的修改並不直接反應到磁碟上,而是通過write-back機制由lazy-writer定期更新

44.合理分配磁碟空間

分配磁碟塊時,把有可能順序存取的塊放在一起,儘量分配在同一個柱面上從而減少磁臂的移動次數和距離

45.磁碟排程

當有多個訪盤請求等待時,採用一定的策略,對這些請求的服務順序調整安排,降低平均磁碟服務時間,達到公平(一個i/o請求在有限時間內滿足)、高效(減少裝置機械運動帶來的時間開銷)

46.磁碟排程演算法(我怎麼記得之前講過)

(1)先來先服務

(2)最短尋道時間優先(優先選擇距當前磁頭最近的訪問請求進行服務)缺點:飢餓……

(3)掃描演算法(折中)

當裝置無訪問請求時,磁頭不動;當有訪問請求時,磁頭按一個方向移動,在移動過程中對遇到的訪問請求進行服務,然後判斷該方向上是否還有訪問請求,沒有就換方向

(4)單向掃描演算法

總是從0號柱面向裡掃描

按柱面位置選擇訪問者

移動臂到達最後一個柱面後,立即帶動讀寫磁頭快速的返回到0號柱面

返回時不為任何的等待訪問者服務

返回後可再次進行掃描

(5)N-step-SCAN

把磁碟請求佇列分成長度為N的子佇列,每一次用掃描出來一個子佇列

在處理頭一個佇列時,新請求新增到其他子佇列中

如果最後剩下的請求數小於N,則它們全都將在下一次掃描時處理

N大 效能接近SCAN  N小 即先進先出

(6)FSCAN策略

使用兩個子佇列

掃描開始時,所有請求都在一個佇列中而另一個佇列為空

掃描中,所有新加到的請求都放入另一個佇列中

對新請求的服務延遲到處理完所有老請求之後

(7)旋轉排程演算法

根據延遲時間來決定執行次序的排程

47.資訊的優化分佈

記錄在磁軌上的排列方式也會影響輸入輸出操作的時間

48.記錄的成組與分解

把若干邏輯記錄合成一組存放一塊

進行成組操作時必須使用記憶體緩衝區,緩衝區的長度等於邏輯記錄長度乘以成組的塊因子

成組目的:提高儲存空間利用率,減少啟動外設的次數,提高系統速度

49.RAID技術(又是好眼熟)(獨立磁碟冗餘陣列)

多塊磁碟按照一定要求構成一個獨立的儲存裝置

目標:提高可靠性和效能

考慮:磁碟儲存系統的速度容量容錯資料災難發生後的資料恢復

資料是如何組織的?

基本思想:通過把多個磁碟組織在一起,作為一個邏輯卷提供磁碟跨越公告;通過把資料分成多個數據塊,並行寫入、獨處多個磁碟,以提高資料傳輸率。通過映象或校驗操作,提供容錯能力

最簡單的~:映象

最複雜的~:塊容錯校驗

RAID0-條帶化

資料分佈在陣列的所有磁碟上

有資料請求時名同事多個磁碟並行操作

充分利用匯流排頻寬,資料吞吐率高

RAID1-映象

最大限度保證資料安全及可恢復性

所有資料儲存在兩個磁碟的相同位置

RAID4-交錯塊奇偶校驗

帶奇偶校驗 以資料塊為單位