
?I/O系統(tǒng)的組成包括:
需要用于輸入、輸出和存儲信息的設(shè)備;
需要相應(yīng)的設(shè)備控制器;
控制器與CPU連接的高速總線;
有的大中型計算機系統(tǒng),配置I/O通道;
1)I/O設(shè)備的類型
????I/O設(shè)備的類型繁多,從OS的觀點,按其重要的性能指標(biāo)進行分類如下:
按傳輸速率分類:
低速、中速、高速(鍵盤、打印機、磁盤)
使用:存儲設(shè)備、輸入輸出設(shè)備
按信息交換的單位分類:
塊設(shè)備:有結(jié)構(gòu)、速率高、可尋址、DMA方式控制
字符設(shè)備:無結(jié)構(gòu)、速率低、不可尋址、中斷方式控制
按設(shè)備的共享屬性分類:
獨占:打印機
共享:一個時刻上仍然是只被一個進程占用??蓪ぶ?、可隨機訪問的色后備。磁盤。
虛擬:使一臺獨占設(shè)備變換為若干臺邏輯設(shè)備,供給若干用戶“同時使用”。
I/O設(shè)備中的接口
與控制器的接口有三種類型的信號
數(shù)據(jù)信號線(進出數(shù)據(jù)轉(zhuǎn)換、緩沖后傳送)
控制信號線(讀\寫\移動磁頭等控制)
狀態(tài)信號線
2)設(shè)備控制器
設(shè)備并不直接與CPU通信
計算機中的一個實體——“設(shè)備控制器”負(fù)責(zé)控制一個或多個I/O設(shè)備,以實現(xiàn)I/O設(shè)備和計算機之間的數(shù)據(jù)交換。
控制器是CPU與I/O設(shè)備之間的接口,作為中間人接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作,以使處理機脫離繁雜的設(shè)備控制事務(wù)。
常作成接口卡插入計算機
可編址,不同類:控制一個設(shè)備時只有一個地址,若連接多個設(shè)備則含有多個設(shè)備地址;管理的復(fù)雜性因不同設(shè)備而異,分為字符設(shè)備控制器、塊設(shè)備控制器。
①基本功能
1.接收和識別CPU命令(控制寄存器:存放命令和參數(shù))
2.標(biāo)識和報告設(shè)備的狀態(tài)(狀態(tài)寄存器)
3.數(shù)據(jù)交換(數(shù)據(jù)寄存器)
4.地址識別(控制器識別設(shè)備地址、寄存器地址。地址譯碼器)
5.數(shù)據(jù)緩沖(協(xié)調(diào)I/O與CPU的速度差距)
6.差錯控制
②組成
1.設(shè)備控制器與處理機的接口
2.設(shè)備控制器與設(shè)備的接口
3.I/O邏輯
3)I/O通道
①I/O通道設(shè)備的引入
設(shè)備控制器已大大減少CPU對I/O的干預(yù)(如承擔(dān)了選擇設(shè)備,數(shù)據(jù)轉(zhuǎn)換、緩沖等功能)
但當(dāng)主機的外設(shè)很多時,CPU的負(fù)擔(dān)仍然很重。
在CPU和設(shè)備控制器之間增設(shè)一個硬件機構(gòu):“通道”
設(shè)置通道后CPU只需向通道發(fā)送一條I/O指令即可不再干預(yù)后續(xù)操作。
通道形成通道程序,執(zhí)行I/O操作,完成后向CPU發(fā)中斷信號。
主要目的:
建立更獨立的I/O操作,解放CPU。
數(shù)據(jù)傳送的獨立
I/0操作的組織、管理及結(jié)束處理也盡量獨立。
實際上I/O通道是一種特殊的處理機:指令類型單一,只用于I/O操作;通道沒有內(nèi)存,它與CPU共享內(nèi)存
②通道類型
根據(jù)其控制的外圍設(shè)備的不同類型,信息交換方式也可分為以下三種類型:字節(jié)多路通道;數(shù)組選擇通道;數(shù)組多路通道。
中斷機構(gòu)和中斷處理程序
1.中斷簡介
⑴中斷和陷入
中斷:CPU對I/O設(shè)備發(fā)來的中斷信號的一種響應(yīng),中斷是由外部設(shè)備引起的,又稱外中斷。
陷入:由CPU內(nèi)部事件所引起的中斷,通常把這類中斷稱為內(nèi)中斷或陷入(trap)。
中斷和陷入的主要區(qū)別:是信號的來源。

I/O控制方式
程序I/O方式
中斷驅(qū)動I/O方式
直接存儲器訪問DMA(字節(jié)—塊)
I/O通道控制方式(組織傳送的獨立)
宗旨:減少主機對I/O控制的干預(yù),將CPU從繁雜的I/O控制事物中解脫出來。
1)程序I/O方式
cpu對I/O設(shè)備的控制采取程序I/O方式,或稱忙—等待方式
向控制器發(fā)送一條I/O指令;啟動輸入設(shè)備輸入數(shù)據(jù);把狀態(tài)寄存器busy=1。
然后不斷測試標(biāo)志。為1:表示輸入機尚未輸完一個字,CPU繼續(xù)對該標(biāo)志測試;直到為0:數(shù)據(jù)已輸入控制器數(shù)據(jù)寄存器中。
CPU取控制器中的數(shù)據(jù)送入內(nèi)存單元,完成一個字的I/O。
高速CPU空閑等待低速I/O設(shè)備,致使CPU極大浪費。

2)中斷驅(qū)動I/O方式
CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令
然后立即返回繼續(xù)執(zhí)行任務(wù)。
設(shè)備控制器按照命令的要求去控制指定I/O設(shè)備。
這時CPU與I/O設(shè)備并行操作。
I/O設(shè)備輸入數(shù)據(jù)中,無需CPU干預(yù),因而可使CPU與I/O設(shè)備并行工作。從而提高了整個系統(tǒng)的資源利用率及吞吐量。
但cpu真的不需要干預(yù)么?

中斷方式比程序I/O方式更有效
但仍以字(節(jié))為單位進行I/O,每當(dāng)完成一個字(節(jié)),控制器便要請求一次中斷。
CPU雖然可與I/O并行,但效率不高,存在頻繁的中斷干擾。
改進:CPU下指令通知控制器完成一塊數(shù)據(jù)的I/O,控制器完成后才發(fā)中斷,而不是每個字節(jié)都要向CPU發(fā)中斷;多字節(jié)傳輸入內(nèi)存過程不需要CPU搬運,由控制器控制完成(所以稱直接存儲器訪問)——DMA(Direct Memory Access)控制方式引入
3)直接存儲器訪問DMA 方式
①該方式的特點是:
1)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;
2)所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者直接從內(nèi)存進設(shè)備;不需要CPU操作。
3)CPU干預(yù)進一步減少:僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。
???? 可見DMA方式又是成百倍的減少了CPU對I/O的干預(yù),進一步提高了CPU與I/O設(shè)備的并行操作程度。
②DMA控制器的組成
DMA控制器由三部分組成:
1.主機與DMA控制器的接口;
2.DMA控制器與塊設(shè)備的接口;
I/O控制邏輯。

DMA控制器中的寄存器
為實現(xiàn)主機與控制器之間塊數(shù)據(jù)的直接交換,必須設(shè)置如下四類寄存器:
1.數(shù)據(jù)寄存器DR:暫存設(shè)備到內(nèi)存或從內(nèi)存到設(shè)備的數(shù)據(jù)。
2.內(nèi)存地址寄存器MAR:它存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始的目標(biāo)地址或內(nèi)存原地址。
3.數(shù)據(jù)計數(shù)器DC:存放本次CPU要讀或?qū)懙淖郑ü?jié))數(shù)。
4.命令/狀態(tài)寄存器CR:用于接收從CPU發(fā)來的I/O命令或有關(guān)控制和狀態(tài)信息。
③DMA工作過程
CPU先向磁盤控制器發(fā)送一條讀命令。
該命令被送到命令寄存器CR中。
同時發(fā)送數(shù)據(jù)讀入到內(nèi)存的起始地址,該地址被送入MAR中;
要讀數(shù)據(jù)的字?jǐn)?shù)則送入數(shù)據(jù)計數(shù)器DC中;
將磁盤中的數(shù)據(jù)原地址直接送入DMA控制器的I/O控制邏輯上,按設(shè)備狀態(tài)啟動磁頭到相應(yīng)位置。
啟動DMA控制器控制邏輯開始進行數(shù)據(jù)傳送
DMA控制器讀入一個數(shù)據(jù)到數(shù)據(jù)寄存器DR中,然后傳到內(nèi)存MAR地址中;接著MAR+1,DC-1,判斷DC是否為0,如否,繼續(xù),反之控制器發(fā)中斷請求,傳送完畢。

4)I/O通道控制方式
DMA適用于讀一個連續(xù)的數(shù)據(jù)塊;
如一次讀多個數(shù)據(jù)塊到內(nèi)存不同區(qū)域,須由CPU分別發(fā)送多條I/O指令、進行多次DMA中斷處理。
再進一步減少CPU的干預(yù)(減少中斷),引入通道。
實現(xiàn)對一組數(shù)據(jù)塊的讀(寫)及有關(guān)的控制和管理為單位的干預(yù)。
此時,CPU只需發(fā)一條I/O指令,給出通道程序的首地址及要訪問設(shè)備即可。
CPU、通道和I/O設(shè)備三者的并行操作,提高整系統(tǒng)資源利用率。
通道是一種通過執(zhí)行通道程序管理I/O操作的控制器,它使主機(CPU和內(nèi)存)與I/O操作之間達到更高的并行程度。由于它的任務(wù)是管理實現(xiàn)輸入/輸出操作,提供一種傳送通道,所以將這種部件稱作“通道”。
緩沖區(qū)管理

緩沖管理
I/O控制方式減少CPU對I/O的干預(yù)提高利用率;
緩沖則通過緩和CPU和I/O設(shè)備速度不匹配矛盾,增加CPU和I/O設(shè)備的并行性,提高利用率。
現(xiàn)代OS中,幾乎所有的I/O設(shè)備與處理機交換數(shù)據(jù)時,都用了緩沖區(qū)。
引入緩沖區(qū)的主要原因:
緩和CPU與I/O設(shè)備間速度不匹配的矛盾。
緩沖區(qū)數(shù)據(jù)成批傳入內(nèi)存,也可進一步減少對CPU的中斷頻率
最終目的:提高CPU和I/O設(shè)備的并行性。
使用緩沖區(qū)的方式:
1)單緩沖、多緩沖
2)循環(huán)緩沖
3)緩沖池(Buffer Pool)
1)單緩沖與多緩沖
單緩沖(Single Buffer)
每當(dāng)用戶進程發(fā)出一I/O請求時,
OS在主存中為之分配一個緩沖區(qū)。
CPU和外設(shè)輪流使用,一方處理完后等待對方處理。
單位:字符設(shè)備輸入時,緩沖區(qū)用于暫存用戶輸入/輸出的一行數(shù)據(jù);塊設(shè)備輸入則是成塊數(shù)據(jù)。


多緩沖引入
I/O與CPU速度基本相匹配,采用雙緩沖能獲得較好的效果,基本上能并行操作。
但,若兩者的速度相差甚遠,雙緩沖的效果仍不夠理想;
為進一步協(xié)調(diào)速度差,可增加緩沖區(qū)數(shù)量,同時進行一定的多緩沖管理入和出的同步。
? 引入多緩沖機制。組織形式:循環(huán)緩沖、緩沖池。

①循環(huán)緩沖的組成
多個緩沖區(qū)。大小相同,三種類型:
預(yù)備裝輸入數(shù)據(jù)的空緩沖區(qū)R
裝滿數(shù)據(jù)的緩沖區(qū)G
計算進程正在使用的現(xiàn)行工作緩沖區(qū)C
多個指針。
指示正在使用的緩沖區(qū)C的指針Current
指示計算進程下一個可取的緩沖區(qū)G的指針Nextg
指示輸入進程下次可放的緩沖區(qū)R的指針Nexti
②循環(huán)緩沖區(qū)的使用
計算進程(CPU)和輸入進程(I/O操作)可利用兩個過程來使用循環(huán)緩沖區(qū)。
主要就是利用指針,操作上述不同類型緩沖區(qū)
Getbuf過程:使用緩沖區(qū)時,可調(diào)用該過程
計算進程?。篶urrent=Nextg,G—>C,nextg下移一個。
輸入進程放:current=nexti,R—>C,nexti下移一個
Releasebuf過程:計算進程:C->R;輸入進程:C->G
一個時段只能用于輸入或輸出,不能同時雙向通信。
③進程同步
兩個進程的控制:輸入進程和計算進程并行執(zhí)行,如何控制相應(yīng)的兩個指針不斷順時針方向移動,這樣就可能出現(xiàn)兩種情況:
1.Nexti趕上Nextg。意味著輸入速度大于計算速度,緩沖區(qū)滿,只能阻塞輸入進程等計算進程取,此情況稱為系統(tǒng)受計算限制。
2.Nextg趕上Nexti。意味著輸入速度低于計算速度,緩沖區(qū)空,只能阻塞計算進程等輸入進程放,此情況稱為系統(tǒng)受I/O限制。
3)緩沖池(Buffer Pool)
循環(huán)緩沖的問題
不能同時雙向通訊
利用率不高。緩沖區(qū)是專用緩沖。(每個進程都要維護自己的一個循環(huán)緩沖區(qū)),使用有剩余時也不給其他進程使用,消耗大量內(nèi)存空間。
系統(tǒng)并發(fā)程序很多時,許多這樣的循環(huán)緩沖需要管理,比較復(fù)雜。
為提高緩沖區(qū)的利用率,目前廣泛流行緩沖池,在池中設(shè)置多個可供若干個進程共享的緩沖區(qū)。
系統(tǒng)將多個緩沖區(qū)形成一個緩沖池。
池中緩沖區(qū)為系統(tǒng)中所有的進程共享使用(如UNIX系統(tǒng)在塊設(shè)備管理中設(shè)置了一個15個緩沖區(qū)組成的緩沖池)
組織形式:隊列及隊列指針
磁盤存儲器的性能和調(diào)度


2)磁盤調(diào)度方法
對所有請求訪問磁盤的進程進行合理調(diào)度,使對磁盤的平均訪問時間最小。
目標(biāo):使平均尋道時間最少。
算法:FCFS;最短尋道時間優(yōu)先SSTF;
掃描算法SCAN(磁盤電梯調(diào)度算法);
循環(huán)掃描算法CSCAN
N-Step-SCAN算法
FSCAN算法





