?I/O系統(tǒng)的組成包括:
需要用于輸入、輸出和存儲(chǔ)信息的設(shè)備辟躏;
需要相應(yīng)的設(shè)備控制器谷扣;
控制器與CPU連接的高速總線;
有的大中型計(jì)算機(jī)系統(tǒng),配置I/O通道会涎;
1)I/O設(shè)備的類型
????I/O設(shè)備的類型繁多裹匙,從OS的觀點(diǎn),按其重要的性能指標(biāo)進(jìn)行分類如下:
按傳輸速率分類:
低速末秃、中速概页、高速(鍵盤、打印機(jī)练慕、磁盤)
使用:存儲(chǔ)設(shè)備惰匙、輸入輸出設(shè)備
按信息交換的單位分類:
塊設(shè)備:有結(jié)構(gòu)、速率高铃将、可尋址项鬼、DMA方式控制
字符設(shè)備:無(wú)結(jié)構(gòu)、速率低劲阎、不可尋址绘盟、中斷方式控制
按設(shè)備的共享屬性分類:
獨(dú)占:打印機(jī)
共享:一個(gè)時(shí)刻上仍然是只被一個(gè)進(jìn)程占用∶跸桑可尋址龄毡、可隨機(jī)訪問(wèn)的色后備。磁盤锡垄。
虛擬:使一臺(tái)獨(dú)占設(shè)備變換為若干臺(tái)邏輯設(shè)備沦零,供給若干用戶“同時(shí)使用”。
I/O設(shè)備中的接口
與控制器的接口有三種類型的信號(hào)
數(shù)據(jù)信號(hào)線(進(jìn)出數(shù)據(jù)轉(zhuǎn)換偎捎、緩沖后傳送)
控制信號(hào)線(讀\寫\移動(dòng)磁頭等控制)
狀態(tài)信號(hào)線
2)設(shè)備控制器
設(shè)備并不直接與CPU通信
計(jì)算機(jī)中的一個(gè)實(shí)體——“設(shè)備控制器”負(fù)責(zé)控制一個(gè)或多個(gè)I/O設(shè)備蠢终,以實(shí)現(xiàn)I/O設(shè)備和計(jì)算機(jī)之間的數(shù)據(jù)交換。
控制器是CPU與I/O設(shè)備之間的接口茴她,作為中間人接收從CPU發(fā)來(lái)的命令寻拂,并去控制I/O設(shè)備工作,以使處理機(jī)脫離繁雜的設(shè)備控制事務(wù)丈牢。
常作成接口卡插入計(jì)算機(jī)
可編址祭钉,不同類:控制一個(gè)設(shè)備時(shí)只有一個(gè)地址,若連接多個(gè)設(shè)備則含有多個(gè)設(shè)備地址己沛;管理的復(fù)雜性因不同設(shè)備而異慌核,分為字符設(shè)備控制器、塊設(shè)備控制器申尼。
①基本功能
1.接收和識(shí)別CPU命令(控制寄存器:存放命令和參數(shù))
2.標(biāo)識(shí)和報(bào)告設(shè)備的狀態(tài)(狀態(tài)寄存器)
3.數(shù)據(jù)交換(數(shù)據(jù)寄存器)
4.地址識(shí)別(控制器識(shí)別設(shè)備地址垮卓、寄存器地址。地址譯碼器)
5.數(shù)據(jù)緩沖(協(xié)調(diào)I/O與CPU的速度差距)
6.差錯(cuò)控制
②組成
1.設(shè)備控制器與處理機(jī)的接口
2.設(shè)備控制器與設(shè)備的接口
3.I/O邏輯
3)I/O通道
①I/O通道設(shè)備的引入
設(shè)備控制器已大大減少CPU對(duì)I/O的干預(yù)(如承擔(dān)了選擇設(shè)備师幕,數(shù)據(jù)轉(zhuǎn)換粟按、緩沖等功能)
但當(dāng)主機(jī)的外設(shè)很多時(shí)诬滩,CPU的負(fù)擔(dān)仍然很重。
在CPU和設(shè)備控制器之間增設(shè)一個(gè)硬件機(jī)構(gòu):“通道”
設(shè)置通道后CPU只需向通道發(fā)送一條I/O指令即可不再干預(yù)后續(xù)操作灭将。
通道形成通道程序疼鸟,執(zhí)行I/O操作,完成后向CPU發(fā)中斷信號(hào)庙曙。
主要目的:
建立更獨(dú)立的I/O操作空镜,解放CPU。
數(shù)據(jù)傳送的獨(dú)立
I/0操作的組織捌朴、管理及結(jié)束處理也盡量獨(dú)立吴攒。
實(shí)際上I/O通道是一種特殊的處理機(jī):指令類型單一,只用于I/O操作男旗;通道沒(méi)有內(nèi)存舶斧,它與CPU共享內(nèi)存
②通道類型
根據(jù)其控制的外圍設(shè)備的不同類型,信息交換方式也可分為以下三種類型:字節(jié)多路通道察皇;數(shù)組選擇通道;數(shù)組多路通道泽台。
中斷機(jī)構(gòu)和中斷處理程序
1.中斷簡(jiǎn)介
⑴中斷和陷入
中斷:CPU對(duì)I/O設(shè)備發(fā)來(lái)的中斷信號(hào)的一種響應(yīng)什荣,中斷是由外部設(shè)備引起的,又稱外中斷怀酷。
陷入:由CPU內(nèi)部事件所引起的中斷稻爬,通常把這類中斷稱為內(nèi)中斷或陷入(trap)。
中斷和陷入的主要區(qū)別:是信號(hào)的來(lái)源蜕依。
I/O控制方式
程序I/O方式
中斷驅(qū)動(dòng)I/O方式
直接存儲(chǔ)器訪問(wèn)DMA(字節(jié)—塊)
I/O通道控制方式(組織傳送的獨(dú)立)
宗旨:減少主機(jī)對(duì)I/O控制的干預(yù)桅锄,將CPU從繁雜的I/O控制事物中解脫出來(lái)。
1)程序I/O方式
cpu對(duì)I/O設(shè)備的控制采取程序I/O方式样眠,或稱忙—等待方式
向控制器發(fā)送一條I/O指令友瘤;啟動(dòng)輸入設(shè)備輸入數(shù)據(jù);把狀態(tài)寄存器busy=1檐束。
然后不斷測(cè)試標(biāo)志辫秧。為1:表示輸入機(jī)尚未輸完一個(gè)字,CPU繼續(xù)對(duì)該標(biāo)志測(cè)試被丧;直到為0:數(shù)據(jù)已輸入控制器數(shù)據(jù)寄存器中盟戏。
CPU取控制器中的數(shù)據(jù)送入內(nèi)存單元,完成一個(gè)字的I/O甥桂。
高速CPU空閑等待低速I/O設(shè)備柿究,致使CPU極大浪費(fèi)。
2)中斷驅(qū)動(dòng)I/O方式
CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令
然后立即返回繼續(xù)執(zhí)行任務(wù)黄选。
設(shè)備控制器按照命令的要求去控制指定I/O設(shè)備蝇摸。
這時(shí)CPU與I/O設(shè)備并行操作。
I/O設(shè)備輸入數(shù)據(jù)中,無(wú)需CPU干預(yù)探入,因而可使CPU與I/O設(shè)備并行工作狡孔。從而提高了整個(gè)系統(tǒng)的資源利用率及吞吐量。
但cpu真的不需要干預(yù)么蜂嗽?
中斷方式比程序I/O方式更有效
但仍以字(節(jié))為單位進(jìn)行I/O苗膝,每當(dāng)完成一個(gè)字(節(jié)),控制器便要請(qǐng)求一次中斷植旧。
CPU雖然可與I/O并行辱揭,但效率不高,存在頻繁的中斷干擾病附。
改進(jìn):CPU下指令通知控制器完成一塊數(shù)據(jù)的I/O问窃,控制器完成后才發(fā)中斷,而不是每個(gè)字節(jié)都要向CPU發(fā)中斷完沪;多字節(jié)傳輸入內(nèi)存過(guò)程不需要CPU搬運(yùn)域庇,由控制器控制完成(所以稱直接存儲(chǔ)器訪問(wèn))——DMA(Direct Memory Access)控制方式引入
3)直接存儲(chǔ)器訪問(wèn)DMA 方式
①該方式的特點(diǎn)是:
1)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;
2)所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的覆积,或者直接從內(nèi)存進(jìn)設(shè)備听皿;不需要CPU操作。
3)CPU干預(yù)進(jìn)一步減少:僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí)宽档,才需CPU干預(yù)尉姨,整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。
???? 可見DMA方式又是成百倍的減少了CPU對(duì)I/O的干預(yù)吗冤,進(jìn)一步提高了CPU與I/O設(shè)備的并行操作程度又厉。
②DMA控制器的組成
DMA控制器由三部分組成:
1.主機(jī)與DMA控制器的接口;
2.DMA控制器與塊設(shè)備的接口椎瘟;
I/O控制邏輯覆致。
DMA控制器中的寄存器
為實(shí)現(xiàn)主機(jī)與控制器之間塊數(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ù)計(jì)數(shù)器DC:存放本次CPU要讀或?qū)懙淖郑ü?jié))數(shù)。
4.命令/狀態(tài)寄存器CR:用于接收從CPU發(fā)來(lái)的I/O命令或有關(guān)控制和狀態(tài)信息婆排。
③DMA工作過(guò)程
CPU先向磁盤控制器發(fā)送一條讀命令声旺。
該命令被送到命令寄存器CR中。
同時(shí)發(fā)送數(shù)據(jù)讀入到內(nèi)存的起始地址段只,該地址被送入MAR中腮猖;
要讀數(shù)據(jù)的字?jǐn)?shù)則送入數(shù)據(jù)計(jì)數(shù)器DC中;
將磁盤中的數(shù)據(jù)原地址直接送入DMA控制器的I/O控制邏輯上赞枕,按設(shè)備狀態(tài)啟動(dòng)磁頭到相應(yīng)位置澈缺。
啟動(dòng)DMA控制器控制邏輯開始進(jìn)行數(shù)據(jù)傳送
DMA控制器讀入一個(gè)數(shù)據(jù)到數(shù)據(jù)寄存器DR中坪创,然后傳到內(nèi)存MAR地址中;接著MAR+1,DC-1姐赡,判斷DC是否為0,如否莱预,繼續(xù),反之控制器發(fā)中斷請(qǐng)求项滑,傳送完畢依沮。
4)I/O通道控制方式
DMA適用于讀一個(gè)連續(xù)的數(shù)據(jù)塊;
如一次讀多個(gè)數(shù)據(jù)塊到內(nèi)存不同區(qū)域枪狂,須由CPU分別發(fā)送多條I/O指令危喉、進(jìn)行多次DMA中斷處理。
再進(jìn)一步減少CPU的干預(yù)(減少中斷)州疾,引入通道辜限。
實(shí)現(xiàn)對(duì)一組數(shù)據(jù)塊的讀(寫)及有關(guān)的控制和管理為單位的干預(yù)。
此時(shí)严蓖,CPU只需發(fā)一條I/O指令薄嫡,給出通道程序的首地址及要訪問(wèn)設(shè)備即可。
CPU颗胡、通道和I/O設(shè)備三者的并行操作岂座,提高整系統(tǒng)資源利用率。
通道是一種通過(guò)執(zhí)行通道程序管理I/O操作的控制器杭措,它使主機(jī)(CPU和內(nèi)存)與I/O操作之間達(dá)到更高的并行程度。由于它的任務(wù)是管理實(shí)現(xiàn)輸入/輸出操作钾恢,提供一種傳送通道手素,所以將這種部件稱作“通道”。
緩沖區(qū)管理
緩沖管理
I/O控制方式減少CPU對(duì)I/O的干預(yù)提高利用率瘩蚪;
緩沖則通過(guò)緩和CPU和I/O設(shè)備速度不匹配矛盾泉懦,增加CPU和I/O設(shè)備的并行性,提高利用率疹瘦。
現(xiàn)代OS中种吸,幾乎所有的I/O設(shè)備與處理機(jī)交換數(shù)據(jù)時(shí)米奸,都用了緩沖區(qū)。
引入緩沖區(qū)的主要原因:
緩和CPU與I/O設(shè)備間速度不匹配的矛盾。
緩沖區(qū)數(shù)據(jù)成批傳入內(nèi)存艺糜,也可進(jìn)一步減少對(duì)CPU的中斷頻率
最終目的:提高CPU和I/O設(shè)備的并行性。
使用緩沖區(qū)的方式:
1)單緩沖磨德、多緩沖
2)循環(huán)緩沖
3)緩沖池(Buffer Pool)
1)單緩沖與多緩沖
單緩沖(Single Buffer)
每當(dāng)用戶進(jìn)程發(fā)出一I/O請(qǐng)求時(shí)屯援,
OS在主存中為之分配一個(gè)緩沖區(qū)。
CPU和外設(shè)輪流使用起便,一方處理完后等待對(duì)方處理棚贾。
單位:字符設(shè)備輸入時(shí)窖维,緩沖區(qū)用于暫存用戶輸入/輸出的一行數(shù)據(jù);塊設(shè)備輸入則是成塊數(shù)據(jù)妙痹。
多緩沖引入
I/O與CPU速度基本相匹配铸史,采用雙緩沖能獲得較好的效果,基本上能并行操作怯伊。
但琳轿,若兩者的速度相差甚遠(yuǎn),雙緩沖的效果仍不夠理想震贵;
為進(jìn)一步協(xié)調(diào)速度差利赋,可增加緩沖區(qū)數(shù)量,同時(shí)進(jìn)行一定的多緩沖管理入和出的同步猩系。
? 引入多緩沖機(jī)制媚送。組織形式:循環(huán)緩沖、緩沖池寇甸。
①循環(huán)緩沖的組成
多個(gè)緩沖區(qū)塘偎。大小相同,三種類型:
預(yù)備裝輸入數(shù)據(jù)的空緩沖區(qū)R
裝滿數(shù)據(jù)的緩沖區(qū)G
計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C
多個(gè)指針拿霉。
指示正在使用的緩沖區(qū)C的指針Current
指示計(jì)算進(jìn)程下一個(gè)可取的緩沖區(qū)G的指針Nextg
指示輸入進(jìn)程下次可放的緩沖區(qū)R的指針Nexti
②循環(huán)緩沖區(qū)的使用
計(jì)算進(jìn)程(CPU)和輸入進(jìn)程(I/O操作)可利用兩個(gè)過(guò)程來(lái)使用循環(huán)緩沖區(qū)吟秩。
主要就是利用指針,操作上述不同類型緩沖區(qū)
Getbuf過(guò)程:使用緩沖區(qū)時(shí)绽淘,可調(diào)用該過(guò)程
計(jì)算進(jìn)程群馈:current=Nextg,G—>C,nextg下移一個(gè)沪铭。
輸入進(jìn)程放:current=nexti壮池,R—>C,nexti下移一個(gè)
Releasebuf過(guò)程:計(jì)算進(jìn)程:C->R杀怠;輸入進(jìn)程:C->G
一個(gè)時(shí)段只能用于輸入或輸出椰憋,不能同時(shí)雙向通信。
③進(jìn)程同步
兩個(gè)進(jìn)程的控制:輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行赔退,如何控制相應(yīng)的兩個(gè)指針不斷順時(shí)針?lè)较蛞苿?dòng)橙依,這樣就可能出現(xiàn)兩種情況:
1.Nexti趕上Nextg。意味著輸入速度大于計(jì)算速度硕旗,緩沖區(qū)滿窗骑,只能阻塞輸入進(jìn)程等計(jì)算進(jìn)程取,此情況稱為系統(tǒng)受計(jì)算限制卵渴。
2.Nextg趕上Nexti慧域。意味著輸入速度低于計(jì)算速度,緩沖區(qū)空浪读,只能阻塞計(jì)算進(jìn)程等輸入進(jìn)程放昔榴,此情況稱為系統(tǒng)受I/O限制辛藻。
3)緩沖池(Buffer Pool)
循環(huán)緩沖的問(wèn)題
不能同時(shí)雙向通訊
利用率不高。緩沖區(qū)是專用緩沖互订。(每個(gè)進(jìn)程都要維護(hù)自己的一個(gè)循環(huán)緩沖區(qū))吱肌,使用有剩余時(shí)也不給其他進(jìn)程使用,消耗大量?jī)?nèi)存空間仰禽。
系統(tǒng)并發(fā)程序很多時(shí)氮墨,許多這樣的循環(huán)緩沖需要管理,比較復(fù)雜吐葵。
為提高緩沖區(qū)的利用率规揪,目前廣泛流行緩沖池,在池中設(shè)置多個(gè)可供若干個(gè)進(jìn)程共享的緩沖區(qū)温峭。
系統(tǒng)將多個(gè)緩沖區(qū)形成一個(gè)緩沖池猛铅。
池中緩沖區(qū)為系統(tǒng)中所有的進(jìn)程共享使用(如UNIX系統(tǒng)在塊設(shè)備管理中設(shè)置了一個(gè)15個(gè)緩沖區(qū)組成的緩沖池)
組織形式:隊(duì)列及隊(duì)列指針
磁盤存儲(chǔ)器的性能和調(diào)度
2)磁盤調(diào)度方法
對(duì)所有請(qǐng)求訪問(wèn)磁盤的進(jìn)程進(jìn)行合理調(diào)度,使對(duì)磁盤的平均訪問(wèn)時(shí)間最小凤藏。
目標(biāo):使平均尋道時(shí)間最少奸忽。
算法:FCFS;最短尋道時(shí)間優(yōu)先SSTF揖庄;
掃描算法SCAN(磁盤電梯調(diào)度算法)栗菜;
循環(huán)掃描算法CSCAN
N-Step-SCAN算法
FSCAN算法