1. I/O系統(tǒng)組成

包括:
需要用于輸入、輸出和存儲(chǔ)信息的設(shè)備;
需要相應(yīng)的設(shè)備控制器;
控制器與CPU連接的高速總線;
有的大中型計(jì)算機(jī)系統(tǒng),配置I/O通道;
(1)I/O設(shè)備的類型
從OS的觀點(diǎn),按其重要的性能指標(biāo)進(jìn)行分類如下:
按傳輸速率分類:
低速、中速、高速(鍵盤、打印機(jī)、磁盤)
使用:存儲(chǔ)設(shè)備、輸入輸出設(shè)備
按信息交換的單位分類:
塊設(shè)備:有結(jié)構(gòu)、速率高、可尋址、DMA方式控制
字符設(shè)備:無結(jié)構(gòu)、速率低、不可尋址、中斷方式控制
按設(shè)備的共享屬性分類:
獨(dú)占:打印機(jī)
共享:一個(gè)時(shí)刻上仍然是只被一個(gè)進(jìn)程占用。可尋址、可隨機(jī)訪問的色后備。磁盤。
虛擬:使一臺(tái)獨(dú)占設(shè)備變換為若干臺(tái)邏輯設(shè)備,供給若干用戶“同時(shí)使用”
(2)I/O設(shè)備中的接口
與控制器的接口有三種類型的信號(hào):
a)? 數(shù)據(jù)信號(hào)線(進(jìn)出數(shù)據(jù)轉(zhuǎn)換、緩沖后傳送)
b) 控制信號(hào)線(讀\寫\移動(dòng)磁頭等控制)
c)? 狀態(tài)信號(hào)線
(3)設(shè)備控制器
控制器是CPU與I/O設(shè)備之間的接口,作為中間人接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作,以使處理機(jī)脫離繁雜的設(shè)備控制事務(wù)
①?基本功能:
*接收和識(shí)別CPU命令(控制寄存器:存放命令和參數(shù))
*標(biāo)識(shí)和報(bào)告設(shè)備的狀態(tài)(狀態(tài)寄存器)
*數(shù)據(jù)交換(數(shù)據(jù)寄存器)
*地址識(shí)別(控制器識(shí)別設(shè)備地址、寄存器地址。地址譯碼器)
*數(shù)據(jù)緩沖(協(xié)調(diào)I/O與CPU的速度差距)
*差錯(cuò)控制
②組成:
*設(shè)備控制器與處理機(jī)的接口
*設(shè)備控制器與設(shè)備的接口
*I/O邏輯:通過一組控制線與處理機(jī)交互
(4)I/O通道
設(shè)備控制器已大大減少CPU對(duì)I/O的干預(yù),但當(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)
*實(shí)際上I/O通道是一種特殊的處理機(jī)
*主要目的:
建立更獨(dú)立的I/O操作,解放CPU
*通道類型:
根據(jù)其控制的外圍設(shè)備的不同類型,信息交換方式也可分為以下三種類型:
1)????字節(jié)多路通道
2)????數(shù)組選擇通道
3)????數(shù)組多路通道
(5)??
2. 設(shè)備管理
管理對(duì)象:
I/O設(shè)備和相應(yīng)的設(shè)備控制器(I/O系統(tǒng)組成)
基本任務(wù):
完成用戶提出的I/O請(qǐng)求,
提高I/O速率、改善I/O設(shè)備的利用率。
為更高層進(jìn)程方便使用設(shè)備提供手段
(1)中斷
中斷處理流程:
a)?測定是否有未響應(yīng)的中斷信號(hào)
b)? 保護(hù)被中斷進(jìn)程的CPU環(huán)境
c)? 轉(zhuǎn)入相應(yīng)的設(shè)備處理程序
d)?中斷處理
e)? 恢復(fù)CPU的現(xiàn)場
(2)

3. I/O系統(tǒng)的基本功能及模型
(1)功能:
*隱藏物理設(shè)備細(xì)節(jié)
*實(shí)現(xiàn)設(shè)備無關(guān)性
*提高處理機(jī)和設(shè)備的并行性
*對(duì)I/O設(shè)備進(jìn)行控制
*確保對(duì)設(shè)備正確共享
*錯(cuò)誤處理
(2)層次結(jié)構(gòu):
系統(tǒng)中的設(shè)備管理模塊分為若干個(gè)層次
下層為上層提供服務(wù),完成輸入輸出功能中的某些子功能,并屏蔽功能實(shí)現(xiàn)的細(xì)節(jié)

①用戶層軟件
實(shí)現(xiàn)與用戶交互的接口,用戶可直接調(diào)用在用戶層提供的、與I/O操作有關(guān)的庫函數(shù),對(duì)設(shè)備進(jìn)行操作。
②設(shè)備獨(dú)立軟件
用于實(shí)現(xiàn)用戶程序與設(shè)備驅(qū)動(dòng)器的統(tǒng)一接口、設(shè)備命名、設(shè)備的保護(hù)以及設(shè)備的分配與釋放等,同時(shí)為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲(chǔ)空間。
③設(shè)備驅(qū)動(dòng)程序
與硬件直接相關(guān),用于具體實(shí)現(xiàn)系統(tǒng)對(duì)設(shè)備發(fā)出的操作指令,驅(qū)動(dòng)I/O設(shè)備工作的驅(qū)動(dòng)程序。
④中斷處理程序
用于保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,處理完后再恢復(fù)被中斷進(jìn)程的現(xiàn)場后,返回到被中斷進(jìn)程。
4. I/O控制方式
1)程序I/O方式
2)中斷驅(qū)動(dòng)I/O方式
3)直接存儲(chǔ)器訪問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控制器由三部分組成:
主機(jī)與DMA控制器的接口;
DMA控制器與塊設(shè)備的接口;
3.I/O控制邏輯
③DMA工作過程
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通道控制方式
?
?
5.用戶層的I/O軟件
小部分I/O系統(tǒng)軟件放在了用戶應(yīng)用層上
1)?系統(tǒng)調(diào)用與庫函數(shù)
a)?不允許運(yùn)行在用戶態(tài)的應(yīng)用進(jìn)程,去直接調(diào)用運(yùn)行在核心態(tài)(系統(tǒng)態(tài))的OS過程。
b)?用進(jìn)程在運(yùn)行時(shí),又必須取得OS所提供的服務(wù)。
于是:
OS在用戶層中引入了系統(tǒng)調(diào)用,應(yīng)用程序可以通過它,間接調(diào)用OS中的I/O過程,對(duì)I/O設(shè)備進(jìn)行操作
2) 設(shè)備分配中的虛擬技術(shù)
?????? —— SPOOLing
技術(shù)
SPOOLing系統(tǒng)的組成:
*輸入井和輸出井:磁盤上開辟兩大存儲(chǔ)空間。輸入井模擬脫機(jī)輸入的磁盤設(shè)備,輸出井模擬脫機(jī)輸出時(shí)的磁盤。
*輸入緩沖區(qū)和輸出緩沖區(qū):為緩解速度矛盾,內(nèi)存中開辟兩大緩沖空間,輸入緩沖區(qū)暫存輸入設(shè)備送來的數(shù)據(jù),再送給輸入井;輸出緩沖區(qū)暫存輸出井送來的數(shù)據(jù),再送輸出設(shè)備
*輸入進(jìn)程和輸出進(jìn)程:
用一進(jìn)程模擬脫機(jī)輸入時(shí)外圍設(shè)備控制器的功能,把低速輸入設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;
用另一進(jìn)程模擬脫機(jī)輸出時(shí)外圍設(shè)備控制器的功能,把數(shù)據(jù)從磁盤上傳送到低速輸出設(shè)備上

3)SPOOLing系統(tǒng)的特點(diǎn)
*提高了I/O的速度
*實(shí)現(xiàn)了虛擬設(shè)備功能
6. 緩沖區(qū)管理
[if !supportLists]n? [endif]I/O控制方式減少CPU對(duì)I/O的干預(yù)提高利用率;
[if !supportLists]n? [endif]緩沖則通過緩和CPU和I/O設(shè)備速度不匹配矛盾,增加CPU和I/O設(shè)備的并行性,提高利用率。
[if !supportLists]n? [endif]現(xiàn)代OS中,幾乎所有的I/O設(shè)備與處理機(jī)交換數(shù)據(jù)時(shí),都用了緩沖區(qū)。
[if !supportLists]n? [endif]引入緩沖區(qū)的主要原因:
[if !supportLists]n? [endif]緩和CPU與I/O設(shè)備間速度不匹配的矛盾。
[if !supportLists]n? [endif]緩沖區(qū)數(shù)據(jù)成批傳入內(nèi)存,也可進(jìn)一步減少對(duì)CPU的中斷頻率
[if !supportLists]n? [endif]最終目的:提高CPU和I/O設(shè)備的并行性。
[if !supportLists]1)[endif]單緩沖與多緩沖
(1)單緩沖
每當(dāng)用戶進(jìn)程發(fā)出一I/O請(qǐng)求時(shí),OS在主存中為之分配一個(gè)緩沖區(qū)。CPU和外設(shè)輪流使用,一方處理完后等待對(duì)方處理。
(2)雙緩沖
兩個(gè)緩沖區(qū),CPU和外設(shè)不再針對(duì)一塊交替
可能實(shí)現(xiàn)連續(xù)處理無需等待對(duì)方。前提是CPU和外設(shè)對(duì)一塊數(shù)據(jù)的處理速度相近
* 雙緩沖還適合雙向通訊:一個(gè)用作發(fā)送緩沖區(qū),另一個(gè)用作接受緩沖區(qū)。
2)循環(huán)緩沖
設(shè)置多塊緩沖區(qū)
用循環(huán)結(jié)構(gòu)組織,只供兩個(gè)相關(guān)進(jìn)程使用
順一個(gè)方向放入或取出

①?循環(huán)緩沖的組成
多個(gè)緩沖區(qū)。大小相同,三種類型:
b)? 備裝輸入數(shù)據(jù)的空緩沖區(qū)R
c) 裝滿數(shù)據(jù)的緩沖區(qū)G
d) 計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C
多個(gè)指針。
e) 指示正在使用的緩沖區(qū)C的指針Current
f)? 指示計(jì)算進(jìn)程下一個(gè)可取的緩沖區(qū)G的指針Nextg
g) 指示輸入進(jìn)程下次可放的緩沖區(qū)R的指針Nexti
②循環(huán)緩沖區(qū)的使用
③進(jìn)程同步
[if !supportLists]3)[endif]緩沖池
提高緩沖區(qū)的利用率。在池中設(shè)置多個(gè)可供若干個(gè)進(jìn)程共享的緩沖區(qū)
[if !supportLists]n?? [endif]組織形式:隊(duì)列及隊(duì)列指針
[if !supportLists]①? [endif]緩沖池的組成
對(duì)于既可輸入又可輸出的公用緩沖池,至少應(yīng)含有下列三種類型的緩沖區(qū):
[if !supportLists]a)??[endif]空緩沖區(qū);
[if !supportLists]b)??[endif]裝滿輸入數(shù)據(jù)的緩沖區(qū);
[if !supportLists]c)??[endif]裝滿輸出數(shù)據(jù)的緩沖區(qū);
為方便管理,將上述類型相同的緩沖區(qū)連成隊(duì)列
[if !supportLists]¨?? [endif]空緩沖區(qū)隊(duì)列(所有進(jìn)程都可用)
[if !supportLists]¨?? [endif]輸入隊(duì)列(n個(gè)進(jìn)程有各自的隊(duì)列)
[if !supportLists]¨?? [endif]輸出隊(duì)列(n個(gè)進(jìn)程有各自的隊(duì)列)
*(隊(duì)列長度不固定,根據(jù)進(jìn)程實(shí)際情況靈活變動(dòng),需要多少用多少)
[if !supportLists]②? [endif]緩沖區(qū)的工作方式
收容輸入
提取輸入
收容輸出
提取輸出
使用:Getbuf(隊(duì)列,工作區(qū))
Putbuf(隊(duì)列,工作區(qū))
緩沖池:可雙向緩沖;緩沖區(qū)整體利用率高
7、磁盤存儲(chǔ)器的性能和調(diào)度
1)磁盤性能
與格式有關(guān)
[if !supportLists]n? [endif]數(shù)據(jù)的組織和格式
*盤片、面、磁道、扇區(qū)
*為方便處理,每條磁道存儲(chǔ)容量相同,每個(gè)磁道上的每個(gè)扇區(qū)相當(dāng)于一個(gè)盤塊。磁盤”格式化”的過程就是按規(guī)定的格式規(guī)劃盤塊
?
與速度有關(guān)
[if !supportLists]n? [endif]磁盤類型
[if !supportLists]¨? [endif]固定磁頭(每道一磁頭)
[if !supportLists]¨? [endif]移動(dòng)磁頭(每盤一磁頭)
[if !supportLists]n? [endif]訪問時(shí)間的計(jì)算
[if !supportLists]¨? [endif]尋道時(shí)間(到磁道)
[if !supportLists]¨? [endif]旋轉(zhuǎn)延遲(到扇區(qū))
[if !supportLists]¨? [endif]傳輸時(shí)間
????????????????? 傳輸時(shí)間占總時(shí)間的比例最小,磁盤讀寫速度的提高要選擇合適的調(diào)度算法,減少前兩項(xiàng)用時(shí),使所有作業(yè)的磁盤處理時(shí)間均衡。
2)磁盤調(diào)度方法
對(duì)所有請(qǐng)求訪問磁盤的進(jìn)程進(jìn)行合理調(diào)度,使對(duì)磁盤的平均訪問時(shí)間最小
目標(biāo):使平均尋道時(shí)間最少
?
算法:
①? FCFS
*多個(gè)進(jìn)程的磁盤I/O請(qǐng)求構(gòu)成一個(gè)隨機(jī)分布的請(qǐng)求隊(duì)列。
*磁盤I/O執(zhí)行順序按磁盤請(qǐng)求的先后順序。
②? 最短尋道時(shí)間優(yōu)先SSTF
選擇從當(dāng)前磁頭位置出發(fā)移動(dòng)最少的磁盤I/O請(qǐng)求
③? 掃描算法SCAN(磁盤電梯調(diào)度算法)
SSTF會(huì)導(dǎo)致“饑餓”現(xiàn)象
總選擇最近的磁道訪問,遠(yuǎn)磁道請(qǐng)求的進(jìn)程會(huì)長時(shí)間得不到執(zhí)行。
改進(jìn):
考慮距離的同時(shí),更優(yōu)先考慮方向
SCAN算法
規(guī)定磁頭移動(dòng)方向:自里向外,再自外向里移動(dòng)。
后續(xù)的I/O磁道請(qǐng)求,哪個(gè)在規(guī)定方向上距離最近,就先執(zhí)行哪個(gè)。
循環(huán)掃描CSCAN
SCAN的錯(cuò)過問題:
容易錯(cuò)過與當(dāng)前磁道距離近,但方向不一致的磁道。
修改:將SCAN規(guī)定的移動(dòng)方向改為“單向移動(dòng)”
由里向外后,再由里向外