文章目錄
- 程式IO方式
- 中斷驅動IO控制方式
- 直接儲存空間訪問DMA IO控制方式
- IO通道控制方式
- 裝置獨立性的好處
- 裝置獨立性軟體
- 邏輯裝置名到物理裝置名稱映射的實現
- Spooling系統的組成
- Spooling系統的特點
- 先來先服務FCFS
- 最短尋道時間優先
- 掃描演算法
- 迴圈掃描演算法
- 並行交叉存取
- RAID優點:
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的幹預而引入了直接儲存空間訪問方式。
該方式的特點:
- 資料轉送的基本單位是資料區塊
- 所傳送的資料是從裝置直接送入記憶體,或者相反。
- 僅在傳送一個或多個資料區塊的開始或結束時,才需要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 效能價格比高