第六章 裝置管理 輸入輸出系統——I/O系統
- 磁碟效能簡述
首先與格式有關
- 資料的組織和格式
- 碟片、面、磁軌、扇區
- 為方便處理,每條磁軌儲存容量相同,每個磁軌上的每個扇區相當於一個盤塊。磁碟”格式化”的過程就是按規定的格式規劃盤塊。
如溫盤格式:
-
- 每道30個扇區,每扇600個位元組。512位元組用於存放資料,其餘存放控制資訊。
- 識別符號欄位:標識一個扇區的資訊記錄; 1+2+1+1+3 bytes
- 資料欄位:每個扇區存放資料的空間。
資料前後還有若干特定功能位元組。 1+512+2 bytes
與速度有關
- 磁碟型別
- 固定磁頭(每道一磁頭)
- 移動磁頭(每盤一磁頭)
- 訪問時間的計算
- 尋道時間(到磁軌)
- 旋轉延遲(到扇區)
- 傳輸時間
傳輸時間佔總時間的比例最小,磁碟讀寫速度的提高要選擇合適的排程演算法,減少前兩項用時,使所有作業的磁碟處理時間均衡。
2)磁碟排程方法
- 對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。
- 目標:使平均尋道時間最少。
- 演算法:
- FCFS
- 最短尋道時間優先SSTF
- 掃描演算法SCAN(磁碟電梯排程演算法)
- 迴圈掃描演算法CSCAN
- N-Step-SCAN演算法
- FSCAN演算法
FCFS
- 多個程序的磁碟I/O請求構成一個隨機分佈的請求佇列。
- 磁碟I/O執行順序按磁碟請求的先後順序。
最短尋道時間優先SSTF Shortest Seek Time First
- 選擇從當前磁頭位置出發移動最少的磁碟I/O請求
- 使每次磁頭移動時間最少。
- 不一定是最短平均柱面定位時間,但比FIFO演算法有更好的效能。
- 對中間的磁軌有利,但可能會有程序處於飢餓狀態(I/O請求總不被執行)。
設當前在100磁軌上;
程序要求的訪問順序:55,58,39,18,90,160,150,38,184
掃描演算法SCAN(磁碟電梯排程演算法)
- SSTF會導致“飢餓”現象
- 總選擇最近的磁軌訪問,遠磁軌請求的程序會長時間得不到執行。
- 改進:
- 考慮距離的同時,更優先考慮方向
- SCAN演算法
- 規定磁頭移動方向:自裡向外,再自外向裡移動。
- 後續的I/O磁軌請求,哪個在規定方向上距離最近,就先執行哪個。
- 如當前為100,後續要求55,86,95,180,165,105
- 先由內向外:選最近的105執行,再判斷剩餘的,選165,180。
再由外向內:95,86,55
- 迴圈掃描CSCAN
- SCAN的錯過問題:
- 容易錯過與當前磁軌距離近,但方向不一致的磁軌。
- 修改:將SCAN規定的移動方向改為“單向移動”
- 由裡向外後,再由裡向外。
- N-Step-SCAN
- 前述最近尋道演算法共同問題:
- “磁臂粘著”——磁頭靜止在一個磁軌上,導致其它程序無法及時進行磁碟I/O。(因:高密度盤,程序的讀寫可能集中在某一磁軌)
- 如現有一系列請求:
3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3
不管哪種演算法,從3開始向下執行會是
3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….
- 改進:
- 將磁碟請求佇列分成長為N 的子佇列
- 按FCFS選擇子佇列。佇列內又按SCAN演算法。
3 3 5 2 |3 3 3 2| 3 3 2 3| 3 4 4 5| 2 3 ….2 3
-
- 處理子佇列過程中產生的新I/O再依次排佇列。
- N=1時,就是FCFS,N很大時就是SCAN。
- F-SCAN
- N-Step-SCAN的簡化:
- 請求佇列只分為兩個子佇列
- 當前一個佇列,按SCAN演算法執行;
- 掃描期間新生成的組成一個佇列,等待被掃描。
- 假設一個活動頭磁碟有200道,編號從0-199。當前磁頭正在155道上服務,並且在此之前完成的是173道的訪盤請求。
現有如下訪盤請求序列(磁碟號):75,168,81,138,87,143,187,129,198,44。試給出採用下列演算法後磁頭移動的順序和移動總量(總磁軌數)。
1.最短尋道時間優先(SSTF)磁碟排程演算法。
2.掃描法(SCAN)磁碟排程演算法(假設沿磁頭移動方向不再有訪問請求時, 磁頭就沿相反方向移動。 44到0磁軌的移動忽略不計)
答:1.SSTF磁頭移動順序:
155,143,138,129,168,187,198,87,81,75,44
三段(155~129,129~198,198~44)
移動總量=155-129+198-129+198-44=249
2.SCAN:
155,143,138,129,87,81,75,44,168,187,198
兩段(155~44,44~198)
移動總量=155-44+198-44=265
- (8分)若干個等待訪問磁碟者依次要訪問的柱面為20,44,40,4,80,12,76,假設每移動一個柱面需要3毫秒時間,移動臂當前位於40號柱面,請按下列演算法分別計算為完成上述各次訪問總共花費的尋找時間。
(1)先來先服務演算法
(2)最短尋找時間優先演算法。
Fcfs: 40-20+44-20+44-4+80-4+80-12+76-12=292
Sstf: 40,44,20,12,4,76,80
44-10+44-4+80-4=150
練習
- 虛擬裝置是指:
通過虛擬技術將一臺獨佔裝置改造成若干臺邏輯裝置,供若干個使用者程序同時使用。
- 按資訊交換單位分類,可將裝置分為:
塊裝置和字元裝置。
- 通道是:
一種負責I/O的處理機。
- 位元組多路通道主要用作:
連線大量的低速I/O裝置。
- 從資源分配的角度看,作業系統將外部裝置分為:
獨佔型裝置、共享型裝置、虛擬裝置。
- 根據資訊交換方式的不同,可以將通道分為:
位元組多路通道、資料選擇通道、資料多路通道。
- 裝置獨佔性是指:
應用程式獨立於具體使用的物理裝置。
- 緩衝技術中的緩衝池在:
主存中。
- 進行裝置分配時所需要的資料表格主要有:
裝置控制表、裝置控制器控制表、通道控制表和系統裝置表。
- 如果有多箇中斷同時發生,系統將根據中斷優先順序響應優先順序最高的中斷請求。若要調整中斷事件的響應次序,可以利用:
中斷遮蔽。
- 在作業系統中,一種用空間換取時間的資源轉換技術是:
Spooling。
- 大多數低速裝置都屬於:
獨享裝置。
- 為了實現CPU與外設的並行工作,系統引入了:
中斷和通道硬體機制。
- 在作業系統中,使用者在使用I/O裝置時,通常採用:
邏輯裝置名。
- Spooling系統是由:
磁碟中的輸入井和輸出井、記憶體中的輸入緩衝區和輸出緩衝區以及輸入程序和輸出程序組成。
- 引起中斷髮生的事件稱為:
中斷源。
- 裝置與記憶體之間的傳輸方式有:
程式直接控制方式、中斷控制方式、通道控制方式和DMA控制方式,其中通道方式佔用CPU時間最短。
- 裝置分配中的安全性是指:
裝置分配應保證不會引起程序死鎖。
- Spooling技術是指:
在共享裝置上模擬獨佔裝置。由預輸入程式將作業執行中需訪問的資料預先讀入到輸入井中,緩輸出程式則負責將輸出井中的資訊在輸出裝置上輸出。
- 發生中斷時,剛執行完的那條指令所在的單元號稱為:
斷點,斷點的邏輯後繼指令的單元號稱為:恢復點。
- 如何將獨佔型輸入裝置改造成可共享使用的虛擬裝置?
- 為什麼要設定記憶體I/O緩衝區?通常有哪幾類緩衝區?
- 什麼是裝置驅動程式?其功能是什麼?
- 在裝置管理中,何為裝置獨立性?如何實現裝置獨立性?
- 試給出常用的I/O排程演算法。
- 為什麼要引入Spooling系統?Spooling系統可帶來哪些好處?
- DMA控制方式與通道控制方式有什麼不同?
- 裝置分配時為什麼要考慮安全性和裝置的無關性?
訪問磁碟過程
- 對磁碟的訪問總是由缺頁引起的:
- CPU給出地址,需要訪問某儲存單元;
- 並行進行TLB查詢和cache查詢;
- TLB查詢後申明沒有找到;
- 停止並行查詢,並通知作業系統處理;
- 作業系統檢查頁表,發現該頁不在記憶體中,需要從硬碟調入。應該如何進行呢?
- 作業系統從主存中選擇一頁準備換出,為調入的頁安排存放空間;
- 若被換出的頁是“髒”頁,需要將其寫回磁碟儲存;
- 作業系統申請I/O匯流排;
- 獲得批准後,傳送寫命令給I/O 裝置(磁碟)。 緊跟著傳送需要寫回的頁的全部資料。
- I/O控制器發現發給自己的寫命令 ,加入到握手協議,並接受資料。
- 根據資料要寫入的地址,讀/寫頭移動到正確的柱面,同時,將資料接收到緩衝區。
- 尋道結束後,等待相應的扇區旋轉到磁頭下面,將資料寫入扇區中。
- 在寫入資料間隙,計算校驗碼並寫入扇區中。
- 下一步,作業系統繼續申請匯流排(如果還保持匯流排控制權,則不必申請)。
- 得到授權後,向磁碟發出讀命令。
- 然後,磁碟識別地址,並轉換為相應的地址段。
- 尋道,將讀/寫頭移動到指定位置。
- 從指定扇區中讀去資料,並進行校驗。
- 磁碟申請I/O匯流排。
- 得到授權後,將資料通過匯流排送到記憶體。