13.大容量存储结构(磁盘管理)
大容量存儲結構
本章討論文件系統的最底層:次級存儲(外存)結構。
首先是大容量存儲結構概述,不做過多介紹。
其次是磁盤的各種調度算法。
最后是磁盤管理。
1 大容量存儲結構概述
磁盤
固態磁盤(SSD)、磁帶。
2 磁盤調度算法
對于磁盤驅動器,我們需要它又較快的訪問速度和較寬的磁盤帶寬。
對于磁盤,訪問時間包括尋道時間和旋轉延遲。
磁盤帶寬是傳輸字節的總數除以從服務請求開始到最后傳遞結束時的總時間。
每當進程需要進行磁盤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是常見的。
3 磁盤管理
(1)磁盤格式化
一個新的磁盤只是一個含有磁性記錄材料的空白盤。在磁盤能存儲數據之前,它必須分成扇區以便磁盤控制器能進行讀和寫操作,這個過程稱為低級格式化(物理分區)。
低級格式化為磁盤的每個扇區釆用特別的數據結構。每個扇區的數據結構通常由頭、數據區域(通常為512B大小)和尾部組成。頭部和尾部包含了一些磁盤控制器所使用的信息。
為了使用磁盤存儲文件,操作系統還需要將自己的數據結構記錄在磁盤上:
第一步:將磁盤分為由一個或多個柱面組成的分區(即我們熟悉的C盤、D盤等形式的分區);
第二步:對物理分區進行邏輯格式化(創建文件系統),操作系統將初始的文件系統數據結構存儲到磁盤上,這些數據結構包括空閑和已分配的空間以及一個初始為空的目錄。
(2)引導塊
計算機啟動時需要運行一個初始化程序(自舉程序),它初始化CPU、寄存器、設備控制器和內存等,接著啟動操作系統。為此,該自舉程序應找到磁盤上的操作系統內核,裝入內存,并轉到起始地址,從而開始操作系統的運行。
(關于計算機的啟動過程,請看《計算機是如何啟動的?》)
自舉程序通常保存在ROM中,為了避免改變自舉代碼需要改變ROM硬件的問題,故只在ROM中保留很小的自舉裝入程序,將完整功能的自舉程序保存在磁盤的啟動塊上,啟動塊位于磁盤的固定位。擁有啟動分區的磁盤稱為啟動磁盤或者系統磁盤。
(3)壞塊
由于磁盤有移動部件且容錯能力弱,所以容易導致一個或多個扇區損壞。部分磁盤甚至從出廠時就有壞扇區。根據所使用的磁盤和控制器,對這些塊有多種處理方式。
對于簡單磁盤,如電子集成驅動器(IDE)。壞扇區可手工處理,如MS-DOS的Format 命令執行邏輯格式化時便會掃描磁盤以檢查壞扇區。壞扇區在FAT表上會標明,因此程序不會使用。
對于復雜的磁盤,如小型計算機系統接口(SCSI),其控制器維護一個磁盤壞塊鏈表。該鏈表在出廠前進行低級格式化時就初始化了,并在磁盤的整個使用過程中不斷更新。低級格式化將一些塊保留作為備用,對操作系統透明。控制器可以用備用塊來邏輯地替代壞塊,這種方案稱為扇區備用。
參考:http://c.biancheng.net/cpp/html/2628.html
總結
以上是生活随笔為你收集整理的13.大容量存储结构(磁盘管理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈工大软件构造第一章总结
- 下一篇: java生成1到10的随机数_用java