系統設計硬核知識(4)——操作系統的設備管理

在計算機系統中,除了處理器和內存之外,其他的大部分硬設備稱為外部設備。它包括輸入/輸出設備,輔存設備及終端設備等。這些設備種類繁多,特性各異,操作方式的差異很大,從而使操作系統的設備管理變得十分繁雜。

設備管理程序一般要提供下述功能:

  1. 提供和進程管理系統的接口,當進程要求設備資源時,該接口將進程要求轉達給設備管理程序 。
  2. 進行設備分配。按照設備類型和相應的分配算法把設備和其他有關的硬件分配給請求該設備的進程,並把未分配到所請求設備或其他有關硬件的進程放入等待隊列 。
  3. 實現設備和設備 、 設備和 CPU 等之間的並行操作。
  4. 進行緩衝區管理。主要減少外部設備和內存與 CPU 之間的數據速度不匹配的問題,系統中一般設有緩衝區 ( 器 ) 來暫放數據。設備管理程序負責進行緩衝區分配 、 釋放及有關的管理工作 。

1 數據傳輸控制方式

設備管理的主要任務之一是控制設備和內存或 CPU 之間的數據傳送。

選擇和衡量控制方式的原則如下: (1)數據傳送速度足夠高,能滿足用戶的需要但又不丟失數據。 (2)系統開銷小,所需的處理控制程序少。 (3)能充分發揮硬件資源的能力,使得 I/O 設備儘量處於使用狀態中,而 CPU 等待時間少。

外圍設備和內存之間常用的數據傳送控制方式:

(1)程序控制方式。處理器啟動數據傳輸,然後等設備完成。此方式不能實現併發。 (2)中斷方式。中斷方式的數據傳輸過程是這樣的,進程啟動數據傳輸(如讀)後,該進程放棄處理器,當數據傳輸完成,設備控制器產生中斷請求,中斷處理程序對數據傳輸工作處理之後,讓相應進程成為就緒狀態。以後,該進程就可以得到所需要的數據。 (3)直接存儲訪問(Direct Memory Access, DMA)方式。指外部設備和內存之間開闢直接的數據交換通路。除了控制狀態寄存器和數據緩衝寄存器外, DMA 控制器中還包括傳輸字節計數器、內存地址寄存器等。 DMA 方式採用竊取(或挪用)處理器的工作週期和控制總線而實現輔助存儲器和內存之間的數據交換。有的 DMA 方式也採用總線浮起方式傳輸 大批量數據。 (4)通道方式。通道又稱為輸入/輸出處理器(Input/Output Processor, IOP),可以獨立完成系統交付的輸入/輸出任務,通過執行自身的輸入/輸出專用程序(稱通道程序)進行內存和外設之間的數據傳輸。主要有 3 種通道:字節多路通道、選擇通道和成組多路通道。 (5)輸入輸出處理機。輸入輸出處理機也稱為外圍處理機,它是一個專用處理機,也可以是一個通用的處理機,具有豐富的指令系統和完善的中斷系統。專用於大型 、 高效的計算機系統處理外圍設備的輸入輸出,並利用共享存儲器或其他共享手段與主機交換信息。從而使大型 、 高效的計算機系統更加高效地工作。與通道相比,輸入輸出處理機具有比較豐富的指令系統,結構接近於一般的處理機,有自己的局部存儲器。

2 磁盤調度算法

訪問磁盤的時間由3部分構成,它們是尋道 ( 査找數據所在的磁道 ) 時間 、 等待 ( 旋轉等待扇區 ) 時間和數據傳輸時間,其中尋道時間 ( 査找時間 ) 是決定因素。

( 1 ) FCFS (first come first service)算法 : 有些文獻稱為 FIFO 算法 。FCFS 是一種最簡單的磁盤調度算法,按先來先服務的次序,未作優化。這種算法的優點是公平 、 簡單,且每個進程的請求都能依次得到處理,不會出現某一進程的請求長期得不到滿足的情況。此算法未對尋道進行優化,致使平均尋道時間可能較長。

( 2 ) SSTF ( ShortestSeekTimeFirst,最短尋道時間優先 ) 算法 : 選擇這樣的進程,其要求訪問的磁道距當前磁頭所在的磁道距離最近,以使每次尋道的時間最短 。FCFS 會引起讀寫頭在盤面上的大範圍移動, SSTF 査找距離磁頭最短 ( 也就是查找時間最短 ) 的請求作為下一次服務的對象。 SSTF 査找模式有高度局部化的傾向,會推遲一些請求的服務,甚至引起無限拖延 ( 這種現象稱為 “ 飢餓” )

( 3 ) SCAN ( 電梯 ) 算法 : 不僅考慮到欲訪問的磁道與當前磁道的距離,而且優先考慮的是磁頭的當前移動方向,是在磁頭前進方向上的最短查找時間優先算法,它排除了磁頭在盤面局部位置上的往復移動 。SCAN 算法在很大程度上消除了 SSTF 算法的不公平性,但仍有利於對中間磁道的請求 。SCAN 算法的缺陷是當磁頭剛由裡向外移動過某一磁道時,恰有一進程請求訪向此磁道,這時進程必須等待,待磁頭由裡向外,然後再從外向裡掃描完所有要訪問的磁道後,才處理該進程的請求,致使該進程的請求被嚴重地推遲。

(4 ) N - SCAN ( N 步 SCAN ) 算法 : 這是對 SCAN 算法的改良,磁頭的移動與 SCAN 算法是一樣的,不同的是掃描期間只對那些在掃描開始前已等待服務的請求提供服務。在服務期間,新到達的請求即使在磁頭前進方向上也得不到服務,直到下一個新掃描週期開始。 N - SCAN 算法的實質是把 FCFS 和 SCAN 的優點結合起來,以便取得較好的性能。如果新到達的請求按優化次序排列,則下一個掃描週期必然花費最少的磁頭移動時間。

(5 ) C- SCAN (循環掃描 ) 算法 : 這是對 SCAN 算法的另一種改良,是單向服務的 N 步 SCAN 算法,C- SCAN 算法規定磁頭單向移動。C- SCAN 算法徹底消除了對兩端磁道請求的不公平。

3 虛設備與 SPOOLING 技術

採用假脫機技術,可以將低速的獨佔設備改造成一種可共享的設備,而且一臺物理設備可以對應若干臺虛擬的同類設備。假脫機( Simultaneous Peripheral Operation On Line,SPOOLING)的意思是外部設備同時聯機操作,又稱為假脫機輸入/輸出操作,採用一組程序或進程模擬一臺輸入/輸出處理器。

SPOOLING 系統的組成如圖 1 所示。該技術利用了專門的外圍控制機將低速 I/O 設備上的數據傳送到高速設備上,或者相反。但是當引入多道程序後,完全可以利用其中的一道程序來模擬脫機輸入時的外圍控制機的功能,把低速的 I/O 設備上的數據傳送到高速磁盤上;再利用另一道程序來模擬脫機輸出時外圍控制機的功能,把高速磁盤上的數據傳送到低速的 I/O 設備上。這樣便可以在主機的控制下實現脫機輸入、輸出的功能。此時的外圍操作與 CPU 對數據的處理同時進行。

系統設計硬核知識(4)——操作系統的設備管理

從圖 1 可以看出, Spooling 系統主要包括以下3個部分 :

  1. 輸入井和輸出井 : 這是在磁盤上開闢出來的兩個存儲區域。輸入井模擬脫機輸入時的磁盤,用於存放 IO 設備輸入的數據 : 輸出井模擬脫機輸出時的磁盤,用於存放用戶程序的輸出數據。因此, Spooling 系統必須有高速 、 大容量 、 隨機存取的外存的支持。
  2. 輸入緩衝區和輸出緩衝區 : 這是在內存中開闢的兩個緩衝區。輸入緩衝區用於暫存有輸入設備送來的數據,以後再傳送到輸出井。輸出緩衝區用於暫存從輸出井送來的數據,以後再傳送到輸出設備 。
  3. 輸入進程和輸出進程 : 輸入進程模擬脫機輸入時的外圍控制機,將用戶要求的數據有輸入設備到輸入緩衝區,再送到輸入井。當 CPU 需要輸入設備時,直接從輸入井讀入內存。輸出進程模擬脫機輸出時的外圍控制機,把用戶要求輸入的數據,先從內存送到輸出井,待輸出設備空閒時,再將輸出井中的數據,經過輸出緩衝區送到輸出設備上 。

採用假脫機技術,可以將低速的獨佔設備改造成一種可共享的設備,而且一臺物理設備可以對應若干臺虛擬的同類設備。 SPOOLING 系統必須有高速、大容量並且可隨機存取的外存(例如,磁盤或磁鼓)支持。

在現代計算機系統中,還可以用一臺設備來模擬自身。例如,常見 的多窗口技術,即在一個終端上開多個窗口,每個窗口可以獨立地進行顯示,以監視用戶不同任務的執行情況。這是通過縮小顯示區域、平鋪或重疊顯示來模擬多個顯示器的。


作者:deniro
鏈接:https://www.jianshu.com/p/c3cfbe59babf
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。


分享到:


相關文章: