




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第五章微備管理
5.1I/O系統(tǒng)
5.2I/O控制方式
5.3緩沖管理
5.4I/O軟件
5.5設(shè)備分配
5.6磁盤存儲(chǔ)器的管理
5.1I/O系統(tǒng)
5.1.1I/O設(shè)備
LI/O設(shè)備的類型
重要的性能指標(biāo)有:設(shè)備使用特性、數(shù)據(jù)傳輸速率、數(shù)據(jù)
的傳輸單位、設(shè)備共享屬性等。
1)按設(shè)備的使用特性分類
第一類是存儲(chǔ)設(shè)備,也稱外存或后備存儲(chǔ)器、輔助存儲(chǔ)
器,是計(jì)算機(jī)系統(tǒng)用以存儲(chǔ)信息的主要設(shè)備。
第二類就是輸入/輸出設(shè)備,又具體可分為輸入設(shè)備、輸
出設(shè)備和交互式設(shè)備。
2)按傳輸速率分類
第一類是低速設(shè)備,這是指其傳輸速率僅為每秒鐘幾個(gè)
字節(jié)至數(shù)百個(gè)字節(jié)的一類設(shè)備。
第二類是中速設(shè)備,這是指其傳輸速率在每秒鐘數(shù)千個(gè)
字節(jié)至數(shù)十萬個(gè)字節(jié)的一類設(shè)備。
第三類是高速設(shè)備,這是指其傳輸速率在數(shù)百個(gè)千字節(jié)
至千兆字節(jié)的一類設(shè)備。
3)按信息交換的單位分類
第一類是塊設(shè)備(BlockDevice),這類設(shè)備用于存儲(chǔ)信息。
基本特征是其傳輸速率較高,通常每秒鐘為幾兆位;另一特征
是可尋址,即對(duì)它可隨機(jī)地讀/寫任一塊;止匕外,I/O常采用
DMA方式。
第二類是字符設(shè)備(CharacterDevice),用于數(shù)據(jù)的輸入和
輸出。基本特征是其傳輸速率較低,通常為幾個(gè)字節(jié)至數(shù)千字
節(jié);另一特征是不可尋址,即輸入/輸出時(shí)不能指定數(shù)據(jù)的輸
入源地址及輸出的目標(biāo)地址;止匕外,輸入/輸出常采用中斷驅(qū)
動(dòng)方式。
少按設(shè)備的共享屬性分類
(1)獨(dú)占設(shè)備。這是指在一段時(shí)間內(nèi)只允許一個(gè)用戶(進(jìn)
程)訪問的設(shè)備,即臨界資源。應(yīng)當(dāng)注意,獨(dú)占設(shè)備的分配有
可能引起進(jìn)程死鎖。
(2)共享設(shè)備。這是指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同時(shí)
訪問的設(shè)備。當(dāng)然,對(duì)于每一時(shí)刻而言,該類設(shè)備仍然只允
許一個(gè)進(jìn)程訪問。顯然,共享設(shè)備必須是可尋址的和可隨機(jī)
訪問的設(shè)備。
(3)虛擬設(shè)備。這是指通過虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備變
換為若干臺(tái)邏輯設(shè)備,供若干個(gè)用戶(進(jìn)程)同時(shí)使用。
2.設(shè)備與控制器之間的接口
接口中有三種類型的信號(hào)(見圖5-1所示),各對(duì)應(yīng)一條
信號(hào)線。
1/m備
圖5-1設(shè)備與控制器間的接口
1)數(shù)據(jù)信號(hào)線
這類信號(hào)線用于在設(shè)備和設(shè)備控制器之間傳送數(shù)據(jù)信
號(hào)。數(shù)據(jù)的并行與串行轉(zhuǎn)換。
2)控制信號(hào)線
這是作為由設(shè)備控制器向I/O設(shè)備發(fā)送控制信號(hào)時(shí)的通路。
該信號(hào)規(guī)定了設(shè)備將要執(zhí)行的操作。
3)狀態(tài)信號(hào)線
這類信號(hào)線用于傳送指示設(shè)備當(dāng)前狀態(tài)的信號(hào)。
5.1.2設(shè)備控制器
1.攻備于金制器的基本功能
1)接收和識(shí)別命令
CPU可以向控制器發(fā)送多種不同的命令,設(shè)備控制器應(yīng)
能接收并識(shí)別這些命令。為此,在控制器中應(yīng)具有相應(yīng)的控
制寄存器,用來存放接收的命令和參數(shù),并對(duì)所接收的命令
進(jìn)行譯碼。例如,磁盤控制器可以接收CPU發(fā)來的Read、
Write>Format等15條不同的命令,而且有些命令還帶有參數(shù);
相應(yīng)地,在磁盤控制器中有多個(gè)寄存器和命令譯碼器等。
2)數(shù)據(jù)交換
這是指實(shí)現(xiàn)CPU與控制器之間、控制器與設(shè)備之間的數(shù)據(jù)
交換。對(duì)于前者,是通過數(shù)據(jù)總線,由CPU并行地把數(shù)據(jù)寫入
控制器,或從控制器中并行地讀出數(shù)據(jù);對(duì)于后者,是設(shè)備
將數(shù)據(jù)輸入到控制器,或從控制器傳送給設(shè)備。為此,在控
制器中須設(shè)置數(shù)據(jù)寄存器。
3)標(biāo)識(shí)和報(bào)告設(shè)備的狀態(tài)
控制器應(yīng)記下設(shè)備的狀態(tài)供CPU了解。例如,僅當(dāng)該設(shè)
備處于發(fā)送就緒狀態(tài)時(shí),CPU才能啟動(dòng)控制器從設(shè)備中讀出
數(shù)據(jù)。為此,在控制器中應(yīng)設(shè)置一狀態(tài)寄存器,用其中的每
一位來反映設(shè)備的某一種狀態(tài)。當(dāng)CPU將該寄存器的內(nèi)容讀
入后,便可了解該設(shè)備的狀態(tài)。
4)地址識(shí)別
一就像內(nèi)存中的每一個(gè)單元都有一個(gè)地址一樣,系統(tǒng)中的
每一個(gè)設(shè)備也都有一個(gè)地址,而設(shè)備控制器又必須能夠識(shí)別
它所控制的每個(gè)設(shè)備的地址。此外,為使CPU能向(或從)寄存
器中寫入(或讀出)數(shù)據(jù),這些寄存器都應(yīng)具有唯一的地址。例
如,在IB-MPC機(jī)中規(guī)定,硬盤控制器中各寄存器的地址分別
為320?32F之一??刂破鲬?yīng)能正確識(shí)別這些地址,為此,在
控制器中應(yīng)配置地址譯碼器。
5)數(shù)據(jù)緩沖
由于I/O設(shè)備的速率較低而CPU和內(nèi)存的速率卻很高,故
在控制器中必須設(shè)置一緩沖器。在輸出時(shí),用此緩沖器暫存
由主機(jī)高速傳來的數(shù)據(jù),然后才以I/O設(shè)備所具有的速率將緩
沖器中的數(shù)據(jù)傳送給I/O設(shè)備;在輸入時(shí),緩沖器則用于暫存
從I/O設(shè)備送來的數(shù)據(jù),待接收到一批數(shù)據(jù)后,再將緩沖器中
的數(shù)據(jù)高速地傳送給主機(jī)。
6)差錯(cuò)控制
設(shè)備控制器還兼管對(duì)由I/O設(shè)備傳送來的數(shù)據(jù)進(jìn)行差錯(cuò)檢
測。若發(fā)現(xiàn)傳送中出現(xiàn)了錯(cuò)誤,通常是將差錯(cuò)檢測碼置位,
并向CPU報(bào)告,于是CPU將本次傳送來的數(shù)據(jù)作廢,并重新
進(jìn)行一次傳送。這樣便可保證數(shù)據(jù)輸入的正確性。
2.設(shè)備控制器的組成
1)設(shè)備控制器與處理機(jī)的接口
該接口用于實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信。共有三
類信號(hào)線:數(shù)據(jù)線、地址線和控制線。數(shù)據(jù)線通常與兩類寄存
器相連接,第一類是數(shù)據(jù)寄存器(在控制器中可以有一個(gè)或多
個(gè)數(shù)據(jù)寄存器,用于存放從設(shè)備送來的數(shù)據(jù)(輸入)或從CPU送
來的數(shù)據(jù)(輸出));第二類是控制/狀態(tài)寄存器(在控制器中可以
有一個(gè)或多個(gè)這類寄存器,用于存放從CPU送來的控制信息
或設(shè)備的狀態(tài)信息)。
2)設(shè)備控制器與設(shè)備的接口
在一個(gè)設(shè)備控制器上,可以連接一個(gè)或多個(gè)設(shè)備。相應(yīng)
地,在控制器中便有一個(gè)或多個(gè)設(shè)備接口,一個(gè)接口連接一
臺(tái)設(shè)備。在每個(gè)接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類型的
信號(hào)??刂破髦械腎/O邏輯根據(jù)處理機(jī)發(fā)來的地址信號(hào)去選擇
一個(gè)設(shè)備接口。
3)I/O邏輯
在設(shè)備控制器中的I/O邏輯用于實(shí)現(xiàn)對(duì)設(shè)備的控制。它通
過一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)
送I/O命令;I/O邏輯對(duì)收到的命令進(jìn)行譯碼。每當(dāng)CPU要啟動(dòng)
一個(gè)設(shè)備時(shí),一方面將啟動(dòng)命令發(fā)送給控制器;另一方面又
同時(shí)通過地址線把地址發(fā)送給控制器,由控制器的I/O邏輯對(duì)
收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對(duì)所選設(shè)備進(jìn)行
控制。設(shè)備控制器的組成示于圖5-2中。
CPLfe控制器接口控制器與設(shè)備接口
圖5-2設(shè)備控制器的組成
5.1.3I/O通道
1.I/O通道(I/OChannel)設(shè)備的引入
主要目的是為了建立獨(dú)立的I/O操作,不僅使數(shù)據(jù)的傳送
能獨(dú)立于CPU,而且也希望有關(guān)對(duì)I/O操作的組織、管理及其
結(jié)束處理盡量獨(dú)立,以保證CPU有更多的時(shí)間去進(jìn)行數(shù)據(jù)處
理;或者說,其目的是使一些原來由CPU處理的I/O任務(wù)轉(zhuǎn)由
通道來承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來。
I/O通道是一種特殊的處理機(jī),主要特點(diǎn):
一是其指令類型單一;二是通道與CPU共享內(nèi)存。
2.通道類型
1)字節(jié)多路通道(ByteMultiplexorChannel)
這是一種按字節(jié)交叉方式工作的通道。只要字節(jié)多路通
道掃描每個(gè)子通道的速率足夠快,而連接到子通道上的設(shè)備
的速率不是太高時(shí),便不致丟失信息。
圖5-3字節(jié)多路通道的工作原理
2)數(shù)組選擇通道(BlockSelectorChannel)
可以連接多臺(tái)高速設(shè)備,但只含有一個(gè)分配型子通道,
在一段時(shí)間內(nèi)只能執(zhí)行一道通道程序,控制一臺(tái)設(shè)備進(jìn)行數(shù)
據(jù)傳送,致使當(dāng)某臺(tái)設(shè)備占用了該通道后,便一直由它獨(dú)占,
即使是它無數(shù)據(jù)傳送,通道被閑置,也不允許其它設(shè)備使用
該通道,直至該設(shè)備傳送完畢釋放該通道。
3)數(shù)組多路通道(BlockMultiplexorChannel)
數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許
一個(gè)設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道傳輸速
率高和字節(jié)多路通道能使各子通道(設(shè)備)分時(shí)并行操作的優(yōu)
點(diǎn)相結(jié)合而形成的一種新通道。它含有多個(gè)非分配型子通道,
因而這種通道既具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿
意的通道利用率。也正因此,才使該通道能被廣泛地用于連
接多臺(tái)高、中速的外圍設(shè)備,其數(shù)據(jù)傳送是按數(shù)組方式進(jìn)行
的。
3.“瓶頸”問題
由于通道價(jià)格昂貴,致使機(jī)器中所設(shè)置的通道數(shù)量勢
必較少,這往往又使它成了I/O的瓶頸,進(jìn)而造成整個(gè)系統(tǒng)
吞吐量的下降。例如,在圖5-4中,假設(shè)設(shè)備1至設(shè)備4是四
個(gè)磁盤,為了啟動(dòng)磁盤4,必須用通道1和控制器2;但若這
兩者已被其它設(shè)備占用,必然無法啟動(dòng)磁盤4。類似地,若
要啟動(dòng)盤1和盤2,由于它們都要用到通道1,因而也不可能
啟動(dòng)。這些就是由于通道不足所造成的“瓶頸”現(xiàn)象。
圖5-4單通路I/O系統(tǒng)
解決“瓶頸”問題的最有效的方法,便是增加設(shè)備到主
機(jī)間的通路而不增加通道。
圖5-5多通路I/O系統(tǒng)
5.1.4總線系統(tǒng)
時(shí)鐘頻率、帶寬和傳輸速率。
磁盤驅(qū)動(dòng)器
系統(tǒng)總線
圖5-6總線型I/O系統(tǒng)結(jié)構(gòu)
1.ISA和EISA總線
1)(Inducts乎StandardArchitecture)總線
這是為在1984年推出的80286型微機(jī)而設(shè)計(jì)的總線結(jié)構(gòu)。
其總線的帶寬為8位,最高傳輸速率為2Mb/so之后不久又推
出了16位的(EISA)總線,其最高傳輸速率為8Mb/s,后又升
至16Mb/s,能連接12臺(tái)設(shè)備。
2)EISA(ExtendedISA)總線
到20世紀(jì)80年代末期,ISA總線已難于滿足帶寬和傳輸速
率的要求,于是人們又開發(fā)出擴(kuò)展ISA(EISA)總線,其帶寬為
32位,總線的傳輸速率高達(dá)32Mb/s,同樣可以連接12臺(tái)外部
設(shè)備。
2.局部總線(LocalBus)
—所謂局部總線,是指將多媒體卡、高速LAN網(wǎng)卡、高性
能圖形板等,從ISA總線上卸下來,再通過局部總線控制器直
接接到CPU總線上,使之與高速CPU總線相匹配,而打印機(jī)、
FAX/Modem、CDROM等仍掛在ISA總線上。在局部總線中較
有影響的是VESA總線和PCI總線。
1)VESA(VideoElectronicStandardAssociation)
總線
帶寬為32位,最高傳輸速率為132Mb/s,設(shè)備數(shù)僅為2?
4臺(tái),在控制器中無緩沖,不支持Pentium微機(jī)。
2)PCI(PeripheralComponentInterface)總線
支持64位系統(tǒng),配有緩沖,最多支持10種外設(shè),最大傳輸
速率可達(dá)132Mb/s。PCI既可連接ISA、EISA等傳統(tǒng)型總線,
又可支持Pentium的64位系統(tǒng)。
5.2I/O控制方式
5.2.1程序I/O方式
5.2.2中斷驅(qū)動(dòng)I/O控制方式
5.2.3直接存儲(chǔ)器訪問(DMA)I/O控制方式
下一條指令下一條指令下一條指令
(a)程序1/6式(b)中斷驅(qū)動(dòng)方式?DM泌式
圖5-7程序I/O和中斷驅(qū)動(dòng)方式的流程
5.2.3直接存儲(chǔ)器訪問(DMA)I/O控制方式
(Dirnct^MemoryAccess)控制方式的弓|入
采用中斷驅(qū)動(dòng)I/O方式時(shí)的CPU是以字(節(jié))為單位進(jìn)行干
預(yù)的。
DMA的特點(diǎn)是:
(1)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊,即在CPU與I/O設(shè)備
之間,每次傳送至少一個(gè)數(shù)據(jù)塊;
(2)所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反;
(3)僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需
CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。
2.DMA控制器的組成
DMA控制器由三部分組成:主機(jī)與DMA控制器的接口;
DMA控制器與塊設(shè)備的接口;I/O控制邏輯。圖5-8示出了
DMA控制器的組成。這里主要介紹主機(jī)與控制器之間的接口。
DMA控制器中四類寄存器:
(1)命令/狀態(tài)寄存器(CR)。
(2)內(nèi)存地址寄存器(MAR)。
(3)數(shù)據(jù)寄存器(DR)。
(4)數(shù)據(jù)計(jì)數(shù)器(DC)。皿4r
CPU內(nèi)存主機(jī)一控制器接口控制器與塊設(shè)備接口
I/控O
制□
邏*
輯O
命令
--------?系統(tǒng)總線DM閡制器
圖5-8DMA控制器的組成
圖5-9DMA方式的工作流程圖
5.2.4I/O通道控制方式
LI/O通道控制方式的引入
把對(duì)一個(gè)數(shù)據(jù)塊的讀(或?qū)懀閱挝坏母深A(yù)減少為對(duì)一組數(shù)
據(jù)塊為單位的讀(或?qū)懀┘坝嘘P(guān)的控制和管理的干預(yù)。
實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行操作,從而更有效
地提高整個(gè)系統(tǒng)的資源利用率。
2.通道程序
----通遒是通11通行通遒油用,并與設(shè)備控制器共同實(shí)現(xiàn)對(duì)
I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱為通
道命令)所構(gòu)成的。通道指令與一般的機(jī)器指令不同,在它的
每條指令中都包含下列諸信息:
(1)操作碼。操作碼規(guī)定了指令所執(zhí)行的操作,如讀、
寫、控制等操作。
(2)內(nèi)存地址。內(nèi)存地址標(biāo)明字符送入內(nèi)存(讀操作)和
從內(nèi)存取出(寫操作)時(shí)的內(nèi)存首址。
(3)計(jì)數(shù)。該信息表示本條指令所要讀(或?qū)懀?shù)據(jù)的字節(jié)
數(shù)。
(4)通道程序結(jié)束位P。該位用于表示通道程序是否結(jié)束。
r一1衣小平氽才曰專是膽道程序的最后一條指令。
(5)記錄結(jié)束標(biāo)志R。R=0表示本通道指令與下一條指令
所處理的數(shù)據(jù)是同屬于一個(gè)記錄;R=1表示這是處理某記錄
的最后一條指令。
下面示出了一個(gè)由六條通道指令所構(gòu)成的簡單的通道程
序。該程序的功能是將內(nèi)存中不同地址的數(shù)據(jù)寫成多個(gè)記錄。
其中,前三條指令是分別將813?892單元中的80個(gè)字符和
1034?H73單元中的140個(gè)字符及5830?5889單元中的60個(gè)字
符寫成一個(gè)記錄;第4條指令是單獨(dú)寫一個(gè)具有300個(gè)字符的
記錄;第5、6條指令共寫含500個(gè)字符的記錄。
操作PR計(jì)數(shù)內(nèi)存地址
WRITE0080813
WRITE001401034
WRITE01605830
WRITE013002000
WRITE002501650
WRITE112502720
5.3緩沖管理
5.3.1緩沖的引入
(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾。
(2)減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷響應(yīng)時(shí)間的
限制。
(3)提高CPU和I/O設(shè)備之間的并行性。
9.6Kb/s
3A1位緩沖
8位緩沖寄存器
9.6Kb/s
(b)送內(nèi)存
送內(nèi)存
圖5-10利用緩沖寄存器實(shí)現(xiàn)緩沖
5.3.2單緩沖和雙緩沖
1?單緩沖(sfii趕eBuffer)
在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請(qǐng)求時(shí),操
作系統(tǒng)便在主存中為之分配一緩沖區(qū),如圖5-11所示。在
塊設(shè)備輸入時(shí),假定從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū)的時(shí)間
為T,操作系統(tǒng)將該緩沖區(qū)中的數(shù)據(jù)傳送到用戶區(qū)的時(shí)間為M,
而CPU對(duì)這一塊數(shù)據(jù)處理(計(jì)算)的時(shí)間為a由于麻口c是可以
并行的(見圖5T1),當(dāng)7>麗,系統(tǒng)對(duì)每一塊數(shù)據(jù)的處理時(shí)
間為濟(jì)北反之則為伊C,故可把系統(tǒng)對(duì)每一塊數(shù)據(jù)的處理時(shí)
間表示為Max(C,T)+Mo
用戶進(jìn)程
I/CS備
圖5-H單緩沖工作示意圖
2.雙緩沖(DoubleBuffer)
—為了加快岫入相岫出情度,提高設(shè)備利用k人們又引
入了雙緩沖區(qū)機(jī)制,也稱為緩沖對(duì)換(BufferSwapping)o在
設(shè)備輸入時(shí),先將數(shù)據(jù)送入第一緩沖區(qū),裝滿后便轉(zhuǎn)向第二
緩沖區(qū)。此時(shí)操作系統(tǒng)可以從第一緩沖區(qū)中移出數(shù)據(jù),并送
入用戶進(jìn)程(見圖5-12)。接著由CPU對(duì)數(shù)據(jù)進(jìn)行計(jì)算。在雙
緩沖時(shí),系統(tǒng)處理一塊數(shù)據(jù)的時(shí)間可以粗略地認(rèn)為是Max(C,
T)o如果C〈T,可使塊設(shè)備連續(xù)輸入;如果C>T,則可使CPU
不必等待設(shè)備輸入。對(duì)于字符設(shè)備,若采用行輸入方式,則
采用雙緩沖通常能消除用戶的等待時(shí)間,即用戶在輸入完第
一行之后,在CPU執(zhí)行第一行中的命令時(shí),用戶可繼續(xù)向第
二緩沖區(qū)輸入下一行數(shù)據(jù)。
用戶進(jìn)程
I/O設(shè)備
((緩沖1)與(緩沖2)4(緩沖3)n(緩沖4)
(b)
圖5-12雙緩沖工作示意圖
MLWAMm
(a)單緩沖(b)雙緩沖
圖5-13雙機(jī)通信時(shí)緩沖區(qū)的設(shè)置
5.3.3循環(huán)緩沖
1.循環(huán)緩沖的組成
(1)多個(gè)緩沖區(qū)。在循環(huán)緩沖中包括多個(gè)緩沖區(qū),其每
個(gè)緩沖區(qū)的大小相同。作為輸入的多緩沖區(qū)可分為三種類
型:用于裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G
以及計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C,如圖5-14所示。
(2)多個(gè)指針。作為輸入的緩沖區(qū)可設(shè)置三個(gè)指針:用于
指示計(jì)算進(jìn)程下一個(gè)可用緩沖區(qū)G的指針Nextg、指示輸入進(jìn)
程下次可用的空緩沖區(qū)R的指針Nexti,以及用于指示計(jì)算進(jìn)
程正在使用的緩沖區(qū)C的指針Current。
[JNexti[JNexti
G62|R|G62|R
G53|_G_jC=|G53|c]c二Current
介Nextg
圖5-14循環(huán)緩沖
2.循環(huán)緩沖區(qū)的使用
計(jì)算進(jìn)程和輸入進(jìn)程可利用下述兩個(gè)過程來使用循環(huán)緩
沖區(qū)。
讀與寫
(1)Getbuf過程。G緩沖區(qū)和R緩沖區(qū)。
(2)Releasebuf過程。G緩沖區(qū)和R緩沖區(qū)。
3.進(jìn)程同步
使用輸入循環(huán)緩沖,可使輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行。
相應(yīng)地,指針Nexti和指針Nextg將不斷地沿著順時(shí)針方向移
動(dòng),這樣就可能出現(xiàn)下述兩種情況:
(1)Nexti指針追趕上Nextg指針。這意味著輸入進(jìn)程輸入
數(shù)據(jù)的速度大于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,全部裝滿,再無
緩沖區(qū)可用。
(2)Nextg指針追趕上Nexti指針。這意味著輸入數(shù)據(jù)的速
度低于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,全部抽空,再無裝有數(shù)據(jù)
的緩沖區(qū)供計(jì)算進(jìn)程提取數(shù)據(jù)。
5.3.4緩沖池
1.緩沖池的組成
對(duì)于既可用于輸入又可用于輸出的公用緩沖池,其中至
少應(yīng)含有以下三種類型的緩沖區(qū):
①空(閑)緩沖區(qū);
②裝滿輸入數(shù)據(jù)的緩沖區(qū);
③裝滿輸出數(shù)據(jù)的緩沖區(qū)。
為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個(gè)隊(duì)
列,于是可形成以下三個(gè)隊(duì)列?
(1)空緩沖隊(duì)列emq。這是由空緩沖區(qū)所鏈成的隊(duì)列。
其隊(duì)首指針F(emq)和隊(duì)尾指針L(emq)分別指向該隊(duì)列的首緩
沖區(qū)和尾緩沖區(qū)。
(2)輸入隊(duì)列inq。這是由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成
的隊(duì)列。其隊(duì)首指針F(inq)和隊(duì)尾指針L(inq)分別指向該隊(duì)列
的首緩沖區(qū)和尾緩沖區(qū)。
(3)輸出隊(duì)列outq。這是由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈
以網(wǎng)隊(duì)少1J。只隊(duì)目于日力^Wrtq)和隊(duì)尾指針L(outq)分別指向
該隊(duì)列的首緩沖區(qū)和尾緩沖區(qū)。
除了上述三個(gè)隊(duì)列外,還應(yīng)具有四種工作緩沖區(qū):①用
于收容輸入數(shù)據(jù)的工作緩沖區(qū);②用于提取輸入數(shù)據(jù)的工作
緩沖區(qū);③用于收容輸出數(shù)據(jù)的工作緩沖區(qū);④用于提取
輸出數(shù)據(jù)的工作緩沖區(qū)。
ProcedureGetbuf(type)
begin
?^Wait(RS(type));
2.Getbuf過程Wait(MS(type));
B(number):=Takebuf(type);
和Putbuf過程Signal(MS(type));
end
每一緩沖隊(duì)列
ProcedurePutbuf(type,number)
設(shè)置一個(gè)互斥信號(hào)begin
量MS(type)和一個(gè)Wait(MS(type));
Addbuf(type,number);
資源信號(hào)量
Signal(MS(type));
RS(type)oSignal(RS(type));
end
3.緩沖區(qū)的工作方式P177
緩沖區(qū)可以工作在收容輸入、提取輸入、收容輸出和提
取輸出四種工作方式下,如圖5-15所示。
緩沖池
收容輸入提取輸入用
戶
程
提取輸出收容輸出序
圖5-15緩沖區(qū)的工作方式
5.4I/O軟件
5.4.1I/O軟件的設(shè)計(jì)目標(biāo)和原則
從系統(tǒng)的觀點(diǎn)出發(fā),采用多種技術(shù)和措施,解決由于外
部設(shè)備與CPU速度不匹配所引起的問題,提高主機(jī)和外設(shè)的
并行工作能力,提高系統(tǒng)效率,成為操作系統(tǒng)的一個(gè)重要目
標(biāo)。
具體而言,I/O軟件應(yīng)達(dá)到下面的幾個(gè)目標(biāo):
1)與具體設(shè)備無關(guān)
―對(duì)于I/O系統(tǒng)中許多種類不同的設(shè)備,作為程序員,只需
要知道如何使用這些資源來完成所需要的操作,而無需了解
設(shè)備的有關(guān)具體實(shí)現(xiàn)細(xì)節(jié)。例如,應(yīng)用程序訪問文件時(shí),不
必去考慮被訪問的是硬盤、軟盤還是CD-ROM;對(duì)于管理軟
件,也無需因?yàn)镮/O設(shè)備變化,而重新編寫涉及設(shè)備管理的程
序。
為了提高OS的可移植性和易適應(yīng)性,I/O軟件應(yīng)負(fù)責(zé)屏蔽
設(shè)備的具體細(xì)節(jié),向高層軟件提供抽象的邏輯設(shè)備,并完成
邏輯設(shè)備與具體物理設(shè)備的映射。
2)統(tǒng)一命名
—要實(shí)現(xiàn)上述的設(shè)備無關(guān)性,其中一項(xiàng)重要的工作就是如
何給I/O設(shè)備命名。不同的操作系統(tǒng)有不同的命名規(guī)則,一
般而言,是在系統(tǒng)中對(duì)各類設(shè)備采取預(yù)先設(shè)計(jì)的、統(tǒng)一的邏
輯名稱進(jìn)行命名,所有軟件都以邏輯名稱訪問設(shè)備。這種統(tǒng)
一命名與具體設(shè)備無關(guān),換言之,同一個(gè)邏輯設(shè)備的名稱,
在不同的情況下可能對(duì)應(yīng)于不同的物理設(shè)備。
3)對(duì)錯(cuò)誤的處理
一般而言,錯(cuò)誤多數(shù)是與設(shè)備緊密相關(guān)的,因此對(duì)于錯(cuò)
誤的處理,應(yīng)該盡可能在接近硬件的層面處理,在低層軟件
能夠解決的錯(cuò)誤就不讓高層軟件感知,只有低層軟件解決不
了的錯(cuò)誤才通知高層軟件解決。許多情況下,錯(cuò)誤恢復(fù)可以
在低層得到解決,而高層軟件不需要知道。
4)緩沖技術(shù)
由于CPU與設(shè)備之間的速度差異,無論是塊設(shè)備還是
字符設(shè)備,都需要使用緩沖技術(shù)。對(duì)于不同類型的設(shè)備,
其緩沖區(qū)(塊)的大小是不一樣的,塊設(shè)備的緩沖是以數(shù)據(jù)
塊為單位的,而字符設(shè)備的緩沖則以字節(jié)為單位。就是同
類型的設(shè)備,其緩沖區(qū)(塊)的大小也是存在差異的,如不
同的磁盤,其扇區(qū)的大小有可能不同。因此,I/O軟件應(yīng)能
屏蔽這種差異,向高層軟件提供統(tǒng)一大小的數(shù)據(jù)塊或字符
單元,使得高層軟件能夠只與邏輯塊大小一致的抽象設(shè)備
進(jìn)行交互。
5)設(shè)備的分配和釋放
對(duì)于系統(tǒng)中的共享設(shè)備,如磁盤等,可以同時(shí)為多個(gè)
用戶服務(wù)。對(duì)于這樣的設(shè)備,應(yīng)該允許多個(gè)進(jìn)程同時(shí)對(duì)其
提出I/O請(qǐng)求。但對(duì)于獨(dú)占設(shè)備,如鍵盤和打印機(jī)等,在某
一段時(shí)間只能供一個(gè)用戶使用,對(duì)其分配和釋放的不當(dāng),
將引起混亂,甚至死鎖。對(duì)于獨(dú)占設(shè)備和共享設(shè)備帶來的
許多問題,I/O軟件必須能夠同時(shí)進(jìn)行妥善的解決。
6)I/O控制方式
~針對(duì)具有不同傳輸速率的設(shè)備,綜合系統(tǒng)效率和系統(tǒng)代價(jià)
等因素,合理選擇I/O控制方式,如像打印機(jī)等低速設(shè)備應(yīng)采
用中斷驅(qū)動(dòng)方式,而對(duì)磁盤等高速設(shè)備則采用DMA控制方式
等,以提高系統(tǒng)的利用率。為方便用戶,I/O軟件也應(yīng)屏蔽這
種差異,向高層軟件提供統(tǒng)一的操作接口。
目前在I/O軟件中已普遍采用了層次式結(jié)構(gòu),將系統(tǒng)中
的反帝操作他,管理軟計(jì)萬為若干個(gè)層次,每一層都利用其下
層提供的服務(wù),完成輸入、輸出功能中的某些子功能,并屏
蔽這些功能實(shí)現(xiàn)的細(xì)節(jié),向高層提供服務(wù)。
在層次式結(jié)構(gòu)的I/O軟件中,只要層次間的接口不變,
對(duì)每個(gè)層次中的軟件進(jìn)行的修改都不會(huì)引起其下層或高層代
碼的變更,僅最低層才會(huì)涉及到硬件的具體特性。通常把
I/O軟件組織成四個(gè)層次:
(1)用戶層軟件:實(shí)現(xiàn)與用戶交互的接口,用戶可直接
調(diào)用在用戶層提供的、與I/O操作有關(guān)的庫函數(shù),對(duì)設(shè)備進(jìn)行
操作。
(2)設(shè)備獨(dú)立性軟件:負(fù)責(zé)實(shí)現(xiàn)與設(shè)備驅(qū)動(dòng)器的統(tǒng)一接
口、設(shè)備命名、設(shè)備的保護(hù)以及設(shè)備的分配與釋放等,同時(shí)
為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲(chǔ)空間。
(3)設(shè)備驅(qū)動(dòng)程序:與硬件直接相關(guān),負(fù)責(zé)具體實(shí)現(xiàn)系
統(tǒng)對(duì)設(shè)備發(fā)出的操作指令,驅(qū)動(dòng)I/O設(shè)備工作的驅(qū)動(dòng)程序。
(4)中斷處理程序:用于保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)
入相應(yīng)的中斷處理程序進(jìn)行處理,處理完后再恢復(fù)被中斷進(jìn)
程的現(xiàn)場后返回到被中斷進(jìn)程。
I/O應(yīng)答
用戶層軟件1產(chǎn)生I/O請(qǐng)求、格式化I/O、Spooling
1設(shè)備獨(dú)立性軟件映射、保護(hù)、分塊、緩沖、分配
1設(shè)備驅(qū)動(dòng)程序1設(shè)置設(shè)備寄存器,檢查寄存器狀態(tài)
1中斷處理程序
硬件
1執(zhí)行I/O操作
圖5-16I/O系統(tǒng)的層次及功能
5.4.2中斷處理程序P179*5個(gè)步驟
1.喚醒被阻塞的驅(qū)動(dòng)(程序)進(jìn)程
當(dāng)中斷處理程序開始執(zhí)行時(shí),首先去喚醒處于阻塞狀態(tài)
的驅(qū)動(dòng)(程序)進(jìn)程。如果是采用了信號(hào)量機(jī)制,則可通過執(zhí)
行signal操作,將處于阻塞狀態(tài)的驅(qū)動(dòng)(程序)進(jìn)程喚醒;在采
用信號(hào)機(jī)制時(shí),將發(fā)送一信號(hào)給阻塞進(jìn)程。
2.保護(hù)被中斷進(jìn)程的CPU環(huán)境
—通常由硬件自動(dòng)將處理機(jī)狀態(tài)字PSW和程序計(jì)數(shù)器(PC)
中的內(nèi)容,保存在中斷保留區(qū)(棧)中,然后把被中斷進(jìn)程的
CPU現(xiàn)場信息(即包括所有的CPU寄存器,如通用寄存器、段
寄存器等內(nèi)容)都?jí)喝胫袛鄺V?,因?yàn)樵谥袛嗵幚頃r(shí)可能會(huì)用
到這些寄存器。圖5-17給出了一個(gè)簡單的保護(hù)中斷現(xiàn)場的示
意圖。該程序是指令在N位置時(shí)被中斷的,程序計(jì)數(shù)器中的
內(nèi)容為N+1,所有寄存器的內(nèi)容都被保留在棧中。
PSW4
理京涂太史
T+M
T
Y—?PC(N+1)R
寄花器
程序計(jì)數(shù)器
開始PSW
PC(N+1)
返回
中斷服務(wù)子例程中斷棧
圖5-17中斷現(xiàn)場保護(hù)示意圖
3.轉(zhuǎn)入相應(yīng)的設(shè)備處理程序
由處理機(jī)對(duì)各個(gè)中斷源進(jìn)行測試,以確定引起本次中斷
的I/O設(shè)備,并發(fā)送一應(yīng)答信號(hào)給發(fā)出中斷請(qǐng)求的進(jìn)程,使之
消除該中斷請(qǐng)求信號(hào),然后將相應(yīng)的設(shè)備中斷處理程序的入
口地址裝入到程序計(jì)數(shù)器中,使處理機(jī)轉(zhuǎn)向中斷處理程序。
4.中斷處理
―對(duì)于不同的設(shè)備,有不同的中斷處理程序點(diǎn)程序首先
從設(shè)備控制器中讀出設(shè)備狀態(tài),以判別本次中斷是正常完成
中斷,還是異常結(jié)束中斷。若是前者,中斷程序便進(jìn)行結(jié)束
處理;若還有命令,可再向控制器發(fā)送新的命令,進(jìn)行新一
輪的數(shù)據(jù)傳送。若是異常結(jié)束中斷,則根據(jù)發(fā)生異常的原因
做相應(yīng)的處理。
5.恢復(fù)被中斷進(jìn)程的現(xiàn)場
當(dāng)中斷處理完成以后,便可將保存在中斷棧中的被中
斷進(jìn)程的現(xiàn)場信息取出,并裝入到相應(yīng)的寄存器中,其中
包括該程序下一次要執(zhí)行的指令的地址N+1、處理機(jī)狀態(tài)
字PSW,以及各通用寄存器和段寄存器的內(nèi)容。這樣,當(dāng)
處理機(jī)再執(zhí)行本程序時(shí),便從N+1處開始,最終返回到被
中斷的程序。
I/O操作完成后,驅(qū)動(dòng)程序必須檢查本次I/O操作中是否
發(fā)生了錯(cuò)誤,并向上層軟件報(bào)告,最終向調(diào)用者報(bào)告本次I/O
的執(zhí)行情況。除了上述的第4步外,其它各步驟對(duì)所有I/O設(shè)
備都是相同的,因而對(duì)于某種操作系統(tǒng),例如UNIX系統(tǒng),是
把這些共同的部分集中起來,形成中斷總控程序。每當(dāng)要進(jìn)
行中斷處理時(shí),都要首先進(jìn)入中斷總控程序。而對(duì)于第4步,
則對(duì)不同設(shè)備須采用不同的設(shè)備中斷處理程序繼續(xù)執(zhí)行。圖
5-18示出了中斷處理流程。
中斷請(qǐng)求信號(hào)
圖5-18中斷處理流程
5.4.3設(shè)備驅(qū)動(dòng)程序
設(shè)備驅(qū)動(dòng)程序通常又稱為設(shè)備處理程序,它是I/O進(jìn)程與
設(shè)備控制器之間的通信程序,又由于它常以進(jìn)程的形式存在,
故以后就簡稱之為設(shè)備驅(qū)動(dòng)進(jìn)程。
其主要任務(wù)是接收上層軟件發(fā)來的抽象I/O要求,如read
或write命令,在把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,
啟動(dòng)設(shè)備去執(zhí)行;止匕外,它也將由設(shè)備控制器發(fā)來的信號(hào)傳
送給上層軟件。
1.設(shè)備驅(qū)動(dòng)程序的功能(5個(gè))
----為了央現(xiàn)T內(nèi)進(jìn)程勺稽當(dāng)控制器之間的通信,設(shè)備驅(qū)動(dòng)程
序應(yīng)具有以下功能:
(1)接收由設(shè)備獨(dú)立性軟件發(fā)來的命令和參數(shù),并將命令
中的抽象要求轉(zhuǎn)換為具體要求,例如,將磁盤塊號(hào)轉(zhuǎn)換為磁盤
的盤面、磁道號(hào)及扇區(qū)號(hào)。
(2)檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的狀態(tài),傳
遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。
(3)發(fā)出I/O命令。如果設(shè)備空閑,便立即啟動(dòng)I/O設(shè)備去完
成指定的I/O操作;如果設(shè)備處于忙碌狀態(tài),則將請(qǐng)求者的請(qǐng)求
塊掛在設(shè)備隊(duì)列上等待。
(4)及時(shí)響應(yīng)由控制器或通道發(fā)來的中斷請(qǐng)求,并根據(jù)
其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。"
(5)對(duì)于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),驅(qū)動(dòng)程序還應(yīng)能夠根
據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。
2.設(shè)備處理方式
⑴為每一類設(shè)備設(shè)置一個(gè)進(jìn)程,專門用于執(zhí)行這類設(shè)
備的I/O操作。比如,為所有的交互式終端設(shè)置一個(gè)交互式終
端進(jìn)程;又如,為同一類型的打印機(jī)設(shè)置一個(gè)打印進(jìn)程。
(2)在整個(gè)系統(tǒng)中設(shè)置一個(gè)I/O進(jìn)程,專門用于執(zhí)行系統(tǒng)
中所有各類設(shè)備的I/O操作。也可以設(shè)置一個(gè)輸入進(jìn)程和一個(gè)
輸出進(jìn)程,分別處理系統(tǒng)中所有各類設(shè)備的輸入或輸出操作。
(3)不設(shè)置專門的設(shè)備處理進(jìn)程,而只為各類設(shè)備設(shè)置相
應(yīng)的設(shè)備處理程序(模塊),供用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。
3.設(shè)備驅(qū)動(dòng)程序的特點(diǎn)
"設(shè)備驅(qū)動(dòng)程序?qū)儆诘图?jí)的系統(tǒng)例程,它與一般的應(yīng)用程
序及系統(tǒng)程序之間有下述明顯差異:
(1)驅(qū)動(dòng)程序主要是指在請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之
間的一個(gè)通信和轉(zhuǎn)換程序。它將進(jìn)程的I/O請(qǐng)求經(jīng)過轉(zhuǎn)換后,
傳送給控制器;又把控制器中所記錄的設(shè)備狀態(tài)和I/O操作完
成情況及時(shí)地反映給請(qǐng)求I/O的進(jìn)程。
(2)驅(qū)動(dòng)程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相
大,因IIIJ對(duì)個(gè)I口」火盤的設(shè)備應(yīng)配置不同的驅(qū)動(dòng)程序。例如,
可以為相同的多個(gè)終端設(shè)置一個(gè)終端驅(qū)動(dòng)程序,但有時(shí)即使
是同一類型的設(shè)備,由于其生產(chǎn)廠家不同,它們也可能并不
完全兼容,此時(shí)也須為它們配置不同的驅(qū)動(dòng)程序。
(3)驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。
常用的I/O控制方式是中斷驅(qū)動(dòng)和DMA方式,這兩種方式的
驅(qū)動(dòng)程序明顯不同,因?yàn)楹笳邞?yīng)按數(shù)組方式啟動(dòng)設(shè)備及進(jìn)行
中斷處理。
(4)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分
必須用字編語言書寫。口前有很多驅(qū)動(dòng)程序的基本部分,已
經(jīng)固化在ROM中。
(5)驅(qū)動(dòng)程序應(yīng)允許可重入。一個(gè)正在運(yùn)行的驅(qū)動(dòng)程序
常會(huì)在一次調(diào)用完成前被再次調(diào)用。例如,網(wǎng)絡(luò)驅(qū)動(dòng)程序正
在處理一個(gè)到來的數(shù)據(jù)包時(shí),另一個(gè)數(shù)據(jù)包可能到達(dá)。
(6)驅(qū)動(dòng)程序不允許系統(tǒng)調(diào)用。但是為了滿足其與內(nèi)核其
它部分的交互,可以允許對(duì)某些內(nèi)核過程的調(diào)用,如通過調(diào)
用內(nèi)核過程來分配和釋放內(nèi)存頁面作為緩沖區(qū),以及調(diào)用其
它過程來管理MMU定時(shí)器、DMA控制器、中斷控制器等。
4.設(shè)備驅(qū)動(dòng)程序的處理過程
不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動(dòng)程荔"但大體上它
們都可以分成兩部分,其中,除了要有能夠驅(qū)動(dòng)I/O設(shè)備工
作的驅(qū)動(dòng)程序外,還需要有設(shè)備中斷處理程序,以處理I/O
完成后的工作。
設(shè)備驅(qū)動(dòng)程序的主要任務(wù)是啟動(dòng)指定設(shè)備。但在啟動(dòng)之
前,還必須完成必要的準(zhǔn)備工作,如檢測設(shè)備狀態(tài)是否為
“忙”等。在完成所有的準(zhǔn)備工作后,才最后向設(shè)備控制器
發(fā)送一條啟動(dòng)命令。
設(shè)備驅(qū)動(dòng)程序的處理過程(P183)
1)將抽象要求轉(zhuǎn)換為具體要求
2)檢查I/O請(qǐng)求的合法性
3)讀出和檢查設(shè)備的狀態(tài)
4)傳送必要的參數(shù)
5)工作方式的設(shè)置
6)啟動(dòng)I/O設(shè)備
5.4.4設(shè)備獨(dú)立性軟件
1犯至汕fr枇的施金_______________________
基本含義:應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。為了
實(shí)現(xiàn)設(shè)備獨(dú)立性而引入了邏輯設(shè)備和物理設(shè)備這兩個(gè)概念。
在應(yīng)用程序中,使用邏輯設(shè)備名稱來請(qǐng)求使用某類設(shè)備;而
系統(tǒng)在實(shí)際執(zhí)行時(shí),還必須使用物理設(shè)備名稱。
兩方面的好處:
1)設(shè)備分配時(shí)的靈活性
2)易于實(shí)現(xiàn)I/O重定向
2.設(shè)備獨(dú)立性軟件
驅(qū)動(dòng)程序是一個(gè)與硬件(或設(shè)備)緊密相關(guān)的軟件。為了
實(shí)現(xiàn)設(shè)備獨(dú)立性,必須再在驅(qū)動(dòng)程序之上設(shè)置一層軟件,稱
為設(shè)備獨(dú)立性軟件。
主要功能可分為以下兩個(gè)方面:
(1)執(zhí)行所有設(shè)備的公有操作:
八西U雙畬口'J刀一日匕與回收;②將邏輯設(shè)備名映射為
物理設(shè)備名,進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動(dòng)程序;③
保護(hù)設(shè)備,禁止用戶直接訪問設(shè)備;④緩沖管理;⑤差錯(cuò)控
制,設(shè)備獨(dú)立性軟件只處理那些設(shè)備驅(qū)動(dòng)程序無法處理的錯(cuò)
誤;⑥提供獨(dú)立于設(shè)備的邏輯塊,向高層軟件提供大小統(tǒng)一
的邏輯數(shù)據(jù)塊。
(2)向用戶層(或文件層)軟件提供統(tǒng)一接口。
無論何種設(shè)備,它們向用戶所提供的接口應(yīng)該是相同的。
例如,對(duì)各種設(shè)備的讀操作,在應(yīng)用程序中都使用read;而
對(duì)各種設(shè)備的寫操作,也都使用write。
3.邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)
1)邏輯設(shè)備表
為了實(shí)現(xiàn)設(shè)備的獨(dú)立性,系統(tǒng)必須設(shè)置一張邏輯設(shè)備表
(LUT,LogicalUnitTable),用于將應(yīng)用程序中所使用的邏輯
設(shè)備名映射為物理設(shè)備名。在該表的每個(gè)表目中包含了三項(xiàng):
邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址,如圖
5-19⑶所示。
驅(qū)動(dòng)程序
邏輯設(shè)備名物理設(shè)備名邏輯設(shè)備名系統(tǒng)設(shè)備表指針
入口地址
/dev/tty31024/dev/tty3
/dev/printe52046/dev/printe5
****
****
(a)(b)
圖5-19邏輯設(shè)備表
2)LUT的設(shè)置問題
LUT的設(shè)置可采取兩種方式:一
第一種方式是在整個(gè)系統(tǒng)中只設(shè)置一張LUT。
不能同名,在多用戶環(huán)境下這通常是難以做到的。
第二種方式是為每個(gè)用戶設(shè)置一張LUT。
每個(gè)用戶利用系統(tǒng)設(shè)備表建立的邏輯設(shè)備表可以采用
圖5-19(b)中的格式。
5.4.5用戶層的I/O軟件
一般而言,大部分的I/O軟件都在操作系統(tǒng)內(nèi)部,但仍有
一小部分在用戶層,包括與用戶程序鏈接在一起的庫函數(shù),
以及完全運(yùn)行于內(nèi)核之外的一些程序。
用戶層軟件必須通過一組系統(tǒng)調(diào)用來取得操作系統(tǒng)服務(wù)。
C語言中的庫函數(shù),在使用C語言編寫的用戶程序中,
可以直接使用這些系統(tǒng)調(diào)用。
5.5設(shè)備分配
5.5.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)
1.設(shè)備控制表(DCT)
系統(tǒng)為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄
本設(shè)備的情況,如圖5-20所示。
設(shè)備控制表中,除了有用于指示設(shè)備類型的字段type和
設(shè)備標(biāo)識(shí)字段deviceid外,還應(yīng)含有下列字段:
(1)設(shè)備隊(duì)列隊(duì)首指針。(2)設(shè)備狀態(tài)。
(3)與設(shè)備連接的控制器表指針。(4)重復(fù)執(zhí)行次數(shù)。
設(shè)設(shè)備類型:type
備
控設(shè)備標(biāo)識(shí)符:deviceid
制設(shè)備狀態(tài):等待/不等待忙/閑
表
集指向控制器表的指針
合
重復(fù)執(zhí)行次數(shù)或時(shí)間
設(shè)備隊(duì)列的隊(duì)首指針
圖5-20
設(shè)備控制表
2.控制器控制表、通道控制表和系統(tǒng)設(shè)備表
(D控制器控制衣(0X7。。系統(tǒng)為每一個(gè)控制器都設(shè)置
了一張用于記錄本控制器情況的控制器控制表,如圖5-21(a)
所示。
(2)通道控制表(CHCT)。每個(gè)通道都配有一張通道控制
表,如圖5-21(b)所示。
(3)系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),其中
記錄了系統(tǒng)中全部設(shè)備的情況。每個(gè)設(shè)備占一個(gè)表目,其中
包括有設(shè)備類型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表及設(shè)備驅(qū)動(dòng)程序
的入口等項(xiàng),如圖5-21(c)所示。
控制器標(biāo)識(shí)符:通道標(biāo)識(shí)符:*1=11
controlleridchannelid表目1y
?設(shè)備類
z
控制器狀態(tài):忙/閑通道狀態(tài):忙/閑?
?
?設(shè)備標(biāo)識(shí)符
與控制器連接的通道表指針與通道連接的控制器表首址?
表目iDCT
控制器隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)首指針
?
*驅(qū)動(dòng)程序入口
控制器隊(duì)列的隊(duì)尾指針通道隊(duì)列的隊(duì)尾指針、4
(a)控制器表COCT(b)通道表CHCT(c)系統(tǒng)設(shè)備表SDT
圖5-21COCT、CHCT和SDT
5.5.2設(shè)備分配時(shí)應(yīng)考慮的因素
為了使系統(tǒng)有條不紊地工作,系統(tǒng)在分配設(shè)備時(shí),應(yīng)
考慮這樣幾個(gè)因素:①設(shè)備的固有屬性;②設(shè)備分配算法;
③設(shè)備分配時(shí)的安全性;④設(shè)備獨(dú)立性。
1.設(shè)備的固有屬性
仕分配攻備叮,自元也有虐與取備分配有關(guān)的設(shè)備屬性。
設(shè)備的固有屬性可分成三種:
第一種是獨(dú)占性,是指這種設(shè)備在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)
程獨(dú)占,此即第二章所說的“臨界資源”;
第二種是共享性,指這種設(shè)備允許多個(gè)進(jìn)程同時(shí)共享;
第三種是可虛擬設(shè)備,指設(shè)備本身雖是獨(dú)占設(shè)備,但經(jīng)過某
種技術(shù)處理,可以把它改造成虛擬設(shè)備。
2.設(shè)備分配算法
對(duì)設(shè)備進(jìn)行分配的算法,與進(jìn)程調(diào)度的算法有些相似之
處,但前者相對(duì)簡單,通常只采用以下兩種分配算法:
(1)先來先服務(wù)。
(2)優(yōu)先級(jí)高者優(yōu)先。
3.設(shè)備分配中的安全性
~從進(jìn)程運(yùn)行的安全性考慮,設(shè)備分配有以下兩種方式。
1)安全分配方式
在這種分配方式中,每當(dāng)進(jìn)程發(fā)出I/O請(qǐng)求后,便進(jìn)入
阻塞狀態(tài),直到其I/O操作完成時(shí)才被喚醒。在采用這種分
配策略時(shí),一旦進(jìn)程已經(jīng)獲得某種設(shè)備(資源)后便阻塞,使
該進(jìn)程不可能再請(qǐng)求任何資源,而在它運(yùn)行時(shí)又不保持任何
資源。因此,這種分配方式已經(jīng)摒棄了造成死鎖的四個(gè)必要
條件之一的“請(qǐng)求和保持”條件,從而使設(shè)備分配是安全的。
其缺點(diǎn)是進(jìn)程進(jìn)展緩慢,即CPU與I/O設(shè)備是串行工作的。
2)不安全分配方式
在這種分配方式中,龍程在發(fā)出I/O請(qǐng)求后仍繼續(xù)運(yùn)行,
需要時(shí)又發(fā)出第二個(gè)I/O請(qǐng)求、第三個(gè)I/O請(qǐng)求等。僅當(dāng)進(jìn)程
所請(qǐng)求的設(shè)備已被另一進(jìn)程占用時(shí),請(qǐng)求進(jìn)程才進(jìn)入阻塞狀
態(tài)。這種分配方式的優(yōu)點(diǎn)是,一個(gè)進(jìn)程可同時(shí)操作多個(gè)設(shè)備,
使進(jìn)程推進(jìn)迅速。
其缺點(diǎn)是可能造成死鎖。因此,在設(shè)備分配程序中,還
應(yīng)再增加一個(gè)功能,以用于對(duì)本次的設(shè)備分配是否會(huì)發(fā)生死
鎖進(jìn)行安全性計(jì)算,僅當(dāng)計(jì)算結(jié)果說明分配是安全的情況下
才進(jìn)行設(shè)備分配。
5.5.3獨(dú)占設(shè)備的分配程序
L基本的設(shè)備分配程序"
1)分配設(shè)備
首先根據(jù)I/O請(qǐng)求中的物理設(shè)備名,查找系統(tǒng)設(shè)備表
(SDT),從中找出該設(shè)備的DCT,再根據(jù)DCT中的設(shè)備狀態(tài)字段,
可知該設(shè)備是否正忙。若忙,便將請(qǐng)求I/O進(jìn)程的PCB掛在設(shè)
備隊(duì)列上;否則,便按照一定的算法來計(jì)算本次設(shè)備分配的
安全性。如果不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),便將設(shè)備分配
給請(qǐng)求進(jìn)程;否則,仍將其PCB插入設(shè)備等待隊(duì)列。
2)分配控制器
再到其DCT中找
出與該設(shè)備連接的控制器的COCT,從COCT的狀態(tài)字段中可知
該控制器是否忙碌。若忙,便將請(qǐng)求I/O進(jìn)程的PCB掛在該控
制器的等待隊(duì)列上;否則,便將該控制器分配給進(jìn)程。
3)分配通道
在該COCT中又可找到與該控制器連接的通道的CHCT,
再根據(jù)CHCT內(nèi)的狀態(tài)信息,可知該通道是否忙碌。若忙,便
將請(qǐng)求I/O的進(jìn)程掛在該通道的等待隊(duì)列上;否則,將該通道
分配給進(jìn)程。只有在設(shè)備、控制器和通道三者都分配成功時(shí),
這次的設(shè)備分配才算成功。然后,便可啟動(dòng)該I/O設(shè)備進(jìn)行數(shù)
據(jù)傳送。
2.設(shè)備分配程序的改進(jìn)
―仔細(xì)研究上述基本的設(shè)備分配程序后可以發(fā)現(xiàn):①進(jìn)程
是以物理設(shè)備名來提出I/O請(qǐng)求的;②采用的是單通路的
I/O系統(tǒng)結(jié)構(gòu),容易產(chǎn)生“瓶頸”現(xiàn)象。
改進(jìn):
1)增加設(shè)備的獨(dú)立性
為了獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O。
2)考慮多通路情況
采用多通路的I/O系統(tǒng)結(jié)構(gòu)。
5.5.4SPOOLing技術(shù)
1什4縣SPCZ;"
為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾而引入
了脫機(jī)輸入、脫機(jī)輸出技術(shù)。該技術(shù)是利用專門的外圍控制機(jī),
將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;或者相反。事實(shí)
上,當(dāng)系統(tǒng)中引入了多道程序技術(shù)后,完全可以利用其中的一
道程序,來模擬脫機(jī)輸入時(shí)的外圍控制機(jī)功能,把低速I/O設(shè)
備上的數(shù)據(jù)傳送到高速磁盤上;再用另一道程序來模擬脫機(jī)輸
出時(shí)外圍控制機(jī)的功能,把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上。
這樣,便可在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、輸出功能。
此時(shí)的外圍操作與CPU對(duì)數(shù)據(jù)的處理同時(shí)進(jìn)行,我們把這種在
聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作稱為SPOOLing(Simultaneous
PeripheralOperatingOnLine),或稱為假脫機(jī)操作。
2.SPOOLing系統(tǒng)的組成
90Ling技術(shù)是對(duì)脫機(jī)輸入、輸出系
統(tǒng)的模擬。相應(yīng)地,SPOOLing系統(tǒng)必須建立在具有多道程
序功能的操作系統(tǒng)上,而且還應(yīng)有高速隨機(jī)外存的支持,
這通常是采用磁盤存儲(chǔ)技術(shù)。
SPOOLing系統(tǒng)主要有以下三部分:
(1)輸入井和輸出井。這是在磁盤上開辟的兩個(gè)大存儲(chǔ)
空間。輸入井是模擬脫機(jī)輸入時(shí)的磁盤設(shè)備,用于暫存I/O
設(shè)備輸入的數(shù)據(jù);輸出井是模擬脫機(jī)輸出時(shí)的磁盤,用于
暫存用戶程序的輸出數(shù)據(jù)。
(2)輸入緩沖區(qū)和輸出緩沖區(qū)。為了緩和CPU和磁盤之間
通麻不芯配的予后,在內(nèi)存中要開辟兩個(gè)緩沖區(qū):輸入緩沖
區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)
據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送
來的數(shù)據(jù),以后再傳送給輸出設(shè)備。
(3)輸入進(jìn)程SPi和輸出進(jìn)程SPo。這里利用兩個(gè)進(jìn)程來模
擬脫機(jī)I/O時(shí)的外圍控制機(jī)。其中,進(jìn)程SPi模擬脫機(jī)輸入時(shí)
的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)
再送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時(shí),直接從輸入井讀入
內(nèi)存;進(jìn)程SPo模擬脫機(jī)輸出時(shí)的外圍控制機(jī),把用戶要求輸
出的數(shù)據(jù)先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時(shí),再將輸
出井中的數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。
圖5-22SPOOLing系統(tǒng)的組成
3.共享打印機(jī)
當(dāng)用戶進(jìn)程請(qǐng)求打印輸出時(shí),SPOOLing系統(tǒng)同意為它打
印輸出,但并不真正立即把打印機(jī)分配給該用戶進(jìn)程,而只
為它做兩件事:①由輸出進(jìn)程在輸出井中為之申請(qǐng)一個(gè)空閑
磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;②輸出進(jìn)程再為用
戶進(jìn)程申請(qǐng)一張空白的用戶請(qǐng)求打印表,并將用戶的打印要
求填入其中,再將該表掛到請(qǐng)求打印隊(duì)列上。如果還有進(jìn)程
要求打印輸出,系統(tǒng)仍可接受該請(qǐng)求,也同樣為該進(jìn)程做上
述兩件事。
輸出進(jìn)程:
如果打印機(jī)空閑,輸出進(jìn)程將從請(qǐng)求打印隊(duì)列的隊(duì)首取
出一張請(qǐng)求打印表,根據(jù)表中的要求將要打印的數(shù)據(jù),從輸
出井傳送到內(nèi)存緩沖區(qū),再由打印機(jī)進(jìn)行打印。打印完后,
輸出進(jìn)程再查看請(qǐng)求打印隊(duì)列中是否還有等待打印的請(qǐng)求表。
若有,又取出隊(duì)列中的第一張表,并根據(jù)其中的要求進(jìn)行打
印,如此下去,直至請(qǐng)求打印隊(duì)列為空,輸出進(jìn)程才將自己
阻塞起來。僅當(dāng)下次再有打印請(qǐng)求時(shí),輸出進(jìn)程才被喚醒。
4.SPOOLing系統(tǒng)的特點(diǎn)
SPOOLing系統(tǒng)具有如下主要特點(diǎn):
(1)提高了I/O的速度。這里,對(duì)數(shù)據(jù)所進(jìn)行的I/O操作,
已從對(duì)低速I/O設(shè)備進(jìn)行的I/O操作,演變?yōu)閷?duì)輸入井或輸出
井中數(shù)據(jù)的存取,如同脫機(jī)輸入輸出一樣,提高了I/O速度,
緩和了CPU與低
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北藝術(shù)職業(yè)學(xué)院《行政學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 喀什理工職業(yè)技術(shù)學(xué)院《針織成形服裝產(chǎn)品開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 花草施工方案
- 江西電力職業(yè)技術(shù)學(xué)院《物理化學(xué)(醫(yī)學(xué))》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京林業(yè)大學(xué)《管理工程數(shù)學(xué)基礎(chǔ)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 洛陽理工學(xué)院《學(xué)與教的心理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京審計(jì)大學(xué)金審學(xué)院《組織行為與人際技巧》2023-2024學(xué)年第二學(xué)期期末試卷
- 統(tǒng)編版五年級(jí)上冊(cè)21 古詩詞三首《長相思》課件
- 甘肅有色冶金職業(yè)技術(shù)學(xué)院《別墅空間設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 無錫工藝職業(yè)技術(shù)學(xué)院《法國文學(xué)經(jīng)典》2023-2024學(xué)年第二學(xué)期期末試卷
- 幼兒園小班語言:《我上幼兒園》 PPT課件
- 高標(biāo)準(zhǔn)農(nóng)田項(xiàng)目規(guī)劃設(shè)計(jì)和評(píng)審要點(diǎn)
- 小學(xué)三年級(jí)下冊(cè)綜合實(shí)踐活動(dòng).水果拼盤-(14張)ppt
- 部編版二年級(jí)語文下冊(cè)第三單元課文《傳統(tǒng)節(jié)日》PPT課件
- 北京市城市建設(shè)節(jié)約用地標(biāo)準(zhǔn)
- 開學(xué)第一課我們開學(xué)啦主題班會(huì)PPT課件(帶內(nèi)容)
- 電源線檢驗(yàn)報(bào)告RVV
- 體育訓(xùn)練隊(duì)隊(duì)規(guī)
- 八字命理漫畫版
- 電梯工程開工報(bào)告(直梯)(共1頁)
- 復(fù)件德力西質(zhì)量獎(jiǎng)自評(píng)報(bào)告2戰(zhàn)略
評(píng)論
0/150
提交評(píng)論