本章討**件系統的最底層:次級儲存(外存)結構。
首先是大容量儲存結構概述,不做過多介紹。
其次是磁碟的各種排程演算法。
最後是磁碟管理。
磁碟
固態磁碟(ssd)、磁帶。
對於磁碟驅動器,我們需要它又較快的訪問速度和較寬的磁碟頻寬。
對於磁碟,訪問時間包括尋道時間和旋轉延遲。
磁碟頻寬是傳輸位元組的總數除以從服務請求開始到最後傳遞結束時的總時間。
每當程序需要進行磁碟i/o操作時,它就向作業系統發出乙個系統呼叫。
如果磁碟驅動器和控制器空閒,就立即處理請求。如果磁碟驅動器和控制器忙,則服務請求會新增到磁碟驅動器的待處理請求佇列中。
當乙個請求完成時,作業系統選擇哪乙個待處理的請求服務?就需要磁碟排程演算法。
(1)fcfs排程
fcfs演算法根據程序請求訪問磁碟的先後順序進行排程,這是一種最簡單的排程演算法。
如果只有少量程序需要訪問,且大部分請求都是訪問簇聚的檔案扇區,則有望達到較好的效能;但如果有大量程序競爭使用磁碟,那麼這種演算法在效能上往往接近於隨機排程。
(2)最短尋找時間優先(shortest seek time first, sstf)演算法
sstf演算法選擇排程處理的磁軌是與當前磁頭所在磁軌距離最近的磁軌,以使每次的尋找時間最短。即sstf選擇最接近磁頭位置的待處理請求。
sstf演算法本質上時一種最短作業優先(sjf)排程;與sjf排程一樣,可能會導致「飢餓」現象。
(3)scan排程
scan演算法在磁頭當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件。磁臂從磁碟的一端開始,向另一端移動;移動每個柱面時,請求處理;當達到磁碟的另一端時,磁頭移動方向反轉。
由於磁頭移動規律與電梯執行相似,故又稱為電梯排程演算法。scan演算法對最近掃瞄過的區域不公平,因此,它在訪問區域性性方面不如fcfs演算法和 sstf演算法好。
(4)c-scan排程
在掃瞄演算法的基礎上規定磁頭單向移動來提供服務,回返時直接快速移動至起始端而不服務任何請求。由於scan演算法偏向於處理那些接近最裡或最外的磁軌的訪問請求,所以使用改進型的c-scan演算法來避免這個問題。
(5)look排程
釆用scan演算法和c-scan演算法時磁頭總是嚴格地遵循從盤面的一端到另一端,顯然,在實際使用時還可以改進,即磁頭移動只需要到達最遠端的乙個請求即可返回,不需要到達磁碟端點。
這種形式的scan演算法和c-scan演算法稱為look和c-look排程。這是因為它們在朝乙個給定方向移動前會檢視是否有請求。
sstf是常見的。
(1)磁碟格式化
乙個新的磁碟只是乙個含有磁性記錄材料的空白盤。在磁碟能儲存資料之前,它必須分成扇區以便磁碟控制器能進行讀和寫操作,這個過程稱為低階格式化(物理分割槽)。
低階格式化為磁碟的每個扇區釆用特別的資料結構。每個扇區的資料結構通常由頭、資料區域(通常為512b大小)和尾部組成。頭部和尾部包含了一些磁碟控制器所使用的資訊。
為了使用磁碟儲存檔案,作業系統還需要將自己的資料結構記錄在磁碟上:
第一步:將磁碟分為由乙個或多個柱面組成的分割槽(即我們熟悉的c盤、d盤等形式的分割槽);
第二步:對物理分割槽進行邏輯格式化(建立檔案系統),作業系統將初始的檔案系統資料結構儲存到磁碟上,這些資料結構包括空閒和已分配的空間以及乙個初始為空的目錄。
(2)引導塊
計算機啟動時需要執行乙個初始化程式(自舉程式),它初始化cpu、暫存器、裝置控制器和記憶體等,接著啟動作業系統。為此,該自舉程式應找到磁碟上的作業系統核心,裝入記憶體,並轉到起始位址,從而開始作業系統的執行。
(關於計算機的啟動過程,請看《計算機是如何啟動的?》)
自舉程式通常儲存在rom中,為了避免改變自舉**需要改變rom硬體的問題,故只在rom中保留很小的自舉裝入程式,將完整功能的自舉程式儲存在磁碟的啟動塊上,啟動塊位於磁碟的固定位。擁有啟動分割槽的磁碟稱為啟動磁碟或者系統磁碟。
(3)壞塊
由於磁碟有移動部件且容錯能力弱,所以容易導致乙個或多個扇區損壞。部分磁碟甚至從出廠時就有壞扇區。根據所使用的磁碟和控制器,對這些塊有多種處理方式。
對於簡單磁碟,如電子整合驅動器(ide)。壞扇區可手工處理,如ms-dos的format 命令執行邏輯格式化時便會掃瞄磁碟以檢查壞扇區。壞扇區在fat表上會標明,因此程式不會使用。
對於複雜的磁碟,如小型計算機系統介面(scsi),其控制器維護乙個磁碟壞塊鍊錶。該鍊錶在出廠前進行低階格式化時就初始化了,並在磁碟的整個使用過程中不斷更新。低階格式化將一些塊保留作為備用,對作業系統透明。控制器可以用備用塊來邏輯地替代壞塊,這種方案稱為扇區備用。
參考:
檔案系統 大容量儲存器的結構
磁碟有幾個效能引數 傳輸速率 在驅動器和計算機之間的資料傳輸速率。定位時間尋道時間 移動磁臂到所要柱面所需時間。磁臂只能前後移動。2.旋轉等待時間 等待所要的扇區到磁臂下所需要的時間。旋轉移動。乙個邏輯塊號由柱面號,柱面內的磁軌號,磁軌內的扇區號組成。乙個新的磁碟是乙個白板,上面什麼也沒有,先進性低...
磁碟儲存的構造 容量及操作
1.磁碟構造 磁碟由乙個或多個疊放在一起的碟片構成,每個碟片有兩個表面,每個表面由磁軌組成,每個磁軌被劃分為一組扇區,每個扇區包含相等數量的資料位 通常是512位元組 扇區間由間隙分隔開,間隙儲存用來標識扇區的格式化位。碟片中心有乙個可旋轉的主軸,使碟片以固定旋轉速率旋轉。所有碟片表面上到主軸中心的...
Linux儲存管理之管理磁碟
1 ll dev sd 檢視dev下面的所有磁碟 sd是sata介面 hd是ide介面 2 lsblk name maj min rm size ro type mountpoint 裝置名稱 裝置型別 序號 磁碟大小 是否唯讀 磁碟或分割槽 掛載點 1 進入分割槽 fdisk dev 磁碟名 先按...