磁盤及設備
一、磁盤的結構
磁盤的表面由一些磁性物質組成,可以用這些磁性物質來記錄一些二進制數據。
磁盤的表面被劃分爲了一個個磁道,一個小圈就是一個磁道。
一個磁道又被劃分成了一個個扇區,每個扇區就是一個個磁盤塊,各個扇區存放的數據量相同。
最內側的磁道上的扇區面積最小,因此數據密度最大。
1、如何在磁盤中讀/寫數據
需要把磁頭移動到想要讀/寫扇區所在的磁道,磁盤會轉起來,讓目標扇區從磁頭下面劃過,才能完成對扇區的讀/寫操作。
一個磁盤有很多盤面,每個盤面有一個磁頭,這些磁頭由磁頭臂 統一帶動往裏或者往外移動。
可以使用(柱面號,盤面號,扇區號)來定位任意一個“磁盤塊”
2、磁盤的分類
磁頭是否可以移動分爲:
- 活動頭磁盤
- 固定頭磁盤
盤片是否可以更換,劃分爲:
- 可更換的稱爲可還盤磁盤
- 固定盤磁盤
總結
二、磁盤調度算法
1、一次磁盤讀/寫需要的時間
尋找時間(尋道時間):在讀/寫數據前,將磁頭移動到指定磁道所花的時間,時間包括
- 1、啓動刺頭臂所需的時間,假設耗時爲s
- 2、移動磁頭也是需要花時間的,假設磁頭是勻速移動的,每跨越一個磁道耗時爲m,總共需要跨越n條磁道,
尋道時間T = s+m*n;
延遲時間TR:通過旋轉磁盤,使得磁頭定位到目標扇區所需要的時間,設磁盤轉速爲r,則平均所需的延遲時間TR = (1/2)*(1/r) = 1/2r。
1/r就是轉一圈所需的時間,找到目標扇區平均需要轉半圈,因此再乘以1/2.
所以買磁盤的時候要看轉速,速度越快,讀寫越快
傳輸時間:從磁盤讀出或者向磁盤寫入數據所需的時間,假設磁盤轉速爲r,此次讀/寫的字節數爲b,每個磁道上的字節數爲N。則:傳輸時間 = (1/r)*(b/N)=b/(rN)
每個磁道可以存N字節數據,因此b字節的數據需要b/N個磁道才能存儲,而讀寫一個磁道所需的時間剛好又是一轉所需的時間1/r。
延遲時間和傳輸時間都與磁盤轉速有關,而轉速是硬件的固有熟悉,因此操作系統無法優化延遲時間和傳輸時間。
2、先來先服務算法
根據進程請求訪問磁盤的先後順序進行調度。
假設磁頭的初始位置在100磁道,有多個進程新後陸續在請求訪問55、58、39、18、90、160、150、38、184磁道
通過計算得到磁頭總共移動了45+3+19+21+72+70+10+112+146=498個磁道
3、最短尋找時間優先(SSTF)
SSTF算法會優先處理的磁道是當前磁頭最近的磁道,可以保證每次的尋道時間最短,但是不能保證總的尋道時間最短。(其實就是貪心,只能保證眼前最優,但未必整體最優)。
假設磁頭的初始位置在100磁道,有多個進程新後陸續在請求訪問55、58、39、18、90、160、150、38、184磁道
總共移動了248個磁道
4、掃描算法
只有磁頭移動到最外側磁道才能往內移動,移動到最內側磁道才能往外側移動。
假設磁頭的初始位置在100磁道,有多個進程新後陸續在請求訪問55、58、39、18、90、160、150、38、184磁道
總共移動了282個磁道
5、LOOK調度算法
如果在磁頭移動方向上沒有其他請求,可以立即改變磁頭移動方向。
假設磁頭的初始位置在100磁道,有多個進程新後陸續在請求訪問55、58、39、18、90、160、150、38、184磁道
6、循環掃描算法(c-scan)
規定磁頭朝某個特定方向移動的時候才處理磁道上面的請求,而返回的時候直接快速到起始端而不處理任何請求。
假設磁頭的初始位置在100磁道,有多個進程新後陸續在請求訪問55、58、39、18、90、160、150、38、184磁道
總共移動(200-100+200+90-0)=390個磁道
7、C-Look調度算法
如果磁頭移動方向上已經沒有磁到訪問請求了,就可以立即讓磁頭返回,並且只需返回到有磁道訪問請求的位置即可
總結
三、減少磁盤延遲時間的方法
磁盤讀入一個扇區數據之後需要一小段時間進行處理,如果邏輯上相鄰的扇區在物理上也相鄰,則讀入幾個連續的邏輯扇區,可能需要很長的“延遲時間”
可以使用==交替編號(使邏輯上相鄰的在物理上有一定的間隔)==的策略,即讓邏輯上相鄰的扇區在物理上有一定的間隔,可以使讀取連續的邏輯扇區所需的時間延遲更小。
爲什麼柱面號要在盤面號之前?
- 因爲讀取地址連續的磁盤塊的時候,使用(柱面號,盤面號,扇區號)的地址結構可以減少磁頭移動消耗的時間,因爲如果柱面號相同,扇區號相同,那麼只需要激活不同盤面的磁頭即可。
總結
四、磁盤管理
1、磁盤初始化
- 1、低級格式化(物理格式化),將磁盤的各個磁道劃分爲扇區,一個扇區可以分爲頭、數據區域、尾三個部分組成,管理扇區所需要的各種數據結構一般存放在頭、尾兩個部分,包括扇區校驗碼等,校驗碼用於校驗扇區中的數據是否發生了錯誤。
- 2、將磁盤進行分區,每個分區由若干柱面組成(即分爲我們熟悉的C、D、E盤)
- 3、進行邏輯格式化,創建文件系統,包括創建文件系統根目錄、初始化存儲空間管理所用的數據結構(如位示圖、空閒分區表)
-4、 引導塊,計算機開機的時候需要進行一系列初始化的工作,這些初始化工作是通過執行初始化程序(自舉程序)完成的。
初始化程序可以放在ROM(只讀存儲器)中,ROM中的數據在出廠的時候就寫入了,並且以後不能再修改。
2、壞塊的管理
所謂壞塊就是壞了、無法正常使用的扇區就是“壞塊”,這屬於硬件故障,操作系統是無法修復的,應該將壞塊標記出來,以免錯誤使用到它。
對於簡單的磁盤,可以在邏輯格式化的時候(建立文件系統的時候)對整個磁盤進行壞塊檢查,標明哪些扇區是壞扇區。比如:在FAT表上標明。
對於複雜的磁盤,磁盤控制器會維護一個壞塊鏈表。
在磁盤出廠前進行低級格式化時就將壞塊鏈進行初始化。
會保留一些“備用“扇區”,用於替換壞塊,這種方案稱爲扇區備用。
總結
設備
1、I/O設備的概念和分類
什麼是IO設備
”IO“設備就是“輸入/輸出”
IO設備就是可以將數據輸入(如鼠標、鍵盤就是典型的輸入型設備)到計算機或者接收計算機輸出數據的外部設備(顯示器-輸出型設備),屬於計算機的硬件部件。
UNIX系統將外部設備抽象成一種特殊的文件,用戶可以使用與文件操作相同的方式對外部設備進行操作。
- write操作:向外部設備寫出數據
- read操作:從外部設備讀入數據
I/O設備的分類-按使用特性
- 1、人機交互類外部設備
- 2、存儲設備
- 3、網絡通信設備
IO設備的分類-按傳輸速率分類
- 1、低速設備
- 2、中速設備
- 3、高速設備
IO設備的分類-按信息交換的單位分類
- 塊設備(傳輸速率較高,可尋址,即對它可隨機的讀/寫任一塊。)
- 字符設備
總結
IO控制器
IO設備的組成:
- 機械部件
- 電子部件(IO控制器、設備控制器)
IO設備的機械部件主要用來執行具體的IO操作
比如我們看得見摸得着的鼠標/鍵盤的按鈕,顯示屏的LED,移動硬盤的磁臂、磁盤盤面。
IO設備的電子部件通常是一塊插入主板擴充槽的印刷電路板。
IO設備的電子部件
CPU無法直接控制IO設備的機械部件,因此IO設備還需要一個電子部件作爲CPU和IO設備機械部件之間的中介,用於實現CPU隊設備的控制。
這個電子部件就是IO控制器,又稱爲設備控制器,CPU可以控制IO控制器,又由IO控制器來控制設備的機械部件。
IO控制器的功能:
-
接受和識別CPU發出的命令
如CPU發來的read/write命令,IO控制器中會有相應的控制寄存器來存放命令和參數。 -
向CPU報告設備的狀態
-
數據交換
-
地址識別
IO控制器的組成
- CPU與控制器之間的接口
- IO邏輯
- 控制器與設備的藉口
總結
IO控制方式
- 1、程序直接控制方式
- 2、中斷驅動方式
- 3、DMA方式
- 4、通道控制方式
學習的時候需要考慮的問題有:
- 1、完成一次讀/寫操作的流程
- 2、CPU干預的頻率
- 3、數據傳送的單位
- 4、數據的流向
- 5、主要缺點和主要優點
1、程序直接控制方式
- 完成一次讀/寫操作的流程
- CPU干預很頻繁,IO操作開始之前,完成之後需要CPU介入,並且在等待IO完成的過程中CPU需要不斷的輪詢檢查。
- 數據傳送的單位,每次讀/寫是一個字
- 數據流向
讀操作(數據輸入):IO設備-》CPU寄存器-〉內存
寫操作(數據輸出):內存-》CPU寄存器-〉IO設備 - 優點:實現簡單,
- 缺點:CPU和IO設備只能串行工作,CPU需要一直輪詢檢查,長期處於忙等狀態,CPU利用率低。
完成一次讀/寫操作的流程
2、中斷驅動方式
引入中斷機制,由於IO設備速度很慢,因此在CPU發出讀/寫命令之後,可將等待IO的進程阻塞,先切換到別的進行運行,當IO結束之後,控制器會向CPU發出一箇中斷信號,CPU檢測到中斷信號後,會保存當前進程的運行環境信息,轉去執行中斷處理程序處理該中斷。
3、DMA方式(傳送單位是塊)
之前的讀/寫操作都必須經過CPU,DMA不再經過CPU
- 1、數據的傳送單位是“塊”,不再是一個字、一個字傳送
- 2、數據的流向是從設備直接放入內存,或者從內存直接到設備,不需要CPU作爲”快遞小哥“
4、通道控制方式
通道:一種硬件,可以理解爲弱雞版的CPU,通道可以識別並執行一系列通道指令