在學習作業系統時總結了筆記,并分享出來,特别是藍色和紅色字型。
參考書:《作業系統》谌衛軍等,清華大學出版社,2012年5月
參考視訊:清航全套計算機專業課視訊
目錄
第六章 檔案管理
1.檔案
2.目錄
3.檔案系統的實作
第六章 檔案管理
可以從兩種不同的觀點來看待檔案系統:
-使用者觀點:關心的是檔案系統所提供的對外的使用者接口,包括檔案如何命名、如何保護、如何通路(建立、打開、關閉、讀、寫等);
-作業系統觀點:關心的是如何來實作與檔案有關的各個功能子產品,包括如何來管理存儲空間、檔案系統的布局、檔案的存儲位置等。
1.檔案
檔案的結構
-指檔案的邏輯結構,即檔案系統提供給使用者的檔案結構形式,它獨立于在外存上的實體存儲結構。
-無結構:整個檔案由一序列無結構的位元組流組成;

檔案的分類
普通檔案(regular file):包含使用者資訊的檔案;
-ASCII檔案:由一行行的文本組成;
-二進制檔案:非ASCII檔案,通常具有某種内部的邏輯結構,為相關的應用程式所了解。
目錄檔案(directory):管理檔案系統結構的系統檔案。
思考:檔案的屬性資訊存在哪?(後邊講)
2.目錄
-檔案太多了怎麼辦?不同的應用程式有不同類型的檔案,不同的使用者有不同的檔案,如何對它們進行組織、分類?
-如何對檔案進行管理?當使用者需要通路某個檔案時,如何根據這個檔案名迅速地定位到相應的檔案,進而對檔案的屬性和内容進行各種操作?
-解決的辦法就是:目錄。
目錄(directory)也稱檔案夾(folder),它是一張表格,記錄了在該目錄下的每一個檔案的檔案名和其他的一些管理資訊。
一般情況下,每個檔案占用該表格的某一行,即一個目錄項(該表格如何存放?);
這張表格本身是以檔案的形式存放在磁盤上;
在目錄的管理上,也有相關的系統調用,如:
-建立目錄create;
-删除目錄delete;
-修改目錄名rename;
思考:如何存放?結構體數組
思考:根目錄如何存放?單獨存放
3.檔案系統的實作
6.1(檔案)和6.2(目錄)是從使用者的角度來看待檔案系統,使用者所關心的問題是檔案如何來命名、可以對檔案進行哪一些操作、目錄的邏輯結構是什麼樣的等各種與使用者接口有關的問題;
從檔案系統的實作來看,實作者更關心的是檔案和目錄是如何存儲的、磁盤空間是如何管理的、如何使整個檔案系統能高效、可靠地運轉。
塊(block)
-檔案的邏輯結構一般是位元組流;
-對于使用者而言,可以在這種位元組流的基礎上,構造自己所需的各種類型的資料結構,如:記錄結構、樹狀結構、線性結構等;
-對于檔案系統而言,必須将這種位元組流(一個連續的邏輯位址空間)儲存在磁盤的某些扇區中;
-通常做法:把磁盤空間劃分為一個個大小相同的塊(block),稱為實體塊;把該邏輯位址空間也分成大小相同的邏輯塊,在檔案系統的内部,以塊為機關來進行操作;
-一個實體塊由一個或多個連續的扇區組成。
小實驗:一個文本十個字元占用(大小)10個位元組,但在磁盤占用空間32KB(塊的大小:32KB)
檔案系統的布局
一個磁盤在低級格式化以後,可以用分區軟體劃分為若幹個分區。在分區以後,磁盤的扇區0稱為主引導記錄(Master Boot Record,MBR),用來啟動計算機,MBR的結尾是一個分區表,記錄了每個分區的起始扇區和大小,其中有一個分區為活動分區;
檔案的實作需解決以下兩個問題:
-如何來描述一個檔案,如何來記錄檔案的各種管理資訊?
-如何來存放檔案,即如何把檔案的各個連續的邏輯塊存放在磁盤上的空閑實體塊當中?如何來記錄邏輯塊與實體塊之間的映射關系?
如何來實作FAT?
-想想在頁式存儲管理當中,如何實作邏輯頁面到實體頁面的映射?
-FAT表的實作方法:在檔案系統中,設定一個維的線性表格,其項數等于磁盤實體塊個數,并按實體塊編号的順序建立索引。對于每一個檔案,在它的FCB中記錄了第一個實體塊編号X1,而在FAT表的第X1項中,記錄了該檔案的第二個實體塊編号X2,…,進而形成一個連結清單。
多個檔案如下:
思考:假設每個實體塊大小為4KB,每個檔案最大為多少?
假設位址為一個整數,四個位元組,最多放:4K/4=1K,一共可放4KB*1K = 4M
若檔案太大,怎麼辦?可指向另一位址映射表。(用二級索引或三級索引)
目錄的實作
目錄的主要功能:根據使用者給出的ASCIⅡ形式的檔案名(路徑名),迅速地定位到相應的檔案控制塊。目錄的實作需解決以下三個問題:
-目錄項的内容;
-長檔案名問題;
-目錄的搜尋方法。
思考:若隻更改了檔案名,什麼發生了改變?父目錄發生了改變
系統調用的實作
在檔案系統的内部,是如何來實作open、close、read、write等各種系統調用函數的?
1)資料結構
·位于外存上的資料結構:
-目錄結構:用來組織檔案,通過檔案名來尋找其FCB;
-檔案控制塊FCB:記錄了檔案的各種屬性資訊和檔案所在的實體塊資訊;
·位于記憶體中的資料結構:
-系統内打開檔案表:記錄了系統中已打開檔案的FCB和共享計數等資訊;
-程序内打開檔案表:在程序内部打開的檔案所組成的一個表格,包括打開方式、讀寫指針、該檔案在系統打開檔案表中的索引。