




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1
第六章
輸入輸出系統(tǒng)I/O系統(tǒng)管理的主要對(duì)象是I/O設(shè)備和相應(yīng)的設(shè)備控制器.主要任務(wù):
完成用戶提出的I/O請(qǐng)求
提高I/O速率
提高設(shè)備的利用率
能為更高層的進(jìn)程方便地使用這些設(shè)備提供手段2I/O系統(tǒng)的功能、模型和接口I/O設(shè)備和設(shè)備控制器
中斷機(jī)構(gòu)和中斷處理程序
設(shè)備驅(qū)動(dòng)程序
與設(shè)備無(wú)關(guān)的I/O軟件用戶層的I/O軟件緩沖區(qū)管理磁盤存儲(chǔ)器的性能和調(diào)度本章主要內(nèi)容:36.1I/O系統(tǒng)的功能、模型和接口磁盤驅(qū)動(dòng)器打印機(jī)系統(tǒng)總線圖7-1總線型I/O系統(tǒng)結(jié)構(gòu)
在計(jì)算機(jī)系統(tǒng)中,除了需要直接用于I/O和存儲(chǔ)信息的設(shè)備外,還需要有相應(yīng)的設(shè)備控制器.在大、中型計(jì)算機(jī)中還需要有I/O通道,由這些設(shè)備及相應(yīng)的總線構(gòu)成了I/O系統(tǒng).4CPU存儲(chǔ)器磁盤控制器打印機(jī)控制器其它控制器磁盤驅(qū)動(dòng)器打印機(jī)系統(tǒng)總線總線型I/O系統(tǒng)結(jié)構(gòu):I/O系統(tǒng)的結(jié)構(gòu)(1)微型機(jī)I/O系統(tǒng)(兩級(jí)結(jié)構(gòu))5CPU和內(nèi)存是直接連接到總線上.I/O設(shè)備通過(guò)設(shè)備控制器連接到總線上,CPU并不直接與I/O設(shè)備進(jìn)行通信,而是與設(shè)備控制器進(jìn)行通信,并通過(guò)設(shè)備控制器去控制相應(yīng)的設(shè)備.ISA(IndustryStandardArchitecture)1984年為微型計(jì)算機(jī)設(shè)計(jì)的總線結(jié)構(gòu),帶寬為8位,最高傳輸率為2Mb/s.EISA總線(ExtendedISA)帶寬為32位,最高傳輸率為32Mb/s.可連接12臺(tái)外部設(shè)備。6局部總線:多媒體技術(shù)要求外設(shè)傳輸更快,需要總線具有更高的傳輸速率,EISA總線難以滿足要求,產(chǎn)生了局部總線:將多媒體、高速LAN網(wǎng)卡、高性能圖形卡等,從ISA總線上卸下來(lái),再通過(guò)局部總線控制器直接接到CPU總線上,使之與高速CPU總線匹配,而打印機(jī)、FAX/Modem、CD-ROM等其它設(shè)備仍然掛在ISA總線上。
在局部總線中較有名的有:VESA和PCI總線。VESA總線(VideoElectronicStandardAssociation)90年代推出,帶寬為32位,最高傳輸率為132Mb/s.問(wèn)題:可連接2-4臺(tái)外部設(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ù)緩沖,通過(guò)該緩沖可將總線的驅(qū)動(dòng)能力放大,使PCI能支持10種外設(shè),并使高速時(shí)鐘頻率的CPU能夠很好地運(yùn)行.PCI既可連接ISA、EISA等傳統(tǒng)型總線,又可支持Pentium的64位。8問(wèn)題:
如果外設(shè)太多,則都通過(guò)一條總線直接與CPU通信,造成總線和CPU負(fù)擔(dān).9(2)主機(jī)I/O系統(tǒng)(四級(jí)結(jié)構(gòu))計(jì)算機(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è)備的無(wú)關(guān)性提高處理機(jī)和I/O設(shè)備的利用率對(duì)I/O設(shè)備進(jìn)行控制確保對(duì)設(shè)備的正確共享錯(cuò)誤處理116.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型通常把I/O軟件組織成四個(gè)層次:用戶層I/O軟件、設(shè)備獨(dú)立性軟件、設(shè)備驅(qū)動(dòng)程序、中斷處理程序用戶層軟件設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動(dòng)程序中斷處理程序硬件產(chǎn)生I/O請(qǐng)求、格式化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ū)動(dòng)程序;
設(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è)備的類型:按使用特性分類
存儲(chǔ)設(shè)備:也稱外存、輔存,是用以存儲(chǔ)信息的主要設(shè)備。I/O設(shè)備:可分為輸入設(shè)備、輸出設(shè)備和交互式設(shè)備。
156.2I/O設(shè)備和設(shè)備控制器按傳輸速率分類
低速設(shè)備:指?jìng)鬏斔俾蕿槊棵腌妿讉€(gè)字
節(jié)至數(shù)百個(gè)字節(jié)的一類設(shè)備。
中速設(shè)備:指?jìng)鬏斔俾试诿棵腌姅?shù)千個(gè)
字節(jié)至數(shù)十千個(gè)字節(jié)的一類設(shè)
備。
高速設(shè)備:指?jìng)鬏斔俾试跀?shù)百千個(gè)字節(jié)
至數(shù)兆字節(jié)的一類設(shè)備。16按信息交換的單位分類:
塊設(shè)備:信息的存取以數(shù)據(jù)塊為單位。
屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是
磁盤,每個(gè)盤塊的大小為512B~4KB。
磁盤設(shè)備的基本特征:傳輸速率
較高;可尋址;I/O系采用DMA方式。
字符設(shè)備:基本單位是字符,用于數(shù)據(jù)的輸
入和輸出。屬于無(wú)結(jié)構(gòu)設(shè)備。交
互式終端、打印機(jī)等都屬于字符
設(shè)備。它的基本特征是:傳輸速
率較低;不可尋址;字符設(shè)備
在I/O時(shí),常采用中斷驅(qū)動(dòng)方式。17按設(shè)備的共享屬性分類:
獨(dú)占設(shè)備:指在一段時(shí)間內(nèi)只允許一個(gè)用戶
(進(jìn)程)訪問(wèn)的設(shè)備,即臨界資源。
共享設(shè)備:指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同
時(shí)訪問(wèn)的設(shè)備。共享設(shè)備必須是
可尋址的和可隨機(jī)訪問(wèn)的設(shè)備。
典型的共享設(shè)備是磁盤。
虛擬設(shè)備:指通過(guò)虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備
變換為若干臺(tái)邏輯設(shè)備,供若干
個(gè)用戶(進(jìn)程)同時(shí)使用,通常
把這種經(jīng)過(guò)虛擬技術(shù)處理后的設(shè)
備,稱為虛擬設(shè)備。18
2.設(shè)備與控制器之間的接口
在該接口中有三種類型的信號(hào):數(shù)據(jù)信號(hào):對(duì)輸入而言,由設(shè)備發(fā)送給設(shè)備控制器;對(duì)輸出而言,由設(shè)備控制器所接收的比特流??刂菩盘?hào):是設(shè)備控制器發(fā)送給設(shè)備的、用語(yǔ)規(guī)定設(shè)備執(zhí)行讀或?qū)懖僮鞯男盘?hào),或執(zhí)行其它操作的信號(hào)。狀態(tài)信號(hào):用語(yǔ)指示設(shè)備的當(dāng)前狀態(tài)。196.2.2設(shè)備控制器定義:設(shè)備控制器是CPU與I/O設(shè)備之間的接口,它接收從CPU發(fā)來(lái)的命令,并去控制I/O設(shè)備工作,使處理機(jī)從繁雜的設(shè)備控制事務(wù)中解脫出來(lái)。設(shè)備控制器分成兩大類:用于控制字符設(shè)備的控制器;用于控制塊設(shè)備的控制器。20
(1)設(shè)備控制器的功能:接收和識(shí)別命令:CPU向設(shè)備控制器發(fā)送多種不同的命令,設(shè)備控制器能夠接收并識(shí)別這些命令.數(shù)據(jù)交換:實(shí)現(xiàn)CPU與控制器之間、控制器與設(shè)備之間的數(shù)據(jù)交換.設(shè)備狀態(tài)的了解和報(bào)告:控制器應(yīng)記下設(shè)備的狀態(tài)供CPU了解.地址識(shí)別:系統(tǒng)中的每一個(gè)設(shè)備都有一個(gè)地址,設(shè)備控制器必須能夠識(shí)別它所控制的設(shè)備的地址.21
(1)設(shè)備控制器的功能:數(shù)據(jù)緩沖區(qū):在控制器中必須設(shè)置一緩沖區(qū)。在輸出時(shí),用此緩沖區(qū)暫存由主機(jī)高速傳來(lái)的數(shù)據(jù)。在輸入時(shí),緩沖區(qū)則用于暫存從I/O設(shè)備送來(lái)的數(shù)據(jù)。差錯(cuò)控制:對(duì)于由I/O設(shè)備傳送來(lái)的數(shù)據(jù),設(shè)備控制器還兼管進(jìn)行差錯(cuò)檢測(cè)。22(2)設(shè)備控制器的組成:設(shè)備控制器與處理機(jī)的接口
該接口用于實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信。共有三類信號(hào)線:數(shù)據(jù)線、地址線和控制線。
數(shù)據(jù)線通常與兩類寄存器相連接:
與數(shù)據(jù)寄存器連接:在設(shè)備控制器中有一個(gè)火多個(gè)數(shù)據(jù)寄存器,用于存放從設(shè)備送來(lái)的數(shù)據(jù)(輸入),或從CPU送來(lái)的數(shù)據(jù)(輸出).
與控制/狀態(tài)寄存器連接:在控制器中可以有一個(gè)或多個(gè)這類寄存器,用于存放從CPU送來(lái)的控制信息或設(shè)備的狀態(tài)信息。23
設(shè)備控制器與設(shè)備的接口
在一個(gè)控制器上可以連接一個(gè)或多個(gè)設(shè)備.相應(yīng)地,在控制器上便有一個(gè)或多個(gè)設(shè)備接口,一個(gè)接口連接一臺(tái)設(shè)備。
在每個(gè)接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類型的信號(hào)。
控制器中的I/O邏輯根據(jù)處理機(jī)發(fā)來(lái)的地址信號(hào),去選擇一個(gè)設(shè)備接口。24I/O邏輯:
用于實(shí)現(xiàn)對(duì)設(shè)備的控制。通過(guò)一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)送I/O命令;I/O邏輯對(duì)收到的命令進(jìn)行譯碼。
每當(dāng)CPU要啟動(dòng)一個(gè)設(shè)備時(shí),一方面將啟動(dòng)命令發(fā)送給控制器;另一方面又同時(shí)通過(guò)地址線把地址發(fā)送給控制器,由控制器的I/O邏輯對(duì)收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對(duì)所選設(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ì)算機(jī)中,為實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信,為每個(gè)控制寄存器分配一個(gè)I/O端口,另外還設(shè)置了一些特定的I/O指令。缺點(diǎn):訪問(wèn)內(nèi)存和訪問(wèn)設(shè)備需要兩種不同的指令。276.2.3內(nèi)存映像I/O(2)內(nèi)存映像I/O
在這種方式中,在編址上不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k值處于0~n-1范圍時(shí),被認(rèn)為是內(nèi)存地址,若k大于等于n時(shí),被認(rèn)為是某個(gè)控制器的寄存器地址。內(nèi)存映像I/O方式統(tǒng)一了對(duì)內(nèi)存和控制器的訪問(wèn)方法,簡(jiǎn)化了I/O的編程286.2.4I/O通道(1)通道設(shè)備的引入主要目的:
為了使原來(lái)由CPU處理的I/O任務(wù)轉(zhuǎn)由通道來(lái)承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來(lái)。I/O通道與一般的處理機(jī)的不同:通道的指令類型單一;通道沒(méi)有自己的內(nèi)存,它與CPU共享內(nèi)存。29(2)通道類型字節(jié)多路通道(ByteMultiplexorChannal)優(yōu)點(diǎn):能使各子通道(設(shè)備)分時(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)“瓶頸”問(wèn)題
通道數(shù)量較少成為I/O的瓶頸,造成個(gè)系統(tǒng)吞吐量的下降。解決方法:
加設(shè)備到主機(jī)間的通路,而不增加通道。換言之,就是把一個(gè)設(shè)備連接到多個(gè)控制器上;而一個(gè)控制器又連接到多個(gè)通道上。
多路方式不僅解決了“瓶頸”問(wèn)題,而且提高了系統(tǒng)的可靠性,因?yàn)閭€(gè)別通道或控制器的故障,不會(huì)使設(shè)備與存儲(chǔ)器之間沒(méi)有通路。32
存儲(chǔ)器通道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
存儲(chǔ)器通道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中斷簡(jiǎn)介
(1)中斷和陷入中斷:又稱外中斷,是指CPU對(duì)I/O設(shè)備發(fā)來(lái)的中斷信號(hào)的一種響應(yīng)。
陷入:又稱內(nèi)中斷,是一種由CPU內(nèi)部事件所引起的中斷。
中斷和陷入的主要區(qū)別是信號(hào)的來(lái)源,即是來(lái)自CPU外部,還是CPU內(nèi)部。35(2)中斷向量表和中斷優(yōu)先級(jí)
中斷向量表:中斷向量表中的每一個(gè)表項(xiàng)對(duì)應(yīng)著一個(gè)中斷號(hào)。為了處理上的方便,通常是為每種設(shè)備配以相應(yīng)的中斷處理程序,并把該程序的入口地址放在中斷向量表中,并為每一個(gè)設(shè)備的中斷請(qǐng)求規(guī)定一個(gè)中斷號(hào)。
中斷優(yōu)先級(jí):中斷源對(duì)服務(wù)要求的緊急程度。36(3)對(duì)多中斷源的處理方式
1.屏蔽(禁止)中斷當(dāng)處理機(jī)正在處理一個(gè)中斷時(shí),將屏蔽掉所有的中斷,即處理機(jī)對(duì)任何新到的中斷請(qǐng)求,都暫時(shí)不予理睬,而讓它們等待。
其優(yōu)點(diǎn)是簡(jiǎn)單,但不能用于對(duì)實(shí)時(shí)性要求較高的中斷請(qǐng)求。
37
2.嵌套中斷
在設(shè)置了中斷優(yōu)先級(jí)的系統(tǒng)中,按一下規(guī)則進(jìn)行優(yōu)先級(jí)控制:
1)當(dāng)同時(shí)有多個(gè)優(yōu)先級(jí)的中斷請(qǐng)求時(shí),CPU優(yōu)先響應(yīng)最高優(yōu)先級(jí)的中斷請(qǐng)求;
2)高優(yōu)先級(jí)的中斷請(qǐng)求可以搶占正在運(yùn)行的低優(yōu)先級(jí)中斷的處理機(jī),該方式類似于基于優(yōu)先級(jí)的搶占式進(jìn)程調(diào)度。
386.3.2中斷處理程序
在設(shè)備控制器的控制下,I/O設(shè)備完成了I/O操作后,控制器便向CPU發(fā)出一中斷請(qǐng)求,CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序.中斷處理程序的步驟:?jiǎn)拘驯蛔枞尿?qū)動(dòng)程序進(jìn)程.保護(hù)被中斷進(jìn)程的CPU環(huán)境.分析中斷原因、轉(zhuǎn)入相應(yīng)的設(shè)備中斷處理程序進(jìn)行中斷處理.恢復(fù)被中斷進(jìn)程的現(xiàn)場(chǎng).39PSWPC(N+1)T開始返回PSWPC(N+1)程序狀態(tài)字程序計(jì)數(shù)器寄存器線指針用戶程序中斷服務(wù)子例程中斷棧YNN+1………T+M中斷現(xiàn)場(chǎng)保護(hù)示意圖40喚醒被阻塞的驅(qū)動(dòng)程序進(jìn)程對(duì)被中斷進(jìn)程的CPU環(huán)境進(jìn)行保護(hù)分析中斷原因,轉(zhuǎn)入相應(yīng)的中斷處理程序打印機(jī)中斷處理程序終端中斷處理程序磁盤中斷處理程序恢復(fù)被中斷進(jìn)程的CPU現(xiàn)場(chǎng)返回被中斷的進(jìn)程,繼續(xù)執(zhí)行
中斷處理流程:416.4設(shè)備驅(qū)動(dòng)程序設(shè)備處理程序通常又稱為設(shè)備驅(qū)動(dòng)程序,它是I/O進(jìn)程與設(shè)備控制器之間的通信程序,簡(jiǎn)稱為設(shè)備驅(qū)動(dòng)進(jìn)程。它的主要任務(wù)是:接收上層軟件發(fā)來(lái)的抽象I/O要求;將由設(shè)備控制器發(fā)來(lái)的信號(hào)傳送給上層軟件。426.4.1設(shè)備驅(qū)動(dòng)程序概述(1)設(shè)備驅(qū)動(dòng)程序的功能將接收到的抽象要求轉(zhuǎn)換為具體要求。檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。發(fā)出I/O命令,啟動(dòng)分配到的I/O設(shè)備,完成指定的I/O操作。及時(shí)響應(yīng)由控制器或通道發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。對(duì)于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),驅(qū)動(dòng)程序還應(yīng)能夠根據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。43
(2)設(shè)備驅(qū)動(dòng)程序的特點(diǎn)實(shí)現(xiàn)在與設(shè)備無(wú)關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序。與設(shè)備控制器以及I/O設(shè)備的硬件特性緊密相關(guān)。與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語(yǔ)言書寫。應(yīng)允許可重入。44
(3)設(shè)備處理方式為每一類設(shè)備設(shè)置一個(gè)進(jìn)程,它專門執(zhí)行這類設(shè)備的I/O操作。在整個(gè)系統(tǒng)中設(shè)置一個(gè)I/O進(jìn)程,專門負(fù)責(zé)對(duì)系統(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ū)動(dòng)程序的處理過(guò)程
不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動(dòng)程序。
以下是設(shè)備處理程序的處理過(guò)程:將抽象要求轉(zhuǎn)換為具體要求;對(duì)服務(wù)請(qǐng)求進(jìn)行校驗(yàn),即檢查I/O請(qǐng)求的合法性;讀出和檢查設(shè)備的狀態(tài);傳送必要的參數(shù);啟動(dòng)I/O設(shè)備.46宗旨:盡量減少主機(jī)對(duì)I/O控制的干預(yù),把主機(jī)從繁雜的I/O控制事務(wù)中解脫出來(lái),以更多地去完成其數(shù)據(jù)處理任務(wù)。I/O控制的四個(gè)發(fā)展階段:輪詢的可編程I/O方式中斷驅(qū)動(dòng)I/O控制方式直接存儲(chǔ)器訪問(wèn)DMA控制方式I/O通道控制方式6.4.3對(duì)I/O設(shè)備的控制方式47使用輪詢的可編程I/O方式(忙—等待方式)
在處理機(jī)向設(shè)備控制器發(fā)出一條I/O指令啟動(dòng)輸入設(shè)備、輸入數(shù)據(jù)時(shí),同時(shí)把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1,然后不斷地循環(huán)測(cè)試busy。當(dāng)busy=1時(shí),表示輸入機(jī)尚未輸完一個(gè)字(符),處理機(jī)應(yīng)繼續(xù)對(duì)該標(biāo)志進(jìn)行測(cè)試,直至busy=0,表明輸入機(jī)已將輸入數(shù)據(jù)送入控制器的數(shù)據(jù)寄存器中,于是處理機(jī)將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存指定單元中,接著,再啟動(dòng)去讀下一個(gè)數(shù)據(jù),并置busy=1。48
向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)向存儲(chǔ)器中寫字從I/O控制器中讀入字檢查狀態(tài)?傳送完成?完成下條指令CPUI/OI/OCPU出錯(cuò)I/OCPUCPU內(nèi)存未完向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)向存儲(chǔ)器中寫字從I/O控制器中讀入字檢查狀態(tài)?傳送完成?完成下條指令CPUI/OI/OCPU出錯(cuò)I/OCPUCPU內(nèi)存未完就緒未就緒就緒CPU做其它事中斷向I/O控制器發(fā)布讀塊命令讀DMA控制器的狀態(tài)CPU->DMACPU做其它事中斷DMA->CPU下條指令(c)DMA方式(a)程序I/O方式(b)中斷驅(qū)動(dòng)方式
程序I/O和中斷驅(qū)動(dòng)
方式的流程49
中斷可編程I/O方式
當(dāng)某進(jìn)程要啟動(dòng)某個(gè)I/O設(shè)備工作時(shí),便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來(lái)的任務(wù)。設(shè)備控制器按照該命令的要求去控制I/O設(shè)備。此時(shí),CPU與I/O設(shè)備并行操作。這樣可以提高整個(gè)系統(tǒng)的資源利用率及吞吐量??梢?,中斷驅(qū)動(dòng)方式可以成百倍地提高CPU的利用率。50直接存儲(chǔ)器訪問(wèn)DMA控制方式(1)DMA控制方式的引入目的:為了進(jìn)一步減少CPU對(duì)I/O的干預(yù)。特點(diǎn):數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反;僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需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ù)計(jì)數(shù)器DC52
CoutDRMARDCCRI/O控制邏輯CPU內(nèi)存主機(jī)—控制器接口
控制器與塊設(shè)備接口系統(tǒng)總線DMA控制器命令DMA控制器的組成53
(3)DMA工作過(guò)程啟動(dòng)DMA傳送命令設(shè)置AR和DC的初值在繼續(xù)執(zhí)行用戶程序的同時(shí),準(zhǔn)備一次傳送挪用存儲(chǔ)器周期傳送數(shù)據(jù)字存儲(chǔ)器地址增1字記數(shù)寄存器減1請(qǐng)求中斷DC-0?否是DMA方式的工作流程54(4)I/O通道控制方式1)I/O通道控制方式的引入I/O通道方式是DMA方式的發(fā)展,它可進(jìn)一步減少CPU的干預(yù),即把對(duì)一個(gè)數(shù)據(jù)塊的讀(或?qū)懀閱挝坏母深A(yù),減少為對(duì)一組數(shù)據(jù)塊的讀(或?qū)懀┘坝嘘P(guān)的控制和管理為單位的干預(yù)。同時(shí),又可實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行工作,從而更有效地提高了整個(gè)系統(tǒng)的資源利用率。552)通道程序
通道是通過(guò)執(zhí)行通道程序,并與設(shè)備控制器來(lái)共同實(shí)現(xiàn)對(duì)I/O設(shè)備的控制的。
通道程序是由一系列的通道指令(或稱為通道命令)所構(gòu)成。每條指令中包含下列信息:操作碼內(nèi)存地址計(jì)數(shù)通道程序結(jié)束位P記錄結(jié)束標(biāo)志R56以物理設(shè)備名使用設(shè)備引入了邏輯設(shè)備名邏輯設(shè)備名稱到物理設(shè)備名稱的轉(zhuǎn)換6.5與設(shè)備無(wú)關(guān)的I/O軟件6.5.1與設(shè)備無(wú)關(guān)軟件的基本概念57設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口緩沖管理差錯(cuò)控制(暫時(shí)性錯(cuò)誤、持久性錯(cuò)誤)對(duì)獨(dú)立設(shè)備的分配和回收獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊6.5.2
與設(shè)備無(wú)關(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)為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄本設(shè)備的情況。其中除了有用于指示設(shè)備類型的字段type和設(shè)備標(biāo)識(shí)符字段deviceid外,還有:設(shè)備隊(duì)列隊(duì)首指針;設(shè)備狀態(tài);與設(shè)備連接的控制器表指針;重復(fù)執(zhí)行次數(shù)。60
DCT1DCT2DCTn重復(fù)執(zhí)行次數(shù)或時(shí)間
設(shè)備隊(duì)列的對(duì)首指針
設(shè)備類型type設(shè)備標(biāo)識(shí)符:deviceid設(shè)備狀態(tài):等待/不等待
忙/閑
指向控制器表的指針
設(shè)備控制表:設(shè)備控制器集合61
(2)控制器控制表、通道表和系統(tǒng)設(shè)備表控制器控制表COCT:
系統(tǒng)為每一個(gè)控制器設(shè)置一張用于記錄本控制器情況的控制器控制表??刂破鳂?biāo)識(shí)符:controllerid控制器狀態(tài):忙/閑與控制器連接的通道表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)尾指針62通道控制表CHCT
每個(gè)通道都配有一張通道控制表。通道標(biāo)識(shí)符:channelid通道狀態(tài):忙/閑與通道連接的控制器表首址通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)尾指針63
(a)(b)表目1表目i……設(shè)
備
類設(shè)備標(biāo)識(shí)符DCT驅(qū)動(dòng)程序入口系統(tǒng)設(shè)備表SDT
記錄了系統(tǒng)中全部設(shè)備的情況。每個(gè)設(shè)備占一個(gè)表目,其中包括有設(shè)備類型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表及設(shè)備驅(qū)動(dòng)程序的入口等項(xiàng)。64
設(shè)備分配時(shí)應(yīng)考慮的若干因素
系統(tǒng)在進(jìn)行設(shè)備分配時(shí),應(yīng)考慮因素包括以下幾項(xiàng):
設(shè)備的固有屬性
設(shè)備分配算法
設(shè)備分配的安全性
設(shè)備獨(dú)立性65
(1)考慮設(shè)備的固有屬性
設(shè)備的固有樹型可分成兩類:獨(dú)占與共享。
對(duì)不同類型的設(shè)備采取不同的分配策略。獨(dú)享設(shè)備—采用獨(dú)享分配策略,將一個(gè)設(shè)備分配給某進(jìn)程后,一直由該進(jìn)程獨(dú)占,直到該進(jìn)程完成或釋放該設(shè)備,系統(tǒng)才能將該設(shè)備分配給其它進(jìn)程使用.注意分配不當(dāng)進(jìn)程會(huì)死鎖.共享設(shè)備—將它同時(shí)分配給多個(gè)進(jìn)程使用,但這些進(jìn)程對(duì)設(shè)備的訪問(wèn)需進(jìn)行合理的調(diào)度;虛擬設(shè)備—已屬可共享設(shè)備,可將它分配給多個(gè)進(jìn)程使用,并可對(duì)這些進(jìn)程訪問(wèn)該設(shè)備的先后次序進(jìn)行控制。66
(2)設(shè)備分配算法先來(lái)先服務(wù):
根據(jù)進(jìn)程對(duì)某設(shè)備提出請(qǐng)求的先后次序,將這些進(jìn)程排成一個(gè)設(shè)備請(qǐng)求隊(duì)列,設(shè)備分配程序把設(shè)備首先分配給隊(duì)首進(jìn)程。優(yōu)先級(jí)高者優(yōu)先:
在利用該算法形成設(shè)備隊(duì)列時(shí),將優(yōu)先級(jí)高的進(jìn)程排在設(shè)備隊(duì)列前面,優(yōu)先權(quán)高的進(jìn)程優(yōu)先獲得處理機(jī)。而對(duì)于優(yōu)先級(jí)相同的I/O請(qǐng)求,則按先來(lái)先服務(wù)原則排隊(duì)。67
(3)設(shè)備分配中的安全性
從進(jìn)程運(yùn)行的安全性考慮設(shè)備分配的方式:安全分配方式
每當(dāng)進(jìn)程發(fā)出I/O請(qǐng)求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時(shí)才被喚醒。
采用這種分配策略,一旦進(jìn)程已經(jīng)獲得某種設(shè)備(資源)后便阻塞,使其不可能再請(qǐng)求任何資源,而在運(yùn)行期間又不保持任何資源,因此這種分配方式擯棄了造成死鎖的四個(gè)必要條件之一的“請(qǐng)求和保持”條件,分配是安全的.68不安全分配方式
進(jìn)程發(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í),進(jìn)程才進(jìn)入阻塞狀態(tài)。
優(yōu)點(diǎn):一個(gè)進(jìn)程可以同時(shí)操作多個(gè)設(shè)備,使進(jìn)程推進(jìn)迅速.
缺點(diǎn):分配不安全,可能具備“請(qǐng)求和保持”條件,造成死鎖.69
獨(dú)占設(shè)備的分配程序1)基本的設(shè)備分配程序
當(dāng)某進(jìn)程提出I/O請(qǐng)求后,系統(tǒng)的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配:
分配設(shè)備;
分配控制器;
分配通道。2)設(shè)備分配程序的改進(jìn)
在基本的設(shè)備分配程序中,進(jìn)程是以物理設(shè)備名提出I/O請(qǐng)求的。設(shè)備分配程序不具有與設(shè)備無(wú)關(guān)性,為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O。706.5.4邏輯設(shè)備名到物理設(shè)備名映射
的實(shí)現(xiàn)1.邏輯設(shè)備表LUT
每個(gè)表目中包含三項(xiàng):邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址。
系統(tǒng)通過(guò)查找LUT,便可找到該邏輯設(shè)備所對(duì)應(yīng)的物理設(shè)備和該設(shè)備的驅(qū)動(dòng)程序。邏輯設(shè)備名物理設(shè)備名驅(qū)動(dòng)程序入口地址/dev/tty31024/dev/printer52046………邏輯設(shè)備名系統(tǒng)設(shè)備表指針/dev/tty3/dev/printer5……71邏輯設(shè)備表(LogicalUnitTable)
為了實(shí)現(xiàn)設(shè)備的獨(dú)立性,系統(tǒng)必須能夠?qū)?yīng)用程序中使用的邏輯設(shè)備名映射成物理設(shè)備名,為此必須有一張邏輯設(shè)備表LUT(LogicalUnitTable).
當(dāng)進(jìn)程用邏輯設(shè)備名來(lái)請(qǐng)求分配I/O設(shè)備時(shí),系統(tǒng)為它分配相應(yīng)的物理設(shè)備,并在LUT上建立一個(gè)表目,寫上應(yīng)用程序中使用的邏輯設(shè)備名和系統(tǒng)分配的物理設(shè)備名,以及該設(shè)備的驅(qū)動(dòng)程序入口地址.72
2.LUT的設(shè)置問(wèn)題LUT的設(shè)置可采取兩種方式:
整個(gè)系統(tǒng)設(shè)置一張LUT:由于系統(tǒng)中所有進(jìn)程的設(shè)備分配情況都記錄在同一張表LUR中,不允許在LUT中具有相同的邏輯設(shè)備名,要求所有用戶不使用相同的邏輯設(shè)備名。這種方式主要用于單用戶系統(tǒng)中;在多用戶系統(tǒng)難做到.
為每個(gè)用戶設(shè)置一張LUT:每當(dāng)用戶登錄時(shí),便為用戶建立一個(gè)進(jìn)程,同時(shí)也為之建立一張LUT,并將該表放入進(jìn)程的PCB中。此時(shí)的邏輯設(shè)備表可以采用的格式有了一點(diǎn)變化:
73系統(tǒng)調(diào)用
一個(gè)中介過(guò)程,應(yīng)用程序可以通過(guò)系統(tǒng)調(diào)用間接調(diào)用OS中的I/O過(guò)程,對(duì)I/O設(shè)備進(jìn)行操作。
系統(tǒng)調(diào)用是應(yīng)用程序取得OS所有服務(wù)的唯一途徑。庫(kù)函數(shù)
內(nèi)核提供了OS的基本功能,而庫(kù)函數(shù)擴(kuò)展了OS內(nèi)核。6.6用戶層的I/O軟件6.6.1系統(tǒng)調(diào)用與庫(kù)函數(shù)746.6.2假脫機(jī)SPOOLing系統(tǒng)
早期的計(jì)算機(jī)系統(tǒng)只能由一個(gè)用戶獨(dú)占.后來(lái)的多用戶系統(tǒng)允許多個(gè)用戶共享一臺(tái)主機(jī).通過(guò)SPOOLing技術(shù)將一臺(tái)獨(dú)占設(shè)備改造成共享設(shè)備.
當(dāng)系統(tǒng)中出現(xiàn)多道程序后,利用其中的一道程序模擬脫機(jī)輸入時(shí)的外圍控制器的功能,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;再利用另一道程序來(lái)模擬脫機(jī)輸出時(shí)外圍控制器的功能,把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上.這樣在主機(jī)的直接控制下實(shí)現(xiàn)脫機(jī)輸入、輸出功能.75(1)什么是SPOOLing:SimultaneausPeriphernalOperationsOn-Line,或稱為假脫機(jī)操作,指在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作。(2)SPOOLing系統(tǒng)的組成:SPOOLing系統(tǒng)是對(duì)脫機(jī)輸入、輸出工作的模擬.必須有告訴隨即外存的支持,通常是磁盤.SPOOLing系統(tǒng)主要有下面三個(gè)部分:76
輸入井和輸出井:
輸入井是模擬脫機(jī)輸入時(shí)的磁盤,用于收容I/O設(shè)備輸入的數(shù)據(jù)。
輸出井是模擬脫機(jī)輸出時(shí)的磁盤,用于收容用戶程序的輸出數(shù)據(jù)。輸入緩沖區(qū)和輸出緩沖區(qū)
輸入緩沖區(qū)用于暫存由輸入設(shè)備送來(lái)的數(shù)據(jù),以后再傳送到輸入井。
輸出緩沖區(qū)用于暫存從輸出井送來(lái)的數(shù)據(jù),以后再傳送給輸出設(shè)備。77
輸入進(jìn)程SPi和輸出進(jìn)程SP0
進(jìn)程SPi模擬脫機(jī)輸入時(shí)的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī),通過(guò)輸入緩沖區(qū)再送到輸入井。當(dāng)CPU需要輸入數(shù)據(jù)時(shí),直接從輸入井讀入內(nèi)存。SP0進(jìn)程模擬脫機(jī)輸出時(shí)的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù),經(jīng)過(guò)輸出緩沖區(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è)備:通過(guò)輸入井和輸出井實(shí)現(xiàn)了獨(dú)占設(shè)備變?yōu)楣蚕碓O(shè)備.
實(shí)現(xiàn)了虛擬設(shè)備功能:實(shí)現(xiàn)了將獨(dú)占設(shè)備變換為若干個(gè)對(duì)應(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è)備,但通過(guò)利用SPOOLing技術(shù),可將它改造為一臺(tái)可供多個(gè)用戶共享的設(shè)備,從而提高設(shè)備的利用率,方便用戶的使用。
當(dāng)用戶進(jìn)程申請(qǐng)打印輸出時(shí),SPOOLing系統(tǒng)同意為進(jìn)程打印輸出,但并不真正分配打印機(jī)給該進(jìn)程,而只為該進(jìn)程做了兩件事:由輸出進(jìn)程在輸出井中為之申請(qǐng)一空閑盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;82
輸出進(jìn)程再為用戶進(jìn)程請(qǐng)求一張空白的用戶請(qǐng)求打印表,并將用戶的打印要求填入其中,再將該表掛到請(qǐng)求打印隊(duì)列上.如果還有進(jìn)程打印輸出,系統(tǒng)仍可以接收該請(qǐng)求.
如果打印機(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)求表.若有,又取出一張,并根據(jù)其中的要求進(jìn)行打印.如此下去直至請(qǐng)求隊(duì)列為空為止,輸出進(jìn)程才將自己阻塞起來(lái),直到下次再有打印請(qǐng)求時(shí)才被喚醒.83(5)守護(hù)進(jìn)程
對(duì)假脫機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)打印機(jī)共享進(jìn)行修改。取消假脫機(jī)管理進(jìn)程,為打印機(jī)建立一個(gè)守護(hù)進(jìn)程,由它執(zhí)行一部分原來(lái)由假脫機(jī)管理進(jìn)程實(shí)現(xiàn)的功能。
守護(hù)進(jìn)程是允許使用打印機(jī)的唯一進(jìn)程。
除了打印機(jī)守護(hù)進(jìn)程之外,還可能有許多其它的守護(hù)進(jìn)程。事實(shí)上,凡是需要將獨(dú)占設(shè)備改造為可供多個(gè)進(jìn)程共享的設(shè)備時(shí),都要為該設(shè)備配置一個(gè)守護(hù)進(jìn)程和一個(gè)假脫機(jī)文件隊(duì)列(目錄)。
846.7緩沖區(qū)管理
為了提高I/O速度和設(shè)備的利用率,在很大程度上都需要借助于緩沖技術(shù)來(lái)實(shí)現(xiàn)。在CPU與所有的I/O設(shè)備交換數(shù)據(jù)時(shí)都使用了緩沖區(qū).
緩沖區(qū)管理的主要功能是組織好這些緩沖區(qū),并提供獲得和釋放緩沖區(qū)的手段。856.7.1緩沖的引入引入緩沖的原因:緩和CPU與I/O設(shè)備間速度不匹配的矛盾:
在數(shù)據(jù)到達(dá)速率與數(shù)據(jù)離去速率不同的地方,可以設(shè)置緩沖解決不匹配的問(wèn)題.如滿速的打印機(jī)與快速CPU之間速度不匹配時(shí)給打印機(jī)加上緩沖區(qū)正是為了解決這一問(wèn)題.86
減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷響應(yīng)時(shí)間的限制:如果從遠(yuǎn)地發(fā)來(lái)的數(shù)據(jù)僅用一位緩沖來(lái)接收,則必須在每收到一位數(shù)據(jù)時(shí)便中斷CPU一次.這樣,對(duì)于速度為9.6kb/s的數(shù)據(jù)通信來(lái)說(shuō),意味著其中斷CPU的頻率也為9.6kb/s,即每100us就要中斷CPU一次,而且CPU必須在100us內(nèi)予以響應(yīng),否則緩沖區(qū)的數(shù)據(jù)將被沖掉。如果設(shè)計(jì)一個(gè)8位的緩沖寄存器,則可使CPU被中斷的響應(yīng)時(shí)間放寬到800us.87解決數(shù)據(jù)粒度不匹配的問(wèn)題:緩沖區(qū)可用于解決在生產(chǎn)者和消費(fèi)者之間交換的數(shù)據(jù)粒度(數(shù)據(jù)單元大?。┎黄ヅ涞膯?wèn)題。例如,生產(chǎn)者所生產(chǎn)的數(shù)據(jù)粒度比消費(fèi)者消費(fèi)的數(shù)據(jù)粒度小時(shí),生產(chǎn)者進(jìn)程可以一連生產(chǎn)好幾個(gè)數(shù)據(jù)單元的數(shù)據(jù),當(dāng)其總和已達(dá)到消費(fèi)者進(jìn)程所要求的數(shù)據(jù)單元大小時(shí),消費(fèi)者便可從緩沖區(qū)中取出消費(fèi)。反之,如果生產(chǎn)者所生產(chǎn)的數(shù)據(jù)粒度比消費(fèi)者消費(fèi)的數(shù)據(jù)粒度大時(shí),生產(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)提供的最簡(jiǎn)單的一種緩沖形式。
每當(dāng)一個(gè)用戶進(jìn)程發(fā)出一個(gè)I/O請(qǐng)求時(shí),操作系統(tǒng)便在主存中為之分配一緩沖區(qū)
。
90
在塊設(shè)備輸入時(shí),先從設(shè)備把一塊數(shù)據(jù)輸入到緩沖區(qū),其所化費(fèi)的時(shí)間為T,然后由操作系統(tǒng)將緩沖區(qū)的數(shù)據(jù)傳送到用戶區(qū),其所花費(fèi)的時(shí)間為M;之后是CPU對(duì)這段數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算時(shí)間假定為C;則系統(tǒng)對(duì)每一整塊數(shù)據(jù)的處理時(shí)間為max(C,T)+M.
在字符設(shè)備輸入時(shí),緩沖區(qū)用于暫存用戶的一行數(shù)據(jù)。在輸入期間,用戶進(jìn)程被掛起等待一行數(shù)據(jù)輸入完畢;在輸出時(shí),用戶進(jìn)程將一行數(shù)據(jù)送入緩沖區(qū)后繼續(xù)執(zhí)行計(jì)算。當(dāng)用戶進(jìn)程已有第二行數(shù)據(jù)輸出時(shí),若第一行數(shù)據(jù)尚未提取完畢,用戶進(jìn)程應(yīng)阻塞。91用戶進(jìn)程操作系統(tǒng)傳送輸入I/O設(shè)備單緩沖工作時(shí):
當(dāng)存在輸入輸出設(shè)備時(shí)進(jìn)程要對(duì)這些設(shè)備進(jìn)行并發(fā)操作,而輸入和輸出設(shè)備的速率不能匹配時(shí),則為每個(gè)設(shè)備單獨(dú)分配一個(gè)單緩沖區(qū)是不行的,必須考慮為設(shè)備分配雙緩沖區(qū)。92
例如存在一個(gè)從卡片機(jī)上讀入數(shù)據(jù),又要把數(shù)據(jù)在打印機(jī)上打印的作業(yè)時(shí),當(dāng)這兩個(gè)進(jìn)程要并發(fā)操作,卡片機(jī)和打印機(jī)的速率不能匹配時(shí),則為滿的設(shè)備分配雙緩沖區(qū)。93
雙緩沖
為了加快輸入、輸出速度和提高設(shè)備利用率,又引入了雙緩沖工作方式,也稱為緩沖對(duì)換方式。用戶進(jìn)程傳送輸入I/O設(shè)備操作系統(tǒng)94
在設(shè)備輸入時(shí),先將數(shù)據(jù)輸入第一緩沖區(qū),裝滿后便轉(zhuǎn)向第二緩沖區(qū)。此時(shí)操作系統(tǒng)可從第一緩沖區(qū)中移出數(shù)據(jù)送用戶進(jìn)程區(qū),接著由CPU對(duì)數(shù)據(jù)進(jìn)行計(jì)算。
在雙緩沖時(shí)系統(tǒng)處理一塊數(shù)據(jù)的時(shí)間可以粗略為max(C,T)。如果C<T,可使塊設(shè)備連續(xù)輸入;如果C>T,可使CPU不必等待設(shè)備輸入。對(duì)于字符設(shè)備,若采用行輸入方式,則采用雙緩沖工作方式時(shí)通常用戶進(jìn)程不會(huì)阻塞,消除了用戶等待時(shí)間,用戶在第一行完成后,CPU執(zhí)行命令時(shí),可繼續(xù)向第二緩沖區(qū)輸入下一行。95緩沖區(qū)緩沖區(qū)A機(jī)B機(jī)
單緩沖
在實(shí)現(xiàn)兩臺(tái)機(jī)器之間的通信時(shí),如果僅為每個(gè)進(jìn)程配置單緩沖區(qū)時(shí),則任何時(shí)刻只能以單方向的數(shù)據(jù)傳送。即下圖中從A到B,或從B到A.96
發(fā)送緩沖區(qū)接收緩沖區(qū)
接收
緩沖區(qū)
發(fā)送
緩沖區(qū)A機(jī)B機(jī)(b)
雙緩沖
為了實(shí)現(xiàn)雙向通信,必須為每臺(tái)設(shè)備設(shè)置兩個(gè)緩沖區(qū),一個(gè)用于發(fā)送數(shù)據(jù),一個(gè)用于接收數(shù)據(jù)。976.7.3環(huán)形緩沖區(qū)
當(dāng)前面的讀卡機(jī)和打印機(jī)的速度相差太遠(yuǎn)時(shí),雙緩沖區(qū)還不行,這時(shí)必須考慮用多緩沖。
并將多個(gè)緩沖區(qū)組織成環(huán)形緩沖區(qū)形式。對(duì)于用作輸入的循環(huán)緩沖,通常是提供給輸入進(jìn)程和計(jì)算進(jìn)程使用,輸入進(jìn)程不斷向空緩沖中輸入數(shù)據(jù),計(jì)算進(jìn)程則從中提取數(shù)據(jù)用于計(jì)算。98用戶進(jìn)程操作系統(tǒng)傳送輸入I/O設(shè)備(c)循環(huán)緩沖99(1)環(huán)形緩沖區(qū)的組成多個(gè)緩沖區(qū)
緩沖區(qū)可分成三種類型:
空緩沖區(qū)R:用于存放輸入數(shù)據(jù);
已裝滿數(shù)據(jù)的緩沖區(qū)G:其中的數(shù)據(jù)提供給計(jì)算進(jìn)程使用;
現(xiàn)行工作緩沖區(qū)C:計(jì)算進(jìn)程正在使用的緩沖區(qū)。100GGGGRRGCNextgNexti123456Nexti123456currentNextg環(huán)形緩沖區(qū)的組成:101多個(gè)指針
Nextg:指示計(jì)算進(jìn)程下一個(gè)可用的緩沖區(qū)G;
Nexti:指示輸入進(jìn)程下次可用的空緩沖區(qū)R;Current:指示計(jì)算進(jìn)程正在使用的緩沖區(qū)單元。(2)環(huán)形緩沖區(qū)的使用
Getbuf過(guò)程:當(dāng)計(jì)算進(jìn)程要使用緩沖區(qū)中的數(shù)據(jù)時(shí),可調(diào)用Getbuf過(guò)程。相應(yīng)將其改為現(xiàn)行工作緩沖區(qū),并用Current指針指向該緩沖區(qū)的第一個(gè)單元,同時(shí)將nextg移向下一個(gè)G緩沖區(qū)。
同理當(dāng)輸入進(jìn)程要使用空緩沖區(qū)裝入數(shù)據(jù)時(shí),也調(diào)用Getbuf過(guò)程。102Releasebuf過(guò)程:
當(dāng)計(jì)算進(jìn)程把C緩沖區(qū)中的數(shù)據(jù)提取完時(shí),便可調(diào)用Releasebuf過(guò)程,將該緩沖區(qū)C釋放。此時(shí)把當(dāng)前工作緩沖區(qū)改為空緩沖區(qū)R。同理,當(dāng)輸入進(jìn)程將緩沖區(qū)裝滿時(shí),也調(diào)用Releasebuf過(guò)程將該緩沖區(qū)釋放,并改為G緩沖區(qū)。103(3)進(jìn)程同步
使用輸入緩沖可使輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行。相應(yīng)地,指針Nexti和指針Nextg將不斷地沿順時(shí)針?lè)较蛞苿?dòng),出現(xiàn)兩種情況:Nexti指針追趕上Nextg指針
這種情況是輸入進(jìn)程的輸入數(shù)據(jù)速度大于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,被稱為系統(tǒng)受計(jì)算限制。
當(dāng)已把緩沖區(qū)裝滿時(shí)輸入進(jìn)程應(yīng)該阻塞等待計(jì)算進(jìn)程把某個(gè)緩沖區(qū)中數(shù)據(jù)提取完并調(diào)用Releasebuf過(guò)程釋放時(shí),喚醒輸入進(jìn)程。104Nextg指針追趕上Nexti指針:
當(dāng)輸入數(shù)據(jù)的速度低于計(jì)算進(jìn)程處理數(shù)據(jù)的速度時(shí),全部緩沖區(qū)(已有數(shù)據(jù))都已被抽空.這時(shí),計(jì)算進(jìn)程只有阻塞直至輸入進(jìn)程又裝滿某個(gè)緩沖區(qū)并調(diào)用Releasebuf過(guò)程將它釋放,才去喚醒計(jì)算進(jìn)程.這種情況又稱為系統(tǒng)受I/O限制.1056.7.4緩沖池
環(huán)形緩沖區(qū)僅適用于某特定的I/O進(jìn)程和計(jì)算進(jìn)程,屬于專用緩沖.當(dāng)系統(tǒng)較大時(shí),存在許多這樣的循環(huán)緩沖,浪費(fèi)太大利用率不高.
為了提高利用率,目前最廣泛使用的是公用緩沖池,池中的緩沖區(qū)可供多個(gè)進(jìn)程共享.106(1)緩沖池(BufferPool)的組成
對(duì)于既可用于輸入又可用于輸出的公用緩沖池,其中至少應(yīng)含有以下三種類型的緩沖區(qū):
空(閑)緩沖區(qū);
裝滿輸入數(shù)據(jù)的緩沖區(qū);
裝滿輸出數(shù)據(jù)的緩沖區(qū)。
為了管理上的方便,將相同類型的緩沖區(qū)鏈成一個(gè)隊(duì)列,形成以下三個(gè)隊(duì)列:107
空緩沖隊(duì)列emq:
由空緩沖區(qū)所鏈成的隊(duì)列.隊(duì)首指針F(emq)和隊(duì)尾指針L(emq)分別指向該隊(duì)列的首緩沖區(qū)和尾緩沖區(qū).輸入隊(duì)列inq:
由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成的隊(duì)列.隊(duì)首指針F(emq)和隊(duì)尾指針L(emq)分別指向該隊(duì)列的首緩沖區(qū)和尾緩沖區(qū).108
輸出隊(duì)列outg:
由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈成的隊(duì)列.隊(duì)首指針F(emq)和隊(duì)尾指針L(emq)分別指向該隊(duì)列的首緩沖區(qū)和尾緩沖區(qū).
除了以上三個(gè)隊(duì)列外,還應(yīng)具有四種工作緩沖區(qū):用于收容輸入數(shù)據(jù)的工作緩沖區(qū)用于提取輸入數(shù)據(jù)的工作緩沖區(qū)用于收容輸出數(shù)據(jù)的工作緩沖區(qū)用于提取輸出數(shù)據(jù)的工作緩沖區(qū)109
(2)Getbuf過(guò)程和Putbuf過(guò)程
為使多個(gè)進(jìn)程能互斥的訪問(wèn)緩沖池隊(duì)列,為每一隊(duì)列設(shè)置了一個(gè)互斥信號(hào)量MS(type),為保證多個(gè)進(jìn)程同步地使用緩沖區(qū),為每個(gè)緩沖隊(duì)列設(shè)置了一個(gè)資源信號(hào)量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ù)時(shí),便調(diào)用Getbuf(emq)過(guò)程,從emq隊(duì)列的隊(duì)首摘下一空緩沖區(qū),把它作為收容輸入工作緩沖區(qū)hin。然后,把數(shù)據(jù)輸入其中,裝滿后再調(diào)用Putbuf(inq,hin)過(guò)程,將該緩沖區(qū)掛在輸入隊(duì)列imq的隊(duì)尾。113
提取輸入工作方式
當(dāng)計(jì)算進(jìn)程需要輸入數(shù)據(jù)時(shí),調(diào)用Getbuf(inq)過(guò)程,從輸入隊(duì)列取得一緩沖區(qū),計(jì)算進(jìn)程從中提取數(shù)據(jù)。計(jì)算進(jìn)程用完該數(shù)據(jù)后,再調(diào)用Putbuf(emq,sin)過(guò)程,將緩沖掛到空緩沖隊(duì)列emq上。114收容輸出工作方式
當(dāng)計(jì)算進(jìn)程需要輸出時(shí)調(diào)用Getbuf(emq)過(guò)程,從空緩沖隊(duì)列emq的隊(duì)首取得一空緩沖,作為收容輸出工作緩沖區(qū)hout。當(dāng)其中裝滿輸出數(shù)據(jù)后,又調(diào)用Putbuf(outq,hout)過(guò)程,將該緩沖區(qū)掛在outq末尾。115
提取輸出工作方式
當(dāng)要輸出時(shí),由輸出進(jìn)程調(diào)用Getbuf(outq)過(guò)程,從輸出隊(duì)列的隊(duì)首取得一裝滿輸出數(shù)據(jù)的緩沖區(qū),作為提取輸出工作緩沖區(qū)sout。在數(shù)據(jù)提取完后,再調(diào)用Putbuf(emq,sout)過(guò)程,將它掛在空緩沖隊(duì)列的末尾。1166.8磁盤存儲(chǔ)器的性能和調(diào)度磁盤存儲(chǔ)器管理的主要任務(wù)是:為文件分配必要的存儲(chǔ)空間,使每個(gè)文件能“各得其所”;合理地組織文件的存取方式,以提高對(duì)文件的訪問(wèn)速度117提高磁盤存儲(chǔ)空間的利用率;提高對(duì)磁盤的I/O速度,以改善文件系統(tǒng)的性能;采取必要的冗余措施,來(lái)確保文件系統(tǒng)的可靠性。118提高磁盤I/O速度的主要途徑有:選擇性能好的磁盤;采用好的磁盤調(diào)度算法;設(shè)置磁盤高速緩沖區(qū)。1196.8.1磁盤性能簡(jiǎn)述1數(shù)據(jù)的組織和格式為了在磁盤上存儲(chǔ)數(shù)據(jù),必須將磁盤格式化。
磁盤設(shè)備可包括一個(gè)或多個(gè)盤片,每片分為兩面,每面可分為若干條磁道(典型值為500-2000),各磁道之間留有必要的間隙。每條磁道又分為若干扇區(qū)(典型值為10-100)。每個(gè)扇區(qū)的大小相當(dāng)于一個(gè)盤塊.各扇區(qū)之間保留一定的間隙.溫盤(溫切斯特):每條磁道含有30個(gè)固定大小的扇區(qū),每個(gè)扇區(qū)容量為600個(gè)字節(jié),其中512字節(jié)存放數(shù)據(jù),其余用于存放控制信息.120每個(gè)扇區(qū)包括兩個(gè)字段:標(biāo)識(shí)符字段:其中一個(gè)字節(jié)的SYNCH具有特定的位圖像,作為該字段的定界符,利用磁道號(hào)、磁頭號(hào)、扇區(qū)號(hào)三者來(lái)標(biāo)示一個(gè)扇區(qū);CRC字段用于段校驗(yàn)。數(shù)據(jù)字段:存放512個(gè)字節(jié)的數(shù)據(jù)。(2)磁盤的類型
對(duì)磁盤可從不同的角度進(jìn)行分類。最常見的有:將磁盤分成硬盤和軟盤、單片盤和多片盤、固定頭磁盤和活動(dòng)頭磁盤等。固定頭磁盤移動(dòng)頭磁盤121(3)磁盤訪問(wèn)時(shí)間尋道時(shí)間Ts:
這是把磁頭從當(dāng)前位置移動(dòng)到指定磁道上所經(jīng)歷的時(shí)間。
Ts=m*n+s
式中,m是一常數(shù),它與磁盤驅(qū)動(dòng)器的速度有關(guān)。對(duì)一般磁盤,m=0.2;對(duì)高速磁盤,m<=0.1,磁盤啟動(dòng)時(shí)間約為2ms。122旋轉(zhuǎn)延遲時(shí)間Tr:
Tr是指定扇區(qū)移動(dòng)到磁頭下面所經(jīng)歷的時(shí)間。
對(duì)于硬盤,典型的旋轉(zhuǎn)速度為15
000r/min,每轉(zhuǎn)需時(shí)4ms,
平均旋轉(zhuǎn)延遲時(shí)間Tr為2ms。
對(duì)于軟盤,其旋轉(zhuǎn)速度為300或600r/min,這樣,平均Tr為50~100ms。123傳輸時(shí)間Tt:Tt是指把數(shù)據(jù)從磁盤讀出,或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時(shí)間,Tt的大小與每次所讀/寫的字節(jié)數(shù)b及旋轉(zhuǎn)速度有關(guān):Tt=b/rN
式中,r為磁盤以秒計(jì)的旋轉(zhuǎn)速度
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)制墻板圈梁施工方案
- 輸油管施工方案
- 汛期家中防水施工方案
- 重載地面修復(fù)施工方案
- 簡(jiǎn)約大氣教育培訓(xùn)講課
- 辦公室人員中期述職報(bào)告
- 施工洞安全施工方案
- 矩形邊溝施工方案
- 2025年電子計(jì)算機(jī)配套產(chǎn)品及耗材項(xiàng)目合作計(jì)劃書
- 課題開題報(bào)告:基于“四新”背景的創(chuàng)新創(chuàng)業(yè)教育建設(shè)標(biāo)準(zhǔn)研究
- 保安公司招聘筆試題及答案
- 介紹錢三強(qiáng)的
- 農(nóng)業(yè)資源與環(huán)境經(jīng)濟(jì)學(xué)
- JCT2110-2012 室內(nèi)空氣離子濃度測(cè)試方法
- 文印服務(wù)投標(biāo)方案(技術(shù)方案)
- 經(jīng)濟(jì)地理學(xué)智慧樹知到課后章節(jié)答案2023年下江西師范大學(xué)
- 小學(xué)主題班會(huì)【安全使用和維護(hù)家用電器】
- (完整版)收據(jù)電子版
- 學(xué)術(shù)英語(yǔ)智慧樹知到課后章節(jié)答案2023年下南開大學(xué)
- 文獻(xiàn)檢索-第六講-畢業(yè)論文寫作與文獻(xiàn)檢索課件
- 代用茶批生產(chǎn)記錄
評(píng)論
0/150
提交評(píng)論