輸入輸出系統(tǒng)——I/O系統(tǒng)

I/O系統(tǒng)

?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算法







?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容