設備管理

IO控制方式

在整個IO控制方式的發展過程中,始終貫穿着這樣一條宗旨:即儘量減少主機對IO控制的干預,把主機從繁雜的IO控制事務中解脫出來,以便更多地去完成數據處理任務。

程序IO方式

處理機對IO採用程序IO方式,即採用“忙――等待“方式,在處理機向控制器發出一條IO指令啓動輸入設備輸入數據時,要同時把狀態寄存器中的忙閒標誌置爲1.然後便不斷的循環測試,直到標誌爲0.

當標誌爲1時,表示輸入機未輸完一個字符;

當標誌爲0時,表示輸入機已經將輸入數據送往控制器的數據寄存器中。

在這種方式中,由於CPU高速性和IO設備的低速性,致使CPU的絕大部分時間都處於忙等狀態。造成了CPU極大的浪費。

如果當一個字符輸入完後,由IO設備向CPU報告,這樣就可以不讓CPU忙等了,於是中斷處理方式產生了

中斷驅動IO控制方式

即當某進程要啓動某個IO設備工作時,便由CPU向相應的設備控制器發出一條IO命令,然後立即返回繼續執行原來的任務。設備控制器於是按照該命令的要求去控制指定IO設備。此時,CPU與IO設備並行操作。一旦數據進入數據寄存器,控制器便通過控制線向CPU發送一中斷信息,由CPU檢查輸入過程中是否有錯,若無錯,便向控制器發送取走數據的信號,然後再通過控制器及數據線,將數據寫入內存指定單元中。

直接存儲器訪問DMA IO控制方式

雖然中斷驅動IO比程序IO方式更有效,但注意到,它仍是以字(節)爲單位進行IO的,每當完成一個字(節)的IO時,控制器便要向CPU請求一次中斷。採用中斷驅動IO方式時的CPU,是以字(節)爲單位進行干預的。如果將這種方式用於塊設備的IO中,顯然是極其低效的。爲了進一步減少CPU對IO的干預而引入了直接存儲器訪問方式。

該方式的特點:

  1. 數據傳輸的基本單位是數據塊
  2. 所傳送的數據是從設備直接送入內存,或者相反。
  3. 僅在傳送一個或多個數據塊的開始或結束時,才需要CPU干預,整塊數據的傳送是在控制器的控制下。

可以看出:DMA方式較之中斷驅動方式,又是成百倍的減少了CPU對IO的干預,進一步提高了CPU與IO設備的並行操作程度。

 

DMA控制器由三部分組成:

l  主機與DMA控制器的接口

l  DMA控制器與塊設備的接口

l  IO控制邏輯

四類寄存器:

l  命令狀態寄存器:用於接收從CPU發來的IO命令或有關控制信息,或設備的狀態

l  內存地址寄存器MAR。在輸入時,它存放把數據從設備傳送起始目標地址;在輸出時,它存放由內存到設備的內存源地址。

l  數據寄存器DR:用於暫存從設備到內存,或從內存到設備的數據。

l  數據計數器DC:存放本次CPU要讀或寫的字(節)數。

IO通道控制方式

雖然DMA可以一次讀一個塊,但是當我們要讀取多個塊時,還是要多次中斷。

IO通道方式是DMA方式的發展,它可進一步減少CPU干預,即把對一個數據塊的讀寫爲單位的干預,減少爲對一組數據塊的讀寫及有關的控制和管理爲單位。從而提高了整個系統的資源利用率。

當CPU要完成一組相關的讀寫操作及有關控制時,只要向IO通道發送一條IO指令,以給出其所要執行的通道程序的首址和要訪問的IO設備,通道接到該指令後,通過執行通道程序便可完成CPU指定的IO任務。

IO通道是一種特殊的處理器,它具有執行IO指令的能力,並通過執行通道程序來控制IO操作。但IO通道以與一般的處理機不同,主要表現在:

指令類型單一,主要是IO指令。

通道沒有自己的內存,所執行的通道程序是放在主機內存中的,也就是說IO通道與CPU共享內存

設備獨立性

爲了提高OS的可適應性和可擴展性,在現代OS中都採用了設備獨立性,也就是設備無關性。其基本的含義是:應用程序獨立於具體使用的物理設備。爲了實現設備的獨立性而引入了邏輯設備和物理設備這兩個概念。在應用程序中,使用邏輯設備名稱來請求使用某類設備;而系統在實際的執行時,還必須使用物理設備名稱。因此係統還須具有將邏輯設備名稱轉換爲物理設備名稱的功能。這個東西就是邏輯設備表。

設備獨立性的好處

l  設備分配時的靈活性:當應用程序以物理設備名稱來請求使用某一個設備時,如果該設備已經分配給其他設備或正在檢修,而此時儘管還有幾臺其它的設備下在空閒,該進程卻仍阻塞。如果採用邏輯名來請求,就可以把其他一臺設備分配給它。

l  易於實現IO重定向:是指用於IO操作的設備可以更換,而不必改變應用程序。如果一個程序的輸出是屏幕,而現在要輸出到文件,只需要把IO重定向的數據結構即邏輯設備表中的顯示終端改爲文件即可。

設備獨立性軟件

驅動程序是一個與硬件地址緊密相關的軟件,爲了實現設備獨立性,還要在驅動程序上加上一層軟件,稱爲設備獨立性軟件。具體操作有:

l  對獨立設備的分配與回收

l  將邏輯設備名映射爲物理設備名,進一步可以找到相應物理設備的驅動程序

l  對設備保護,禁止用戶直接訪問設備

l  緩衝管理

l  差錯控制

l  向用戶層軟件提供統一接口,比如read,write

邏輯設備名到物理設備名映射的實現

採用邏輯設備表

 

 

Spooling技術

通過Spooling技術可以將一臺物理IO設備虛擬爲多臺邏輯IO設備,同樣允許多個用戶共享一臺物理IO設備。

爲了緩和CPU的高速性與IO設備的低速間的矛盾而引入了脫機輸入、脫機輸出技術。該技術是利用專門的外圍控制機,將低速IO設備上的數據傳送到高速磁盤上;或者相反。事實上,當系統中引入了多道程序技術後,完全可以利用其中的一道程序,來模擬脫機輸入時的外圍控制機功能,把低速IO設備上的數據傳送到高速磁盤上;再用另一道程序來模擬接機輸出時外圍控制機的功能,把數據從磁盤傳送到低速輸出設備上。這樣,便可在主機的直接控制下,實現脫機輸入,輸出功能。此時的外圍操作與CPU對數據的處理同時進行,,我們把這處在聯機情況下實現的同時外圍操作稱爲SPOOLing或稱爲假脫機操作。

Spooling系統的組成

 

輸入井和輸出井

磁盤上開闢的兩大存儲空間。

l  輸入井是模擬脫機輸入時的磁盤設備,用於暫存IO設備輸入的數據;

l  輸出井是模擬脫機輸出時的磁盤,用於暫存用戶程序的輸出程序。

輸入緩衝區和輸出緩衝區

爲了緩和CPU和磁盤之間速度不匹配的矛盾,在內存中要開闢兩個緩衝區:

l  輸入緩衝區:暫存由輸入設備送來的數據,以後再傳送到輸入井。

l  輸出緩衝區:暫存從輸出井善惡的數據,以後再傳送給輸出設備。

共享打印機

當用戶進程請求打印時,Spooling系統同意爲它打印輸出,但並不是真正立即把打印機分配給該用戶進程,而只爲它做兩件事:

1)  由輸出進程在輸出井中爲之申請一個空閒磁盤區,並將要打印的數據送入其中

2)  輸出進程再爲用戶進程申請一張空白的用戶請求打印表,並將用戶的打印要求填入其中,再將該表掛到請求打印機隊列上。如果還有進程要求打印輸出,系統仍可接受該請求。

3)  如果打印機空閒,輸出進程將從請求打印隊列的隊首取出一張請求打印表,根據表中的要求將要打印的數據,從輸出井會傳送到內存緩存區,再由打印機進行打印。打印完後,輸出進程再查看請求打印隊列是否還有打印的請求表。     

Spooling系統的特點

l  提高了IO速度

l  將獨佔設備改造爲共享設備,在此係統中,實際上並沒有爲任何進程分配設備,而只是在輸入井或輸出井中爲進程分配一個存儲和建立一張IO請求表。這樣,便把獨佔的設備改造爲共享設備。

l  實現了虛擬設備功能,宏觀上,雖然是多個進程在同時使用一臺獨佔設備,而對於每一個進程而言,他們都會認爲自己是獨佔了一個設備。當然,該設備只是邏輯上的設備。Spooling系統實現了將獨佔設備變換爲若干臺對應的邏輯設備。

磁盤調度

磁盤是可供多個進程共享的設備,當有多個進程都都要求訪問磁盤時,應該採用一種最佳的調度算法,以使各個進程的平均訪問時間最小。

先來先服務FCFS

最短尋道時間優先

掃描算法

在用最短尋道時間時,會造成“飢餓”現象,因爲只要不斷有新進程的請求送達,且其所要訪問的磁道與磁頭當前所在磁道的距離較近,這種新進程的IO請求必須優先滿足。而掃描算法可以避免。

這個方法又稱爲電梯調度算法。

按一個方向進行運動,當運動到了另一端後,接着返回。

循環掃描算法

         解決的問題:當磁頭剛從裏向外移動而越過了某一磁道時,恰好又有一進程請求訪問此磁道,這時,該進程必須等待,待磁頭繼續從裏向外,然後再從外向裏掃描完所有要訪問的磁道後,才處理該進程的請求,導致該進程的請求被大大推遲。爲了減少這種延遲,循環掃描算法規定磁頭單向移動。

廉價磁盤冗餘陣列RAID

利用一臺磁盤陣列控制器,來統一管理和控制一組磁盤驅動器,組成一個高度可靠的,快速的大容量的磁盤系統。

並行交叉存取

系統將每一盤塊中的數據分爲若干個子盤塊數據,再把每一個子盤塊的數據分別存儲到各個不同的磁盤中的相同位置上。在以後,當要將一個盤塊的數據傳送到內存時,採取並行傳輸方式,將各個盤塊中的子盤塊數據同時向內存中傳輸,從而使傳輸的時間大大減少。

RAID優點:

l  可靠性高

l  磁盤IO速度高

l  性能價格比高

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章