操作系統(tǒng)第六章_第1頁
操作系統(tǒng)第六章_第2頁
操作系統(tǒng)第六章_第3頁
操作系統(tǒng)第六章_第4頁
操作系統(tǒng)第六章_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1

第六章

輸入輸出系統(tǒng)I/O系統(tǒng)管理的主要對象是I/O設(shè)備和相應(yīng)的設(shè)備控制器.主要任務(wù):

完成用戶提出的I/O請求

提高I/O速率

提高設(shè)備的利用率

能為更高層的進(jìn)程方便地使用這些設(shè)備提供手段2I/O系統(tǒng)的功能、模型和接口I/O設(shè)備和設(shè)備控制器

中斷機(jī)構(gòu)和中斷處理程序

設(shè)備驅(qū)動程序

與設(shè)備無關(guān)的I/O軟件用戶層的I/O軟件緩沖區(qū)管理磁盤存儲器的性能和調(diào)度本章主要內(nèi)容:36.1I/O系統(tǒng)的功能、模型和接口磁盤驅(qū)動器打印機(jī)系統(tǒng)總線圖7-1總線型I/O系統(tǒng)結(jié)構(gòu)

在計算機(jī)系統(tǒng)中,除了需要直接用于I/O和存儲信息的設(shè)備外,還需要有相應(yīng)的設(shè)備控制器.在大、中型計算機(jī)中還需要有I/O通道,由這些設(shè)備及相應(yīng)的總線構(gòu)成了I/O系統(tǒng).4CPU存儲器磁盤控制器打印機(jī)控制器其它控制器磁盤驅(qū)動器打印機(jī)系統(tǒng)總線總線型I/O系統(tǒng)結(jié)構(gòu):I/O系統(tǒng)的結(jié)構(gòu)(1)微型機(jī)I/O系統(tǒng)(兩級結(jié)構(gòu))5CPU和內(nèi)存是直接連接到總線上.I/O設(shè)備通過設(shè)備控制器連接到總線上,CPU并不直接與I/O設(shè)備進(jìn)行通信,而是與設(shè)備控制器進(jìn)行通信,并通過設(shè)備控制器去控制相應(yīng)的設(shè)備.ISA(IndustryStandardArchitecture)1984年為微型計算機(jī)設(shè)計的總線結(jié)構(gòu),帶寬為8位,最高傳輸率為2Mb/s.EISA總線(ExtendedISA)帶寬為32位,最高傳輸率為32Mb/s.可連接12臺外部設(shè)備。6局部總線:多媒體技術(shù)要求外設(shè)傳輸更快,需要總線具有更高的傳輸速率,EISA總線難以滿足要求,產(chǎn)生了局部總線:將多媒體、高速LAN網(wǎng)卡、高性能圖形卡等,從ISA總線上卸下來,再通過局部總線控制器直接接到CPU總線上,使之與高速CPU總線匹配,而打印機(jī)、FAX/Modem、CD-ROM等其它設(shè)備仍然掛在ISA總線上。

在局部總線中較有名的有:VESA和PCI總線。VESA總線(VideoElectronicStandardAssociation)90年代推出,帶寬為32位,最高傳輸率為132Mb/s.問題:可連接2-4臺外部設(shè)備。不能支持Pentium微機(jī).7PCI(PeripheralComponentInterface)

隨著Pentium系列芯片的推出,Intel公司在1992和1994年分別頒布了PCI總線的V1.0和V2.0規(guī)范.支持64位系統(tǒng).PCI在CPU和外設(shè)之間插入一復(fù)雜的管理層,用于協(xié)調(diào)數(shù)據(jù)傳輸和提供一致的接口.在管理層中配置有數(shù)據(jù)緩沖,通過該緩沖可將總線的驅(qū)動能力放大,使PCI能支持10種外設(shè),并使高速時鐘頻率的CPU能夠很好地運(yùn)行.PCI既可連接ISA、EISA等傳統(tǒng)型總線,又可支持Pentium的64位。8問題:

如果外設(shè)太多,則都通過一條總線直接與CPU通信,造成總線和CPU負(fù)擔(dān).9(2)主機(jī)I/O系統(tǒng)(四級結(jié)構(gòu))計算機(jī)I/O通道2I/O通道1控制器控制器控制器控制器設(shè)備設(shè)備具有通道的I/O系統(tǒng)結(jié)構(gòu):106.1.1I/O系統(tǒng)的基本功能為了滿足系統(tǒng)和用戶的要求,I/O系統(tǒng)具備以下基本功能:隱藏物理設(shè)備的細(xì)節(jié)與設(shè)備的無關(guān)性提高處理機(jī)和I/O設(shè)備的利用率對I/O設(shè)備進(jìn)行控制確保對設(shè)備的正確共享錯誤處理116.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型通常把I/O軟件組織成四個層次:用戶層I/O軟件、設(shè)備獨(dú)立性軟件、設(shè)備驅(qū)動程序、中斷處理程序用戶層軟件設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動程序中斷處理程序硬件產(chǎn)生I/O請求、格式化I/O、SpoolingI/O應(yīng)答映射、保護(hù)、分塊、緩沖、分配設(shè)置設(shè)備寄存器;檢查狀態(tài)執(zhí)行I/O操作126.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O系統(tǒng)中各種模塊之間的層次視圖:

1)系統(tǒng)的上、下接口

I/O系統(tǒng)接口;

軟件/硬件(RW/HW)接口。

2)I/O系統(tǒng)的分層

中斷處理層析;

設(shè)備驅(qū)動程序;

設(shè)備獨(dú)立性軟件。

136.1.3I/O系統(tǒng)接口系統(tǒng)接口:

1)塊設(shè)備接口塊設(shè)備;

隱藏了磁盤的二維結(jié)構(gòu);

將抽象命令映射為低層操作。

2)流設(shè)備接口

字符設(shè)備;

get和put操作;

in-control指令。

3)網(wǎng)絡(luò)通信接口

146.2I/O設(shè)備和設(shè)備控制器6.2.1

I/O設(shè)備

1.

I/O設(shè)備的類型:按使用特性分類

存儲設(shè)備:也稱外存、輔存,是用以存儲信息的主要設(shè)備。I/O設(shè)備:可分為輸入設(shè)備、輸出設(shè)備和交互式設(shè)備。

156.2I/O設(shè)備和設(shè)備控制器按傳輸速率分類

低速設(shè)備:指傳輸速率為每秒鐘幾個字

節(jié)至數(shù)百個字節(jié)的一類設(shè)備。

中速設(shè)備:指傳輸速率在每秒鐘數(shù)千個

字節(jié)至數(shù)十千個字節(jié)的一類設(shè)

備。

高速設(shè)備:指傳輸速率在數(shù)百千個字節(jié)

至數(shù)兆字節(jié)的一類設(shè)備。16按信息交換的單位分類:

塊設(shè)備:信息的存取以數(shù)據(jù)塊為單位。

屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是

磁盤,每個盤塊的大小為512B~4KB。

磁盤設(shè)備的基本特征:傳輸速率

較高;可尋址;I/O系采用DMA方式。

字符設(shè)備:基本單位是字符,用于數(shù)據(jù)的輸

入和輸出。屬于無結(jié)構(gòu)設(shè)備。交

互式終端、打印機(jī)等都屬于字符

設(shè)備。它的基本特征是:傳輸速

率較低;不可尋址;字符設(shè)備

在I/O時,常采用中斷驅(qū)動方式。17按設(shè)備的共享屬性分類:

獨(dú)占設(shè)備:指在一段時間內(nèi)只允許一個用戶

(進(jìn)程)訪問的設(shè)備,即臨界資源。

共享設(shè)備:指在一段時間內(nèi)允許多個進(jìn)程同

時訪問的設(shè)備。共享設(shè)備必須是

可尋址的和可隨機(jī)訪問的設(shè)備。

典型的共享設(shè)備是磁盤。

虛擬設(shè)備:指通過虛擬技術(shù)將一臺獨(dú)占設(shè)備

變換為若干臺邏輯設(shè)備,供若干

個用戶(進(jìn)程)同時使用,通常

把這種經(jīng)過虛擬技術(shù)處理后的設(shè)

備,稱為虛擬設(shè)備。18

2.設(shè)備與控制器之間的接口

在該接口中有三種類型的信號:數(shù)據(jù)信號:對輸入而言,由設(shè)備發(fā)送給設(shè)備控制器;對輸出而言,由設(shè)備控制器所接收的比特流。控制信號:是設(shè)備控制器發(fā)送給設(shè)備的、用語規(guī)定設(shè)備執(zhí)行讀或?qū)懖僮鞯男盘?,或?zhí)行其它操作的信號。狀態(tài)信號:用語指示設(shè)備的當(dāng)前狀態(tài)。196.2.2設(shè)備控制器定義:設(shè)備控制器是CPU與I/O設(shè)備之間的接口,它接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作,使處理機(jī)從繁雜的設(shè)備控制事務(wù)中解脫出來。設(shè)備控制器分成兩大類:用于控制字符設(shè)備的控制器;用于控制塊設(shè)備的控制器。20

(1)設(shè)備控制器的功能:接收和識別命令:CPU向設(shè)備控制器發(fā)送多種不同的命令,設(shè)備控制器能夠接收并識別這些命令.數(shù)據(jù)交換:實現(xiàn)CPU與控制器之間、控制器與設(shè)備之間的數(shù)據(jù)交換.設(shè)備狀態(tài)的了解和報告:控制器應(yīng)記下設(shè)備的狀態(tài)供CPU了解.地址識別:系統(tǒng)中的每一個設(shè)備都有一個地址,設(shè)備控制器必須能夠識別它所控制的設(shè)備的地址.21

(1)設(shè)備控制器的功能:數(shù)據(jù)緩沖區(qū):在控制器中必須設(shè)置一緩沖區(qū)。在輸出時,用此緩沖區(qū)暫存由主機(jī)高速傳來的數(shù)據(jù)。在輸入時,緩沖區(qū)則用于暫存從I/O設(shè)備送來的數(shù)據(jù)。差錯控制:對于由I/O設(shè)備傳送來的數(shù)據(jù),設(shè)備控制器還兼管進(jìn)行差錯檢測。22(2)設(shè)備控制器的組成:設(shè)備控制器與處理機(jī)的接口

該接口用于實現(xiàn)CPU與設(shè)備控制器之間的通信。共有三類信號線:數(shù)據(jù)線、地址線和控制線。

數(shù)據(jù)線通常與兩類寄存器相連接:

與數(shù)據(jù)寄存器連接:在設(shè)備控制器中有一個火多個數(shù)據(jù)寄存器,用于存放從設(shè)備送來的數(shù)據(jù)(輸入),或從CPU送來的數(shù)據(jù)(輸出).

與控制/狀態(tài)寄存器連接:在控制器中可以有一個或多個這類寄存器,用于存放從CPU送來的控制信息或設(shè)備的狀態(tài)信息。23

設(shè)備控制器與設(shè)備的接口

在一個控制器上可以連接一個或多個設(shè)備.相應(yīng)地,在控制器上便有一個或多個設(shè)備接口,一個接口連接一臺設(shè)備。

在每個接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類型的信號。

控制器中的I/O邏輯根據(jù)處理機(jī)發(fā)來的地址信號,去選擇一個設(shè)備接口。24I/O邏輯:

用于實現(xiàn)對設(shè)備的控制。通過一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)送I/O命令;I/O邏輯對收到的命令進(jìn)行譯碼。

每當(dāng)CPU要啟動一個設(shè)備時,一方面將啟動命令發(fā)送給控制器;另一方面又同時通過地址線把地址發(fā)送給控制器,由控制器的I/O邏輯對收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對所選設(shè)備進(jìn)行控制.25

數(shù)據(jù)寄存器控制/狀態(tài)寄存器I/O邏輯控制器與設(shè)備接口1控制器與設(shè)備接口i數(shù)據(jù)數(shù)據(jù)狀態(tài)狀態(tài)控制控制控制器與設(shè)備接口CPU與控制器接口數(shù)據(jù)線地址線控制線……266.2.3內(nèi)存映像I/O(1)利用特定的I/O指令

在早期的計算機(jī)中,為實現(xiàn)CPU與設(shè)備控制器之間的通信,為每個控制寄存器分配一個I/O端口,另外還設(shè)置了一些特定的I/O指令。缺點(diǎn):訪問內(nèi)存和訪問設(shè)備需要兩種不同的指令。276.2.3內(nèi)存映像I/O(2)內(nèi)存映像I/O

在這種方式中,在編址上不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k值處于0~n-1范圍時,被認(rèn)為是內(nèi)存地址,若k大于等于n時,被認(rèn)為是某個控制器的寄存器地址。內(nèi)存映像I/O方式統(tǒng)一了對內(nèi)存和控制器的訪問方法,簡化了I/O的編程286.2.4I/O通道(1)通道設(shè)備的引入主要目的:

為了使原來由CPU處理的I/O任務(wù)轉(zhuǎn)由通道來承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來。I/O通道與一般的處理機(jī)的不同:通道的指令類型單一;通道沒有自己的內(nèi)存,它與CPU共享內(nèi)存。29(2)通道類型字節(jié)多路通道(ByteMultiplexorChannal)優(yōu)點(diǎn):能使各子通道(設(shè)備)分時并行操作數(shù)組選擇通道(BlockSelectorChannal)優(yōu)點(diǎn):傳輸速率高缺點(diǎn):通道利用率很低數(shù)組多路通道優(yōu)點(diǎn):既具有很高的數(shù)據(jù)傳輸速率,又能獲

得令人滿意的通道利用率

30

...控制器控制器控制器控制器控制器A1B1C1…A2B2C2…A1A2A3…子通道A設(shè)備B1B2B3…子通道BC1C2C3…子通道CN1N2N3…子通道N

字節(jié)多路通道的工作原理31(3)“瓶頸”問題

通道數(shù)量較少成為I/O的瓶頸,造成個系統(tǒng)吞吐量的下降。解決方法:

加設(shè)備到主機(jī)間的通路,而不增加通道。換言之,就是把一個設(shè)備連接到多個控制器上;而一個控制器又連接到多個通道上。

多路方式不僅解決了“瓶頸”問題,而且提高了系統(tǒng)的可靠性,因為個別通道或控制器的故障,不會使設(shè)備與存儲器之間沒有通路。32

存儲器通道1控制器4控制器3控制器2控制器1設(shè)備7設(shè)備6設(shè)備5設(shè)備4設(shè)備3設(shè)備2設(shè)備1通道2單通路I/O系統(tǒng)33

存儲器通道2通道1控制器2控制器1I/O設(shè)備I/O設(shè)備I/O設(shè)備I/O設(shè)備多通路I/O系統(tǒng)346.3中斷機(jī)構(gòu)和中斷處理程序6.3.1中斷簡介

(1)中斷和陷入中斷:又稱外中斷,是指CPU對I/O設(shè)備發(fā)來的中斷信號的一種響應(yīng)。

陷入:又稱內(nèi)中斷,是一種由CPU內(nèi)部事件所引起的中斷。

中斷和陷入的主要區(qū)別是信號的來源,即是來自CPU外部,還是CPU內(nèi)部。35(2)中斷向量表和中斷優(yōu)先級

中斷向量表:中斷向量表中的每一個表項對應(yīng)著一個中斷號。為了處理上的方便,通常是為每種設(shè)備配以相應(yīng)的中斷處理程序,并把該程序的入口地址放在中斷向量表中,并為每一個設(shè)備的中斷請求規(guī)定一個中斷號。

中斷優(yōu)先級:中斷源對服務(wù)要求的緊急程度。36(3)對多中斷源的處理方式

1.屏蔽(禁止)中斷當(dāng)處理機(jī)正在處理一個中斷時,將屏蔽掉所有的中斷,即處理機(jī)對任何新到的中斷請求,都暫時不予理睬,而讓它們等待。

其優(yōu)點(diǎn)是簡單,但不能用于對實時性要求較高的中斷請求。

37

2.嵌套中斷

在設(shè)置了中斷優(yōu)先級的系統(tǒng)中,按一下規(guī)則進(jìn)行優(yōu)先級控制:

1)當(dāng)同時有多個優(yōu)先級的中斷請求時,CPU優(yōu)先響應(yīng)最高優(yōu)先級的中斷請求;

2)高優(yōu)先級的中斷請求可以搶占正在運(yùn)行的低優(yōu)先級中斷的處理機(jī),該方式類似于基于優(yōu)先級的搶占式進(jìn)程調(diào)度。

386.3.2中斷處理程序

在設(shè)備控制器的控制下,I/O設(shè)備完成了I/O操作后,控制器便向CPU發(fā)出一中斷請求,CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序.中斷處理程序的步驟:喚醒被阻塞的驅(qū)動程序進(jìn)程.保護(hù)被中斷進(jìn)程的CPU環(huán)境.分析中斷原因、轉(zhuǎn)入相應(yīng)的設(shè)備中斷處理程序進(jìn)行中斷處理.恢復(fù)被中斷進(jìn)程的現(xiàn)場.39PSWPC(N+1)T開始返回PSWPC(N+1)程序狀態(tài)字程序計數(shù)器寄存器線指針用戶程序中斷服務(wù)子例程中斷棧YNN+1………T+M中斷現(xiàn)場保護(hù)示意圖40喚醒被阻塞的驅(qū)動程序進(jìn)程對被中斷進(jìn)程的CPU環(huán)境進(jìn)行保護(hù)分析中斷原因,轉(zhuǎn)入相應(yīng)的中斷處理程序打印機(jī)中斷處理程序終端中斷處理程序磁盤中斷處理程序恢復(fù)被中斷進(jìn)程的CPU現(xiàn)場返回被中斷的進(jìn)程,繼續(xù)執(zhí)行

中斷處理流程:416.4設(shè)備驅(qū)動程序設(shè)備處理程序通常又稱為設(shè)備驅(qū)動程序,它是I/O進(jìn)程與設(shè)備控制器之間的通信程序,簡稱為設(shè)備驅(qū)動進(jìn)程。它的主要任務(wù)是:接收上層軟件發(fā)來的抽象I/O要求;將由設(shè)備控制器發(fā)來的信號傳送給上層軟件。426.4.1設(shè)備驅(qū)動程序概述(1)設(shè)備驅(qū)動程序的功能將接收到的抽象要求轉(zhuǎn)換為具體要求。檢查用戶I/O請求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。發(fā)出I/O命令,啟動分配到的I/O設(shè)備,完成指定的I/O操作。及時響應(yīng)由控制器或通道發(fā)來的中斷請求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。對于設(shè)置有通道的計算機(jī)系統(tǒng),驅(qū)動程序還應(yīng)能夠根據(jù)用戶的I/O請求,自動地構(gòu)成通道程序。43

(2)設(shè)備驅(qū)動程序的特點(diǎn)實現(xiàn)在與設(shè)備無關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序。與設(shè)備控制器以及I/O設(shè)備的硬件特性緊密相關(guān)。與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。由于驅(qū)動程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言書寫。應(yīng)允許可重入。44

(3)設(shè)備處理方式為每一類設(shè)備設(shè)置一個進(jìn)程,它專門執(zhí)行這類設(shè)備的I/O操作。在整個系統(tǒng)中設(shè)置一個I/O進(jìn)程,專門負(fù)責(zé)對系統(tǒng)中所有各類設(shè)備的I/O操作。不設(shè)置專門的設(shè)備處理進(jìn)程,而是只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊),供用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。456.4.2設(shè)備驅(qū)動程序的處理過程

不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動程序。

以下是設(shè)備處理程序的處理過程:將抽象要求轉(zhuǎn)換為具體要求;對服務(wù)請求進(jìn)行校驗,即檢查I/O請求的合法性;讀出和檢查設(shè)備的狀態(tài);傳送必要的參數(shù);啟動I/O設(shè)備.46宗旨:盡量減少主機(jī)對I/O控制的干預(yù),把主機(jī)從繁雜的I/O控制事務(wù)中解脫出來,以更多地去完成其數(shù)據(jù)處理任務(wù)。I/O控制的四個發(fā)展階段:輪詢的可編程I/O方式中斷驅(qū)動I/O控制方式直接存儲器訪問DMA控制方式I/O通道控制方式6.4.3對I/O設(shè)備的控制方式47使用輪詢的可編程I/O方式(忙—等待方式)

在處理機(jī)向設(shè)備控制器發(fā)出一條I/O指令啟動輸入設(shè)備、輸入數(shù)據(jù)時,同時把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1,然后不斷地循環(huán)測試busy。當(dāng)busy=1時,表示輸入機(jī)尚未輸完一個字(符),處理機(jī)應(yīng)繼續(xù)對該標(biāo)志進(jìn)行測試,直至busy=0,表明輸入機(jī)已將輸入數(shù)據(jù)送入控制器的數(shù)據(jù)寄存器中,于是處理機(jī)將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存指定單元中,接著,再啟動去讀下一個數(shù)據(jù),并置busy=1。48

向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)向存儲器中寫字從I/O控制器中讀入字檢查狀態(tài)?傳送完成?完成下條指令CPUI/OI/OCPU出錯I/OCPUCPU內(nèi)存未完向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)向存儲器中寫字從I/O控制器中讀入字檢查狀態(tài)?傳送完成?完成下條指令CPUI/OI/OCPU出錯I/OCPUCPU內(nèi)存未完就緒未就緒就緒CPU做其它事中斷向I/O控制器發(fā)布讀塊命令讀DMA控制器的狀態(tài)CPU->DMACPU做其它事中斷DMA->CPU下條指令(c)DMA方式(a)程序I/O方式(b)中斷驅(qū)動方式

程序I/O和中斷驅(qū)動

方式的流程49

中斷可編程I/O方式

當(dāng)某進(jìn)程要啟動某個I/O設(shè)備工作時,便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來的任務(wù)。設(shè)備控制器按照該命令的要求去控制I/O設(shè)備。此時,CPU與I/O設(shè)備并行操作。這樣可以提高整個系統(tǒng)的資源利用率及吞吐量。可見,中斷驅(qū)動方式可以成百倍地提高CPU的利用率。50直接存儲器訪問DMA控制方式(1)DMA控制方式的引入目的:為了進(jìn)一步減少CPU對I/O的干預(yù)。特點(diǎn):數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反;僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。51

(2)DMA控制器的組成DMA控制器由三部分組成:主機(jī)與DMA控制器的接口DMA控制器與塊設(shè)備的接口I/O控制邏輯DMA控制器中設(shè)置四類寄存器:命令/狀態(tài)寄存器內(nèi)存地址寄存器MAR數(shù)據(jù)寄存器DR數(shù)據(jù)計數(shù)器DC52

CoutDRMARDCCRI/O控制邏輯CPU內(nèi)存主機(jī)—控制器接口

控制器與塊設(shè)備接口系統(tǒng)總線DMA控制器命令DMA控制器的組成53

(3)DMA工作過程啟動DMA傳送命令設(shè)置AR和DC的初值在繼續(xù)執(zhí)行用戶程序的同時,準(zhǔn)備一次傳送挪用存儲器周期傳送數(shù)據(jù)字存儲器地址增1字記數(shù)寄存器減1請求中斷DC-0?否是DMA方式的工作流程54(4)I/O通道控制方式1)I/O通道控制方式的引入I/O通道方式是DMA方式的發(fā)展,它可進(jìn)一步減少CPU的干預(yù),即把對一個數(shù)據(jù)塊的讀(或?qū)懀閱挝坏母深A(yù),減少為對一組數(shù)據(jù)塊的讀(或?qū)懀┘坝嘘P(guān)的控制和管理為單位的干預(yù)。同時,又可實現(xiàn)CPU、通道和I/O設(shè)備三者的并行工作,從而更有效地提高了整個系統(tǒng)的資源利用率。552)通道程序

通道是通過執(zhí)行通道程序,并與設(shè)備控制器來共同實現(xiàn)對I/O設(shè)備的控制的。

通道程序是由一系列的通道指令(或稱為通道命令)所構(gòu)成。每條指令中包含下列信息:操作碼內(nèi)存地址計數(shù)通道程序結(jié)束位P記錄結(jié)束標(biāo)志R56以物理設(shè)備名使用設(shè)備引入了邏輯設(shè)備名邏輯設(shè)備名稱到物理設(shè)備名稱的轉(zhuǎn)換6.5與設(shè)備無關(guān)的I/O軟件6.5.1與設(shè)備無關(guān)軟件的基本概念57設(shè)備驅(qū)動程序的統(tǒng)一接口緩沖管理差錯控制(暫時性錯誤、持久性錯誤)對獨(dú)立設(shè)備的分配和回收獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊6.5.2

與設(shè)備無關(guān)的軟件586.5.3設(shè)備分配

在多道程序環(huán)境下,系統(tǒng)中的設(shè)備不允許用戶進(jìn)程自行使用,必須由系統(tǒng)分配.在有的系統(tǒng)中為了確保在CPU與設(shè)備之間能進(jìn)行通信,還應(yīng)分配相應(yīng)的控制器和通道.59設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)(1)設(shè)備控制表DCT

系統(tǒng)為每一個設(shè)備都配置了一張設(shè)備控制表,用于記錄本設(shè)備的情況。其中除了有用于指示設(shè)備類型的字段type和設(shè)備標(biāo)識符字段deviceid外,還有:設(shè)備隊列隊首指針;設(shè)備狀態(tài);與設(shè)備連接的控制器表指針;重復(fù)執(zhí)行次數(shù)。60

DCT1DCT2DCTn重復(fù)執(zhí)行次數(shù)或時間

設(shè)備隊列的對首指針

設(shè)備類型type設(shè)備標(biāo)識符:deviceid設(shè)備狀態(tài):等待/不等待

忙/閑

指向控制器表的指針

設(shè)備控制表:設(shè)備控制器集合61

(2)控制器控制表、通道表和系統(tǒng)設(shè)備表控制器控制表COCT:

系統(tǒng)為每一個控制器設(shè)置一張用于記錄本控制器情況的控制器控制表??刂破鳂?biāo)識符:controllerid控制器狀態(tài):忙/閑與控制器連接的通道表指針控制器隊列的隊首指針控制器隊列的隊尾指針62通道控制表CHCT

每個通道都配有一張通道控制表。通道標(biāo)識符:channelid通道狀態(tài):忙/閑與通道連接的控制器表首址通道隊列的隊首指針通道隊列的隊尾指針63

(a)(b)表目1表目i……設(shè)

類設(shè)備標(biāo)識符DCT驅(qū)動程序入口系統(tǒng)設(shè)備表SDT

記錄了系統(tǒng)中全部設(shè)備的情況。每個設(shè)備占一個表目,其中包括有設(shè)備類型、設(shè)備標(biāo)識符、設(shè)備控制表及設(shè)備驅(qū)動程序的入口等項。64

設(shè)備分配時應(yīng)考慮的若干因素

系統(tǒng)在進(jìn)行設(shè)備分配時,應(yīng)考慮因素包括以下幾項:

設(shè)備的固有屬性

設(shè)備分配算法

設(shè)備分配的安全性

設(shè)備獨(dú)立性65

(1)考慮設(shè)備的固有屬性

設(shè)備的固有樹型可分成兩類:獨(dú)占與共享。

對不同類型的設(shè)備采取不同的分配策略。獨(dú)享設(shè)備—采用獨(dú)享分配策略,將一個設(shè)備分配給某進(jìn)程后,一直由該進(jìn)程獨(dú)占,直到該進(jìn)程完成或釋放該設(shè)備,系統(tǒng)才能將該設(shè)備分配給其它進(jìn)程使用.注意分配不當(dāng)進(jìn)程會死鎖.共享設(shè)備—將它同時分配給多個進(jìn)程使用,但這些進(jìn)程對設(shè)備的訪問需進(jìn)行合理的調(diào)度;虛擬設(shè)備—已屬可共享設(shè)備,可將它分配給多個進(jìn)程使用,并可對這些進(jìn)程訪問該設(shè)備的先后次序進(jìn)行控制。66

(2)設(shè)備分配算法先來先服務(wù):

根據(jù)進(jìn)程對某設(shè)備提出請求的先后次序,將這些進(jìn)程排成一個設(shè)備請求隊列,設(shè)備分配程序把設(shè)備首先分配給隊首進(jìn)程。優(yōu)先級高者優(yōu)先:

在利用該算法形成設(shè)備隊列時,將優(yōu)先級高的進(jìn)程排在設(shè)備隊列前面,優(yōu)先權(quán)高的進(jìn)程優(yōu)先獲得處理機(jī)。而對于優(yōu)先級相同的I/O請求,則按先來先服務(wù)原則排隊。67

(3)設(shè)備分配中的安全性

從進(jìn)程運(yùn)行的安全性考慮設(shè)備分配的方式:安全分配方式

每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。

采用這種分配策略,一旦進(jìn)程已經(jīng)獲得某種設(shè)備(資源)后便阻塞,使其不可能再請求任何資源,而在運(yùn)行期間又不保持任何資源,因此這種分配方式擯棄了造成死鎖的四個必要條件之一的“請求和保持”條件,分配是安全的.68不安全分配方式

進(jìn)程發(fā)出I/O請求后仍繼續(xù)運(yùn)行,需要時又可發(fā)出第二個I/O請求、第三個I/O請求。僅當(dāng)進(jìn)程所請求的設(shè)備已被另一進(jìn)程占用時,進(jìn)程才進(jìn)入阻塞狀態(tài)。

優(yōu)點(diǎn):一個進(jìn)程可以同時操作多個設(shè)備,使進(jìn)程推進(jìn)迅速.

缺點(diǎn):分配不安全,可能具備“請求和保持”條件,造成死鎖.69

獨(dú)占設(shè)備的分配程序1)基本的設(shè)備分配程序

當(dāng)某進(jìn)程提出I/O請求后,系統(tǒng)的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配:

分配設(shè)備;

分配控制器;

分配通道。2)設(shè)備分配程序的改進(jìn)

在基本的設(shè)備分配程序中,進(jìn)程是以物理設(shè)備名提出I/O請求的。設(shè)備分配程序不具有與設(shè)備無關(guān)性,為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請求I/O。706.5.4邏輯設(shè)備名到物理設(shè)備名映射

的實現(xiàn)1.邏輯設(shè)備表LUT

每個表目中包含三項:邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動程序的入口地址。

系統(tǒng)通過查找LUT,便可找到該邏輯設(shè)備所對應(yīng)的物理設(shè)備和該設(shè)備的驅(qū)動程序。邏輯設(shè)備名物理設(shè)備名驅(qū)動程序入口地址/dev/tty31024/dev/printer52046………邏輯設(shè)備名系統(tǒng)設(shè)備表指針/dev/tty3/dev/printer5……71邏輯設(shè)備表(LogicalUnitTable)

為了實現(xiàn)設(shè)備的獨(dú)立性,系統(tǒng)必須能夠?qū)?yīng)用程序中使用的邏輯設(shè)備名映射成物理設(shè)備名,為此必須有一張邏輯設(shè)備表LUT(LogicalUnitTable).

當(dāng)進(jìn)程用邏輯設(shè)備名來請求分配I/O設(shè)備時,系統(tǒng)為它分配相應(yīng)的物理設(shè)備,并在LUT上建立一個表目,寫上應(yīng)用程序中使用的邏輯設(shè)備名和系統(tǒng)分配的物理設(shè)備名,以及該設(shè)備的驅(qū)動程序入口地址.72

2.LUT的設(shè)置問題LUT的設(shè)置可采取兩種方式:

整個系統(tǒng)設(shè)置一張LUT:由于系統(tǒng)中所有進(jìn)程的設(shè)備分配情況都記錄在同一張表LUR中,不允許在LUT中具有相同的邏輯設(shè)備名,要求所有用戶不使用相同的邏輯設(shè)備名。這種方式主要用于單用戶系統(tǒng)中;在多用戶系統(tǒng)難做到.

為每個用戶設(shè)置一張LUT:每當(dāng)用戶登錄時,便為用戶建立一個進(jìn)程,同時也為之建立一張LUT,并將該表放入進(jìn)程的PCB中。此時的邏輯設(shè)備表可以采用的格式有了一點(diǎn)變化:

73系統(tǒng)調(diào)用

一個中介過程,應(yīng)用程序可以通過系統(tǒng)調(diào)用間接調(diào)用OS中的I/O過程,對I/O設(shè)備進(jìn)行操作。

系統(tǒng)調(diào)用是應(yīng)用程序取得OS所有服務(wù)的唯一途徑。庫函數(shù)

內(nèi)核提供了OS的基本功能,而庫函數(shù)擴(kuò)展了OS內(nèi)核。6.6用戶層的I/O軟件6.6.1系統(tǒng)調(diào)用與庫函數(shù)746.6.2假脫機(jī)SPOOLing系統(tǒng)

早期的計算機(jī)系統(tǒng)只能由一個用戶獨(dú)占.后來的多用戶系統(tǒng)允許多個用戶共享一臺主機(jī).通過SPOOLing技術(shù)將一臺獨(dú)占設(shè)備改造成共享設(shè)備.

當(dāng)系統(tǒng)中出現(xiàn)多道程序后,利用其中的一道程序模擬脫機(jī)輸入時的外圍控制器的功能,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;再利用另一道程序來模擬脫機(jī)輸出時外圍控制器的功能,把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上.這樣在主機(jī)的直接控制下實現(xiàn)脫機(jī)輸入、輸出功能.75(1)什么是SPOOLing:SimultaneausPeriphernalOperationsOn-Line,或稱為假脫機(jī)操作,指在聯(lián)機(jī)情況下實現(xiàn)的同時外圍操作。(2)SPOOLing系統(tǒng)的組成:SPOOLing系統(tǒng)是對脫機(jī)輸入、輸出工作的模擬.必須有告訴隨即外存的支持,通常是磁盤.SPOOLing系統(tǒng)主要有下面三個部分:76

輸入井和輸出井:

輸入井是模擬脫機(jī)輸入時的磁盤,用于收容I/O設(shè)備輸入的數(shù)據(jù)。

輸出井是模擬脫機(jī)輸出時的磁盤,用于收容用戶程序的輸出數(shù)據(jù)。輸入緩沖區(qū)和輸出緩沖區(qū)

輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井。

輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。77

輸入進(jìn)程SPi和輸出進(jìn)程SP0

進(jìn)程SPi模擬脫機(jī)輸入時的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī),通過輸入緩沖區(qū)再送到輸入井。當(dāng)CPU需要輸入數(shù)據(jù)時,直接從輸入井讀入內(nèi)存。SP0進(jìn)程模擬脫機(jī)輸出時的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時,再將輸出井中的數(shù)據(jù),經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。井管理程序

用于控制作業(yè)與磁盤井之間信息的交換。78

輸入進(jìn)程SP1輸出進(jìn)程SP0輸入緩沖區(qū)B1輸出緩沖區(qū)B0輸入井輸出井磁盤輸入設(shè)備輸出設(shè)備SPOOLing系統(tǒng)的組成:79(3)SPOOLing系統(tǒng)的特點(diǎn)

提高了I/O速度:如同脫機(jī)輸入輸出一樣,提高了I/O速度,緩和了CPU與低速I/O設(shè)備之間速度不匹配的矛盾.

將獨(dú)占設(shè)備改造為共享設(shè)備:通過輸入井和輸出井實現(xiàn)了獨(dú)占設(shè)備變?yōu)楣蚕碓O(shè)備.

實現(xiàn)了虛擬設(shè)備功能:實現(xiàn)了將獨(dú)占設(shè)備變換為若干個對應(yīng)的邏輯設(shè)備.80

(4)假脫機(jī)打印機(jī)系統(tǒng)

假脫機(jī)打印系統(tǒng)主要有以下三部分:磁盤緩沖區(qū);打印緩沖區(qū);假脫機(jī)管理進(jìn)程和假脫機(jī)打印進(jìn)程。

81

共享打印機(jī)

打印機(jī)屬于獨(dú)享設(shè)備,但通過利用SPOOLing技術(shù),可將它改造為一臺可供多個用戶共享的設(shè)備,從而提高設(shè)備的利用率,方便用戶的使用。

當(dāng)用戶進(jìn)程申請打印輸出時,SPOOLing系統(tǒng)同意為進(jìn)程打印輸出,但并不真正分配打印機(jī)給該進(jìn)程,而只為該進(jìn)程做了兩件事:由輸出進(jìn)程在輸出井中為之申請一空閑盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;82

輸出進(jìn)程再為用戶進(jìn)程請求一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上.如果還有進(jìn)程打印輸出,系統(tǒng)仍可以接收該請求.

如果打印機(jī)空閑,輸出進(jìn)程將從請求打印隊列的隊首取出一張請求打印表,根據(jù)表中的打印要求將要打印的數(shù)據(jù)從輸出井傳送到內(nèi)存緩沖區(qū),再由打印機(jī)進(jìn)行打印.打印完后,輸出進(jìn)程再查看請求打印隊列是否還有等待打印的請求表.若有,又取出一張,并根據(jù)其中的要求進(jìn)行打印.如此下去直至請求隊列為空為止,輸出進(jìn)程才將自己阻塞起來,直到下次再有打印請求時才被喚醒.83(5)守護(hù)進(jìn)程

對假脫機(jī)系統(tǒng)來實現(xiàn)打印機(jī)共享進(jìn)行修改。取消假脫機(jī)管理進(jìn)程,為打印機(jī)建立一個守護(hù)進(jìn)程,由它執(zhí)行一部分原來由假脫機(jī)管理進(jìn)程實現(xiàn)的功能。

守護(hù)進(jìn)程是允許使用打印機(jī)的唯一進(jìn)程。

除了打印機(jī)守護(hù)進(jìn)程之外,還可能有許多其它的守護(hù)進(jìn)程。事實上,凡是需要將獨(dú)占設(shè)備改造為可供多個進(jìn)程共享的設(shè)備時,都要為該設(shè)備配置一個守護(hù)進(jìn)程和一個假脫機(jī)文件隊列(目錄)。

846.7緩沖區(qū)管理

為了提高I/O速度和設(shè)備的利用率,在很大程度上都需要借助于緩沖技術(shù)來實現(xiàn)。在CPU與所有的I/O設(shè)備交換數(shù)據(jù)時都使用了緩沖區(qū).

緩沖區(qū)管理的主要功能是組織好這些緩沖區(qū),并提供獲得和釋放緩沖區(qū)的手段。856.7.1緩沖的引入引入緩沖的原因:緩和CPU與I/O設(shè)備間速度不匹配的矛盾:

在數(shù)據(jù)到達(dá)速率與數(shù)據(jù)離去速率不同的地方,可以設(shè)置緩沖解決不匹配的問題.如滿速的打印機(jī)與快速CPU之間速度不匹配時給打印機(jī)加上緩沖區(qū)正是為了解決這一問題.86

減少對CPU的中斷頻率,放寬對CPU中斷響應(yīng)時間的限制:如果從遠(yuǎn)地發(fā)來的數(shù)據(jù)僅用一位緩沖來接收,則必須在每收到一位數(shù)據(jù)時便中斷CPU一次.這樣,對于速度為9.6kb/s的數(shù)據(jù)通信來說,意味著其中斷CPU的頻率也為9.6kb/s,即每100us就要中斷CPU一次,而且CPU必須在100us內(nèi)予以響應(yīng),否則緩沖區(qū)的數(shù)據(jù)將被沖掉。如果設(shè)計一個8位的緩沖寄存器,則可使CPU被中斷的響應(yīng)時間放寬到800us.87解決數(shù)據(jù)粒度不匹配的問題:緩沖區(qū)可用于解決在生產(chǎn)者和消費(fèi)者之間交換的數(shù)據(jù)粒度(數(shù)據(jù)單元大小)不匹配的問題。例如,生產(chǎn)者所生產(chǎn)的數(shù)據(jù)粒度比消費(fèi)者消費(fèi)的數(shù)據(jù)粒度小時,生產(chǎn)者進(jìn)程可以一連生產(chǎn)好幾個數(shù)據(jù)單元的數(shù)據(jù),當(dāng)其總和已達(dá)到消費(fèi)者進(jìn)程所要求的數(shù)據(jù)單元大小時,消費(fèi)者便可從緩沖區(qū)中取出消費(fèi)。反之,如果生產(chǎn)者所生產(chǎn)的數(shù)據(jù)粒度比消費(fèi)者消費(fèi)的數(shù)據(jù)粒度大時,生產(chǎn)者每次生產(chǎn)的數(shù)據(jù)消費(fèi)者可以分幾次從緩沖區(qū)中取出消費(fèi)。88

提高CPU和I/O設(shè)備之間的并行性:緩沖區(qū)的引入可顯著提高CPU和I/O設(shè)備間的并行操作程度,提高系統(tǒng)的吞吐量和設(shè)備的利用率。例如在打印機(jī)和CPU之間設(shè)置了緩沖區(qū)后,便可使CPU與打印機(jī)并行工作。896.7.2單緩沖區(qū)和雙緩沖區(qū)

單緩沖是操作系統(tǒng)提供的最簡單的一種緩沖形式。

每當(dāng)一個用戶進(jìn)程發(fā)出一個I/O請求時,操作系統(tǒng)便在主存中為之分配一緩沖區(qū)

90

在塊設(shè)備輸入時,先從設(shè)備把一塊數(shù)據(jù)輸入到緩沖區(qū),其所化費(fèi)的時間為T,然后由操作系統(tǒng)將緩沖區(qū)的數(shù)據(jù)傳送到用戶區(qū),其所花費(fèi)的時間為M;之后是CPU對這段數(shù)據(jù)進(jìn)行計算,計算時間假定為C;則系統(tǒng)對每一整塊數(shù)據(jù)的處理時間為max(C,T)+M.

在字符設(shè)備輸入時,緩沖區(qū)用于暫存用戶的一行數(shù)據(jù)。在輸入期間,用戶進(jìn)程被掛起等待一行數(shù)據(jù)輸入完畢;在輸出時,用戶進(jìn)程將一行數(shù)據(jù)送入緩沖區(qū)后繼續(xù)執(zhí)行計算。當(dāng)用戶進(jìn)程已有第二行數(shù)據(jù)輸出時,若第一行數(shù)據(jù)尚未提取完畢,用戶進(jìn)程應(yīng)阻塞。91用戶進(jìn)程操作系統(tǒng)傳送輸入I/O設(shè)備單緩沖工作時:

當(dāng)存在輸入輸出設(shè)備時進(jìn)程要對這些設(shè)備進(jìn)行并發(fā)操作,而輸入和輸出設(shè)備的速率不能匹配時,則為每個設(shè)備單獨(dú)分配一個單緩沖區(qū)是不行的,必須考慮為設(shè)備分配雙緩沖區(qū)。92

例如存在一個從卡片機(jī)上讀入數(shù)據(jù),又要把數(shù)據(jù)在打印機(jī)上打印的作業(yè)時,當(dāng)這兩個進(jìn)程要并發(fā)操作,卡片機(jī)和打印機(jī)的速率不能匹配時,則為滿的設(shè)備分配雙緩沖區(qū)。93

雙緩沖

為了加快輸入、輸出速度和提高設(shè)備利用率,又引入了雙緩沖工作方式,也稱為緩沖對換方式。用戶進(jìn)程傳送輸入I/O設(shè)備操作系統(tǒng)94

在設(shè)備輸入時,先將數(shù)據(jù)輸入第一緩沖區(qū),裝滿后便轉(zhuǎn)向第二緩沖區(qū)。此時操作系統(tǒng)可從第一緩沖區(qū)中移出數(shù)據(jù)送用戶進(jìn)程區(qū),接著由CPU對數(shù)據(jù)進(jìn)行計算。

在雙緩沖時系統(tǒng)處理一塊數(shù)據(jù)的時間可以粗略為max(C,T)。如果C<T,可使塊設(shè)備連續(xù)輸入;如果C>T,可使CPU不必等待設(shè)備輸入。對于字符設(shè)備,若采用行輸入方式,則采用雙緩沖工作方式時通常用戶進(jìn)程不會阻塞,消除了用戶等待時間,用戶在第一行完成后,CPU執(zhí)行命令時,可繼續(xù)向第二緩沖區(qū)輸入下一行。95緩沖區(qū)緩沖區(qū)A機(jī)B機(jī)

單緩沖

在實現(xiàn)兩臺機(jī)器之間的通信時,如果僅為每個進(jìn)程配置單緩沖區(qū)時,則任何時刻只能以單方向的數(shù)據(jù)傳送。即下圖中從A到B,或從B到A.96

發(fā)送緩沖區(qū)接收緩沖區(qū)

接收

緩沖區(qū)

發(fā)送

緩沖區(qū)A機(jī)B機(jī)(b)

雙緩沖

為了實現(xiàn)雙向通信,必須為每臺設(shè)備設(shè)置兩個緩沖區(qū),一個用于發(fā)送數(shù)據(jù),一個用于接收數(shù)據(jù)。976.7.3環(huán)形緩沖區(qū)

當(dāng)前面的讀卡機(jī)和打印機(jī)的速度相差太遠(yuǎn)時,雙緩沖區(qū)還不行,這時必須考慮用多緩沖。

并將多個緩沖區(qū)組織成環(huán)形緩沖區(qū)形式。對于用作輸入的循環(huán)緩沖,通常是提供給輸入進(jìn)程和計算進(jìn)程使用,輸入進(jìn)程不斷向空緩沖中輸入數(shù)據(jù),計算進(jìn)程則從中提取數(shù)據(jù)用于計算。98用戶進(jìn)程操作系統(tǒng)傳送輸入I/O設(shè)備(c)循環(huán)緩沖99(1)環(huán)形緩沖區(qū)的組成多個緩沖區(qū)

緩沖區(qū)可分成三種類型:

空緩沖區(qū)R:用于存放輸入數(shù)據(jù);

已裝滿數(shù)據(jù)的緩沖區(qū)G:其中的數(shù)據(jù)提供給計算進(jìn)程使用;

現(xiàn)行工作緩沖區(qū)C:計算進(jìn)程正在使用的緩沖區(qū)。100GGGGRRGCNextgNexti123456Nexti123456currentNextg環(huán)形緩沖區(qū)的組成:101多個指針

Nextg:指示計算進(jìn)程下一個可用的緩沖區(qū)G;

Nexti:指示輸入進(jìn)程下次可用的空緩沖區(qū)R;Current:指示計算進(jìn)程正在使用的緩沖區(qū)單元。(2)環(huán)形緩沖區(qū)的使用

Getbuf過程:當(dāng)計算進(jìn)程要使用緩沖區(qū)中的數(shù)據(jù)時,可調(diào)用Getbuf過程。相應(yīng)將其改為現(xiàn)行工作緩沖區(qū),并用Current指針指向該緩沖區(qū)的第一個單元,同時將nextg移向下一個G緩沖區(qū)。

同理當(dāng)輸入進(jìn)程要使用空緩沖區(qū)裝入數(shù)據(jù)時,也調(diào)用Getbuf過程。102Releasebuf過程:

當(dāng)計算進(jìn)程把C緩沖區(qū)中的數(shù)據(jù)提取完時,便可調(diào)用Releasebuf過程,將該緩沖區(qū)C釋放。此時把當(dāng)前工作緩沖區(qū)改為空緩沖區(qū)R。同理,當(dāng)輸入進(jìn)程將緩沖區(qū)裝滿時,也調(diào)用Releasebuf過程將該緩沖區(qū)釋放,并改為G緩沖區(qū)。103(3)進(jìn)程同步

使用輸入緩沖可使輸入進(jìn)程和計算進(jìn)程并行執(zhí)行。相應(yīng)地,指針Nexti和指針Nextg將不斷地沿順時針方向移動,出現(xiàn)兩種情況:Nexti指針追趕上Nextg指針

這種情況是輸入進(jìn)程的輸入數(shù)據(jù)速度大于計算進(jìn)程處理數(shù)據(jù)的速度,被稱為系統(tǒng)受計算限制。

當(dāng)已把緩沖區(qū)裝滿時輸入進(jìn)程應(yīng)該阻塞等待計算進(jìn)程把某個緩沖區(qū)中數(shù)據(jù)提取完并調(diào)用Releasebuf過程釋放時,喚醒輸入進(jìn)程。104Nextg指針追趕上Nexti指針:

當(dāng)輸入數(shù)據(jù)的速度低于計算進(jìn)程處理數(shù)據(jù)的速度時,全部緩沖區(qū)(已有數(shù)據(jù))都已被抽空.這時,計算進(jìn)程只有阻塞直至輸入進(jìn)程又裝滿某個緩沖區(qū)并調(diào)用Releasebuf過程將它釋放,才去喚醒計算進(jìn)程.這種情況又稱為系統(tǒng)受I/O限制.1056.7.4緩沖池

環(huán)形緩沖區(qū)僅適用于某特定的I/O進(jìn)程和計算進(jìn)程,屬于專用緩沖.當(dāng)系統(tǒng)較大時,存在許多這樣的循環(huán)緩沖,浪費(fèi)太大利用率不高.

為了提高利用率,目前最廣泛使用的是公用緩沖池,池中的緩沖區(qū)可供多個進(jìn)程共享.106(1)緩沖池(BufferPool)的組成

對于既可用于輸入又可用于輸出的公用緩沖池,其中至少應(yīng)含有以下三種類型的緩沖區(qū):

空(閑)緩沖區(qū);

裝滿輸入數(shù)據(jù)的緩沖區(qū);

裝滿輸出數(shù)據(jù)的緩沖區(qū)。

為了管理上的方便,將相同類型的緩沖區(qū)鏈成一個隊列,形成以下三個隊列:107

空緩沖隊列emq:

由空緩沖區(qū)所鏈成的隊列.隊首指針F(emq)和隊尾指針L(emq)分別指向該隊列的首緩沖區(qū)和尾緩沖區(qū).輸入隊列inq:

由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成的隊列.隊首指針F(emq)和隊尾指針L(emq)分別指向該隊列的首緩沖區(qū)和尾緩沖區(qū).108

輸出隊列outg:

由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈成的隊列.隊首指針F(emq)和隊尾指針L(emq)分別指向該隊列的首緩沖區(qū)和尾緩沖區(qū).

除了以上三個隊列外,還應(yīng)具有四種工作緩沖區(qū):用于收容輸入數(shù)據(jù)的工作緩沖區(qū)用于提取輸入數(shù)據(jù)的工作緩沖區(qū)用于收容輸出數(shù)據(jù)的工作緩沖區(qū)用于提取輸出數(shù)據(jù)的工作緩沖區(qū)109

(2)Getbuf過程和Putbuf過程

為使多個進(jìn)程能互斥的訪問緩沖池隊列,為每一隊列設(shè)置了一個互斥信號量MS(type),為保證多個進(jìn)程同步地使用緩沖區(qū),為每個緩沖隊列設(shè)置了一個資源信號量RS(type).ProcedureGetbuf(type)beginWait(RS(type));Wait(MS(type));B(number):=Takebuf(type);Signal(MS(type));end110ProcedurePutbuf(type,number)beginWait(MS(type));Addbuf(type,number);Signal(MS(type));Signal(RS(type));end111

(3)緩沖區(qū)的工作方式

緩沖區(qū)可以工作在收容輸入、提取輸入、收容輸出和提取輸出四種工作方式下。hinsouthoutsin用戶程序緩沖池收容輸入提取輸出提取輸入收容輸出

緩沖區(qū)的工作方式112收容輸入工作方式

在輸入進(jìn)程需要輸入數(shù)據(jù)時,便調(diào)用Getbuf(emq)過程,從emq隊列的隊首摘下一空緩沖區(qū),把它作為收容輸入工作緩沖區(qū)hin。然后,把數(shù)據(jù)輸入其中,裝滿后再調(diào)用Putbuf(inq,hin)過程,將該緩沖區(qū)掛在輸入隊列imq的隊尾。113

提取輸入工作方式

當(dāng)計算進(jìn)程需要輸入數(shù)據(jù)時,調(diào)用Getbuf(inq)過程,從輸入隊列取得一緩沖區(qū),計算進(jìn)程從中提取數(shù)據(jù)。計算進(jìn)程用完該數(shù)據(jù)后,再調(diào)用Putbuf(emq,sin)過程,將緩沖掛到空緩沖隊列emq上。114收容輸出工作方式

當(dāng)計算進(jìn)程需要輸出時調(diào)用Getbuf(emq)過程,從空緩沖隊列emq的隊首取得一空緩沖,作為收容輸出工作緩沖區(qū)hout。當(dāng)其中裝滿輸出數(shù)據(jù)后,又調(diào)用Putbuf(outq,hout)過程,將該緩沖區(qū)掛在outq末尾。115

提取輸出工作方式

當(dāng)要輸出時,由輸出進(jìn)程調(diào)用Getbuf(outq)過程,從輸出隊列的隊首取得一裝滿輸出數(shù)據(jù)的緩沖區(qū),作為提取輸出工作緩沖區(qū)sout。在數(shù)據(jù)提取完后,再調(diào)用Putbuf(emq,sout)過程,將它掛在空緩沖隊列的末尾。1166.8磁盤存儲器的性能和調(diào)度磁盤存儲器管理的主要任務(wù)是:為文件分配必要的存儲空間,使每個文件能“各得其所”;合理地組織文件的存取方式,以提高對文件的訪問速度117提高磁盤存儲空間的利用率;提高對磁盤的I/O速度,以改善文件系統(tǒng)的性能;采取必要的冗余措施,來確保文件系統(tǒng)的可靠性。118提高磁盤I/O速度的主要途徑有:選擇性能好的磁盤;采用好的磁盤調(diào)度算法;設(shè)置磁盤高速緩沖區(qū)。1196.8.1磁盤性能簡述1數(shù)據(jù)的組織和格式為了在磁盤上存儲數(shù)據(jù),必須將磁盤格式化。

磁盤設(shè)備可包括一個或多個盤片,每片分為兩面,每面可分為若干條磁道(典型值為500-2000),各磁道之間留有必要的間隙。每條磁道又分為若干扇區(qū)(典型值為10-100)。每個扇區(qū)的大小相當(dāng)于一個盤塊.各扇區(qū)之間保留一定的間隙.溫盤(溫切斯特):每條磁道含有30個固定大小的扇區(qū),每個扇區(qū)容量為600個字節(jié),其中512字節(jié)存放數(shù)據(jù),其余用于存放控制信息.120每個扇區(qū)包括兩個字段:標(biāo)識符字段:其中一個字節(jié)的SYNCH具有特定的位圖像,作為該字段的定界符,利用磁道號、磁頭號、扇區(qū)號三者來標(biāo)示一個扇區(qū);CRC字段用于段校驗。數(shù)據(jù)字段:存放512個字節(jié)的數(shù)據(jù)。(2)磁盤的類型

對磁盤可從不同的角度進(jìn)行分類。最常見的有:將磁盤分成硬盤和軟盤、單片盤和多片盤、固定頭磁盤和活動頭磁盤等。固定頭磁盤移動頭磁盤121(3)磁盤訪問時間尋道時間Ts:

這是把磁頭從當(dāng)前位置移動到指定磁道上所經(jīng)歷的時間。

Ts=m*n+s

式中,m是一常數(shù),它與磁盤驅(qū)動器的速度有關(guān)。對一般磁盤,m=0.2;對高速磁盤,m<=0.1,磁盤啟動時間約為2ms。122旋轉(zhuǎn)延遲時間Tr:

Tr是指定扇區(qū)移動到磁頭下面所經(jīng)歷的時間。

對于硬盤,典型的旋轉(zhuǎn)速度為15

000r/min,每轉(zhuǎn)需時4ms,

平均旋轉(zhuǎn)延遲時間Tr為2ms。

對于軟盤,其旋轉(zhuǎn)速度為300或600r/min,這樣,平均Tr為50~100ms。123傳輸時間Tt:Tt是指把數(shù)據(jù)從磁盤讀出,或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時間,Tt的大小與每次所讀/寫的字節(jié)數(shù)b及旋轉(zhuǎn)速度有關(guān):Tt=b/rN

式中,r為磁盤以秒計的旋轉(zhuǎn)速度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論