5.3.1 檔案系統的佈局-作業系統設計與實現(第三版)5.1-5.2
第5章 檔案系統
5.1.2 三種類型的檔案
位元組序列、記錄序列、樹
5.1.3 可執行檔案
一個可執行檔案有五個段:檔案頭、程式碼、資料、重定位位和符號表。檔案頭以所謂的魔數(magic number)開始,表名該檔案是一個可執行檔案。接下來是檔案的各個部分的長度、執行的起始地址和一些標誌位。在檔案頭之後就是程式本身的程式碼和資料,在它們被轉載到記憶體中時,使用重定位位來進行定位。符號表則用於除錯。
5.3.1 檔案系統的佈局
BIOS:在計算機啟動後,BIOS會讀入並執行MBR中的程式碼。
主引導記錄(Master Boot Record,MBR):磁碟的第0個扇區,主要用來啟動計算機。或被稱為 初始化程式裝載器(Initial Program Loader,IPL)、卷引導程式碼(Volume Boot Code)、主引導(master boot)。
(主)分割槽表(partition table):MBR的末尾有一個分割槽表,裡面記錄了每一個分割槽的起始地址和結束地址。
活動分割槽:分割槽表中有一個是活動分割槽。
引導塊(boot block):活動分割槽中的第一個磁碟塊,被MBR讀入記憶體,然後執行它。引導塊中的程式碼就會把儲存在該分割槽中的作業系統讀取出來,裝入記憶體執行。為了保持一致性,每一個分割槽都以一個引導塊開頭,即使在該分割槽中並沒有包含一個可引導的作業系統。
在PC相容的系統上。
主要分割槽(primary partition):主要分割槽的個數最多不能超過4個,因為在主引導記錄和第1個512位元組的扇區末尾之間,僅能容納4個數組元素,來存放分割槽的描述符。最初的啟動必須從主分割槽開始,由它來裝入程式碼,管理各個邏輯分割槽。
擴充套件分割槽(extend partition):有些作業系統允許將分割槽表中的某一項作為一個擴充套件分割槽,指向邏輯分割槽連結串列。
邏輯分割槽(logic partition):多個邏輯分割槽由連結串列連線。
在MINIX3中。
子分割槽表(sub partition table):針對擴充套件分割槽,它允許在一個分割槽中,包含有一個子分割槽表。這樣做好處是,可以使用管理主分割槽表的程式碼來管理子分割槽表,因為它們的結構是一樣的。子分割槽的可能的用途是:針對根裝置、交換區、系統二進位制檔案和使用者檔案,可以使用不同的子分割槽。這樣一來,在一個字分割槽中發生的問題不會傳播到另一個子分割槽。
其他。
不是所有的磁碟都需要分割槽,軟盤的引導塊通常從第一個扇區開始(第0個扇區為MBR?)。
BIOS讀入磁碟的第一個扇區,然後查詢一個魔數(?????不是可直接執行的二進位制的機器指令嗎?),標明它是有效的可執行程式碼。主引導記錄和引導塊使用的是相同的魔數,因而可執行程式碼可能是兩者之一(???)。
Flash儲存器通常會使用部分的儲存容量來模擬一個磁碟。
一種可能的檔案系統佈局
超級塊(superblock):包含了關於檔案系統的所有關鍵引數。當計算機被啟動或檔案系統被首次接觸時(被掛載嗎?),超級塊的內容被裝入記憶體。
空閒空間管理:關於檔案系統中空閒物理塊的管理資訊。
索引節點:一組資料結構,一個檔案對應一個,描述了檔案的所有屬性資訊和它在磁碟上的儲存位置。
根目錄:檔案系統數的根結點。