版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
I/OSYSTEMS1計(jì)算機(jī)系統(tǒng)的一個(gè)重要組成部分是I/O系統(tǒng)。I/O系統(tǒng)包括:輸入設(shè)備輸出設(shè)備設(shè)備控制器
I/O通道或I/O處理機(jī)設(shè)備管理的對象主要是:I/O設(shè)備設(shè)備控制器
I/O通道2設(shè)備管理的基本任務(wù)是:完成用戶提出的I/O請求,提高I/O速率,提高I/O設(shè)備的利用率。設(shè)備管理的主要功能有:緩沖區(qū)管理設(shè)備分配設(shè)備處理虛擬設(shè)備實(shí)現(xiàn)設(shè)備獨(dú)立性設(shè)備管理是OS中最繁雜且與硬件最緊密相關(guān)的部分。3本章總覽
OS在
I/O方面的功能是管理和控制
I/O操作
和I/O設(shè)備。
I/O技術(shù)表現(xiàn)出兩大相沖突的發(fā)展趨勢:硬件接口的標(biāo)準(zhǔn)化程度的提高設(shè)備類型的更多樣化的高速發(fā)展基本的I/O硬件像接口,總線,設(shè)備控制器
技術(shù)的發(fā)展順應(yīng)了I/O設(shè)備的廣泛變化。
操作系統(tǒng)內(nèi)核用各種設(shè)備驅(qū)動(dòng)模塊來組織
I/O子系統(tǒng)結(jié)構(gòu)。問題:性能和復(fù)雜。4設(shè)備管理的目的和功能
外設(shè)管理目的提高效率:提高I/O訪問效率,匹配CPU和多種不同處理速度的外設(shè)。方便使用:方便用戶使用,對不同類型的設(shè)備統(tǒng)一使用方法,協(xié)調(diào)對設(shè)備的并發(fā)使用。方便控制:方便OS內(nèi)部對設(shè)備的控制:增加和刪除設(shè)備,適應(yīng)新的設(shè)備類型。5設(shè)備管理的目的和功能
外設(shè)管理功能設(shè)備分配和釋放:使用設(shè)備前,需要分配設(shè)備和相應(yīng)的通道、控制器。設(shè)備的訪問和控制:包括并發(fā)訪問和差錯(cuò)處理。I/O緩沖和調(diào)度:目標(biāo)是提高I/O訪問效率(主要是磁盤)。678910115.1I/O系統(tǒng)I/O系統(tǒng)的結(jié)構(gòu)12AtypicalPCbusstructure13145.1.1I/O設(shè)備
I/O設(shè)備的類型繁多,從OS觀點(diǎn)看,其重要的性
能指標(biāo)有:數(shù)據(jù)傳輸速率、數(shù)據(jù)的傳輸單位、設(shè)備共享屬性等。按傳輸速率分類
低速設(shè)備
典型設(shè)備有:鍵盤、鼠標(biāo)器、語音輸入和輸出等。中速設(shè)備
典型設(shè)備有:行式打印機(jī)、激光打印機(jī)等。高速設(shè)備
典型設(shè)備有:磁帶機(jī)、磁盤機(jī)、光盤機(jī)等。1.I/O設(shè)備的類型15
按信息交換的單位分類
塊設(shè)備:這類設(shè)備用于存儲信息。屬于有結(jié)構(gòu)設(shè)備。
典型的塊設(shè)備是磁盤,
每個(gè)盤塊的大小為512B~4KB。傳輸速率較高,可尋址即對它可隨機(jī)地讀/寫任一塊;磁盤設(shè)備的I/O常采用
DMA方式。字符設(shè)備:用于數(shù)據(jù)的輸入和輸出。其基本單位是字符,故稱為字符設(shè)備。按設(shè)備的共享屬性分類
獨(dú)占設(shè)備
共享設(shè)備
虛擬設(shè)備16設(shè)備與控制器之間的接口數(shù)據(jù)信號控制信號狀態(tài)信號2.設(shè)備與控制器之間的接口通常,設(shè)備并不直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信。因此,在I/O設(shè)備中應(yīng)含有與設(shè)備控制器間的接口。在該接口中有三種類型的信號各對應(yīng)一條信號線。17圖5-1設(shè)備與控制器間的接口控制信號線:作為設(shè)備控制器向I/O設(shè)備發(fā)送控制信號時(shí)的通路。該信號規(guī)定了設(shè)備將要執(zhí)行的操作:讀操作(指由設(shè)備向控制器傳送數(shù)據(jù))寫操作(從控制器接收數(shù)據(jù))數(shù)據(jù)信號線:用于在設(shè)備和設(shè)備控制器之間傳送數(shù)據(jù)信號。輸入設(shè)備:外界輸入的信號經(jīng)轉(zhuǎn)換器轉(zhuǎn)換后形成的數(shù)據(jù),通常先送入緩沖器中,當(dāng)數(shù)據(jù)量達(dá)到一定的比特?cái)?shù)后,再從緩沖器通過一組數(shù)據(jù)信號線傳送給設(shè)備控制器。輸出設(shè)備:將從設(shè)備控制器經(jīng)過數(shù)據(jù)信號線傳送來的一批數(shù)據(jù)先暫存于緩沖器中,經(jīng)轉(zhuǎn)換器作適當(dāng)轉(zhuǎn)換后,再逐個(gè)字符地輸出。狀態(tài)信號線:用于傳送指示設(shè)備當(dāng)前狀態(tài)的信號。設(shè)備的當(dāng)前狀態(tài)有:正在讀(寫)設(shè)備已讀(寫)完成,并準(zhǔn)備好新的數(shù)據(jù)傳送。185.1.2設(shè)備控制器設(shè)備控制器是計(jì)算機(jī)中的一個(gè)實(shí)體,其主要職責(zé)是控制一個(gè)或多個(gè)I/O設(shè)備,以實(shí)現(xiàn)I/O設(shè)備和計(jì)算機(jī)之間的數(shù)據(jù)交換。它是CPU與I/O設(shè)備間的接口,它接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作,使處理機(jī)從繁雜的設(shè)備控制事務(wù)中解脫出來。它是一個(gè)可編址的設(shè)備,當(dāng)它僅控制一個(gè)設(shè)備時(shí),它只有一個(gè)唯一的設(shè)備地址;若控制多個(gè)設(shè)備時(shí),則應(yīng)含有多個(gè)設(shè)備地址,并使每一個(gè)設(shè)備地址對應(yīng)一個(gè)設(shè)備。195.1.2設(shè)備控制器它可分為兩類:控制字符設(shè)備的控制器控制塊設(shè)備的控制器
設(shè)備控制器的基本功能書P162接收和識別命令數(shù)據(jù)交換設(shè)備狀態(tài)的了解和報(bào)告地址識別數(shù)據(jù)緩沖差錯(cuò)控制20設(shè)備控制器的組成
由于設(shè)備控制器位于CPU與設(shè)備之間,它既要與CPU通信,又要與設(shè)備通信,還應(yīng)具有按照CPU所發(fā)來的命令區(qū)控制設(shè)備工作的功能。因此有以下三部分組成:控制器與處理機(jī)接口該接口用于實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信。控制器與設(shè)備接口可以連接一個(gè)或多個(gè)設(shè)備。在每個(gè)接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類型的信號。控制器中的I/O邏輯根據(jù)處理機(jī)發(fā)來的地址信號去選擇一個(gè)設(shè)備接口。21圖5-2設(shè)備控制器的組成
I/O邏輯I/O邏輯用于實(shí)現(xiàn)對設(shè)備的控制:它通過一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)送I/O命令;I/O邏輯對收到的命令進(jìn)行譯碼。每當(dāng)CPU要啟動(dòng)一個(gè)設(shè)備時(shí),一方面將啟動(dòng)命令發(fā)送給控制器;另一方面有通過地址線把地址發(fā)送給控制器,由控制器的I/O邏輯對收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對所選設(shè)備進(jìn)行控制。225.1.3I/O通道在CPU與I/O設(shè)備之間增加了設(shè)備控制器后,已能大大減少CPU對I/O的干預(yù),但當(dāng)主機(jī)所配置的外設(shè)很多時(shí),CPU的負(fù)擔(dān)仍然很重。為此,在CPU和設(shè)備控制器之間又增設(shè)了I/O通道。其主要目的是為了建立獨(dú)立的I/O操作,不僅使數(shù)據(jù)的傳送能獨(dú)立于CPU,而且I/O操作的組織、管理及結(jié)束處理盡量獨(dú)立,以保證CPU有更多的時(shí)間進(jìn)行數(shù)據(jù)處理。即設(shè)置I/O通道的目的是使一些原來由CPU處理的I/O任務(wù)轉(zhuǎn)由通承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來。設(shè)置了通道后,CPU只需向通道發(fā)送一條I/O指令。通道收到該指令后,便從內(nèi)存中取出本次要執(zhí)行的通道程序,然后執(zhí)行該通道程序;僅當(dāng)通道完成了規(guī)定的I/O任務(wù)后,才向CPU發(fā)中斷信號。23I/O通道是一種特殊的處理機(jī),具有執(zhí)行I/O指令的能力。通過執(zhí)行通道(I/O)程序來控制I/O操作。其指令類型單一主要局限于與I/O操作有關(guān)的指令通道沒有自己的內(nèi)存,通道所執(zhí)行的通道程序是放在主機(jī)的內(nèi)存中的。24通道類型字節(jié)多路通道一種按字節(jié)交叉方式工作的通道。它通常含有許多非分配型子通道,其數(shù)量從幾十到幾百個(gè),每一個(gè)子通道連接一臺I/O設(shè)備,并控制該設(shè)備的I/O操作。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道:當(dāng)?shù)谝粋€(gè)子通道控制其I/O設(shè)備完成一個(gè)字節(jié)的交換后,便立即騰出主通道,讓給第二個(gè)子通道使用;當(dāng)所有子通道輪轉(zhuǎn)一周后,重又返回由第一個(gè)子通道去使用主通道。這樣,只要字節(jié)多路通道掃描每個(gè)子通道的速率足夠快,而連接到子通道上的設(shè)備的速率不是太高時(shí),便不致丟失信息。25數(shù)組選擇通道字節(jié)多路通道不適合連接高速設(shè)備數(shù)組選擇通道可以連接多臺高速設(shè)備該通道只含有一個(gè)分配型子通道這種通道的利用率很低數(shù)組多路通道上面兩種通道技術(shù)的結(jié)合有多個(gè)非分配型子通道該通道能被廣泛地用于連接多臺高、中速的外圍設(shè)備具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿意的通道利用率26瓶頸問題通道價(jià)格昂貴,通道數(shù)量勢必減少。這往往又使它成了I/O的瓶頸,從而造成整個(gè)系統(tǒng)吞吐量的下降。假設(shè)設(shè)備1至設(shè)備4是四個(gè)磁盤,為了啟動(dòng)磁盤4,必須用通道1和控制2;但若這兩者已被其他設(shè)備占用,必然無法啟動(dòng)磁盤4。27瓶頸問題的解決解決方法:增加設(shè)備到主機(jī)間的通路而不增加通道。就是把一個(gè)設(shè)備連接到多個(gè)控制器上,而一個(gè)控制器又連接到多個(gè)通道上。圖中的設(shè)備1、2、3、4都有四條通往存儲器的通路。多通路方式不僅解決了瓶頸問題,而且提高了系統(tǒng)的可靠性。285.1.4
總線系統(tǒng)總線是許多信號線的集合,它是微型計(jì)算機(jī)芯片間、各部件間和外部設(shè)備間相互進(jìn)行信息或數(shù)據(jù)交換的通路。由于計(jì)算機(jī)內(nèi)部定向的信息流和數(shù)據(jù)流在總線中的流動(dòng),就形成了計(jì)算機(jī)的各種操作。常見的系統(tǒng)總線標(biāo)準(zhǔn)有ISA、EISA、PCI等總線29總線的主要技術(shù)指標(biāo)總線數(shù)據(jù)傳輸速率單位時(shí)間內(nèi)總線上傳送的數(shù)據(jù)量,即每鈔鐘傳送Mb的最大穩(wěn)態(tài)數(shù)據(jù)傳輸率。總線數(shù)據(jù)傳輸速率=總線的工作頻率*總線的位寬/8??偩€的帶寬
總線的帶寬指的是總線能同時(shí)傳送的二進(jìn)制數(shù)據(jù)的位數(shù),或數(shù)據(jù)總線的位數(shù),即32位、64位等總線寬度的概念??偩€的工作頻率
總線的工作時(shí)鐘頻率以MHZ為單位,工作頻率越高,總線工作速度越快,總線傳輸速率越高。30ISA和EISA總線80286微機(jī)的總線。帶寬為8bit,最高傳輸速率為2Mb/s,可以連接12臺外部設(shè)備。擴(kuò)展ISA即EISA總線:帶寬16位。傳輸速率高達(dá)32Mb/s,可以連接12臺外部設(shè)備。31局部總線局部總線是指將多媒體卡,高速LAN網(wǎng)卡,高性能圖形板等從ISA總線上卸下來,再通過局部總線控制器直接連接到CPU總線上,使之與高速CPU總線相匹配。局部總線中較有影響的是VESA和PCI總線。VESA:帶寬32位。最高傳輸速率132Mb/s,僅能連接2~4臺設(shè)備。PCI:PCI在CPU和外設(shè)之間插入一復(fù)雜的管理層,用于協(xié)調(diào)數(shù)據(jù)傳輸和提供一致的接口。PCI能支持10種外設(shè),最大傳輸速率可達(dá)132Mb/s。是當(dāng)前廣為流行的總線。325.2I/O控制方式I/O控制方式是隨著計(jì)算機(jī)技術(shù)的發(fā)展而不斷發(fā)展的。在I/O控制方式的整個(gè)發(fā)展過程中,始終貫穿的宗旨是:盡量減少主機(jī)對I/O控制的干預(yù),把主機(jī)從反之的I/O控制事物中解脫出來,以便更多地去完成數(shù)據(jù)處理任務(wù)。早期采用程序控制I/O方式;當(dāng)在系統(tǒng)中引入中斷機(jī)制后,便發(fā)展為中斷驅(qū)動(dòng)方式;隨著DMA控制器的出現(xiàn),又使I/O方式在傳輸單位上發(fā)生了變:即從以字節(jié)為單位的傳輸擴(kuò)大到以數(shù)據(jù)塊為單位進(jìn)行傳輸。從而改善了塊設(shè)備的I/O性能;通道的引入,又使對I/O操作的組織和數(shù)據(jù)的傳送都能獨(dú)立進(jìn)行而無需CPU干預(yù)。33I/O控制方式程序控制I/O(programmedI/O)中斷驅(qū)動(dòng)方式(interrupt-drivenI/O)直接存儲訪問方式(DMA,DirectMemoryAccess)I/O通道控制方式(channel(channelcontrol)34程序控制(忙—等待或輪詢方式)系統(tǒng)中沒有中斷機(jī)構(gòu),I/O操作由程序發(fā)起,并等待操作完成。數(shù)據(jù)的每次讀寫均通過CPU。例如:當(dāng)主機(jī)要通過端口來寫出數(shù)據(jù)時(shí),主機(jī)與控制器之間的握手協(xié)議如下:缺點(diǎn):在外設(shè)進(jìn)行數(shù)據(jù)處理時(shí),CPU只能等待,致使CPU利用率很低。35六個(gè)步驟1主機(jī)不斷地讀取忙位,直到該位被清除;2主機(jī)設(shè)置命令寄存器中的寫位并向數(shù)據(jù)輸出寄存器中寫入一個(gè)字(節(jié));3主機(jī)設(shè)置命令就緒位;4當(dāng)控制器注意到命令就緒位已被設(shè)置,則設(shè)置忙位;5控制器讀取命令寄存器,并看到寫入命令,它從數(shù)據(jù)輸出寄存器中讀取一個(gè)字(節(jié)),并向設(shè)備執(zhí)行I/O操作。6控制器清除命令就緒位,清除狀態(tài)寄存器的故障位,以表示設(shè)備成功,清除忙位以表示完成。完成一個(gè)字節(jié)的傳輸后繼續(xù)重復(fù)上述步驟取更多的數(shù)據(jù)。36中斷驅(qū)動(dòng)方式
I/O操作由程序發(fā)起,在操作完成時(shí)(如數(shù)據(jù)可讀或已經(jīng)寫入)由外設(shè)向CPU發(fā)出中斷,通知該程序。數(shù)據(jù)的每次讀寫通過CPU具體過程如右圖所示:37優(yōu)點(diǎn):在外設(shè)進(jìn)行數(shù)據(jù)處理時(shí),CPU不必等待,可以繼續(xù)執(zhí)行該程序或其他程序。缺點(diǎn):CPU每次處理的數(shù)據(jù)量仍是以字(字節(jié))為單位,只適于數(shù)據(jù)傳輸率較低的設(shè)備。38直接存儲訪問方式(DMA)計(jì)算機(jī)為了避免用PIO而增加CPU的負(fù)擔(dān),將一部分任務(wù)下放給一個(gè)專用的處理器-DMA控制器;DMA控制器的組成,如下圖所示:圖5-8DMA控制器的組成39DMA工作過程-以磁盤讀入數(shù)據(jù)為例由程序設(shè)置DMA控制器中的若干寄存器值(如內(nèi)存始址,傳送字節(jié)數(shù)),然后發(fā)起I/O操作;而DMA控制器完成內(nèi)存與外設(shè)的成批數(shù)據(jù)交換;在操作完成時(shí)由DMA控制器向CPU發(fā)出中斷。圖5-9DMA方式的工作流程40DMA方式的優(yōu)缺點(diǎn)優(yōu)點(diǎn):顯著地減少了CPU的干預(yù),由原來的一個(gè)字(節(jié))減少到了一塊;CPU只需干預(yù)該塊數(shù)據(jù)I/O操作的開始和結(jié)束,而塊內(nèi)的一批數(shù)據(jù)讀寫無需CPU控制,適于高速設(shè)備。缺點(diǎn):在DMA方式下,CPU發(fā)出一個(gè)I/O命令后,讀寫完一個(gè)連續(xù)的數(shù)據(jù)塊時(shí)需要相應(yīng)一次中斷。41三種I/O控制方式的比較42I/O通道控制方式
I/O通道是一種特殊的處理機(jī)。它具有執(zhí)行I/O指令的能力。可以執(zhí)行由通道指令組成的通道程序,因此可以進(jìn)行較為復(fù)雜的I/O控制。通道程序通常由操作系統(tǒng)所構(gòu)造,放在內(nèi)存里。通道程序操作碼。內(nèi)存地址。計(jì)數(shù)。通道程序結(jié)束位P。記錄結(jié)束標(biāo)志R。43六條指令的簡單通道程序操作PR計(jì)數(shù)內(nèi)存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE1125072044通道方式的優(yōu)點(diǎn)優(yōu)點(diǎn):通道方式是DMA方式的發(fā)展,它可進(jìn)一步減少CPU的干預(yù)??梢詫?shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行操作,更有效地提高整個(gè)系統(tǒng)的資源利用率。455.3緩沖管理為了緩和CPU與I/O設(shè)備速度不匹配的矛盾,提高CPU和I/O設(shè)備的并行性,在現(xiàn)代OS中,幾乎所有的I/O設(shè)備在與處理機(jī)交換數(shù)據(jù)時(shí)都用了緩沖區(qū)。緩沖管理的主要職責(zé)是組織好這些緩沖區(qū),并提高獲得和釋放緩沖區(qū)的手段。46緩沖技術(shù)緩沖技術(shù)可提高外設(shè)利用率。原因匹配CPU與外設(shè)的不同處理速度減少對CPU的中斷次數(shù)。提高CPU和I/O設(shè)備之間的并行性。47緩沖區(qū)設(shè)置硬緩沖:在設(shè)備中設(shè)置緩沖區(qū),由硬件實(shí)現(xiàn)軟緩沖:在內(nèi)存中開辟一個(gè)空間,用作緩沖區(qū)48
單緩沖(singlebuffer)
一個(gè)緩沖區(qū),CPU和外設(shè)輪流使用,一方處理完之后接著等待對方處理。單緩沖工作示意圖49雙緩沖(doublebuffer)
兩個(gè)緩沖區(qū),CPU和外設(shè)都可以連續(xù)處理而無需等待對方。要求CPU和外設(shè)的速度相近。雙緩沖工作示意圖50循環(huán)緩沖(circularbuffer)
多個(gè)緩沖區(qū),CPU和外設(shè)的處理速度可以相差較大??蓞⒁姟吧a(chǎn)者-消費(fèi)者問題”,關(guān)鍵是資源量的增減(空或滿的緩沖區(qū)數(shù)目)而不是生產(chǎn)者和消費(fèi)者的指針移動(dòng)。51循環(huán)緩沖的組成:多個(gè)緩沖區(qū),多個(gè)指針循環(huán)緩沖區(qū)的使用:getbuf和releasebuf過程進(jìn)程同步:nexti指針追趕上nextg指針
nextg指針追趕上nexti指針52緩沖池(bufferpool)
緩沖區(qū)整體利用率高。緩沖區(qū)隊(duì)列空閑緩沖區(qū),輸入緩沖區(qū),輸出緩沖區(qū)53過程54Getbuf過程和putbuf過程既可以實(shí)現(xiàn)互斥又可保證同步的getbuf過程和putbuf過程Getbuf(type)putbuf(type,number)
Wait(RS(type));wait(MS(type));Wait(MS(type));addbuf(type,number);B(number):=takebuf(type);signal(MS(type));Signal(MS(type));signal(RS(type));55工作方式收容輸入提取輸入收容輸出提取輸出565.4I/O軟件I/O軟件的總體設(shè)計(jì)目標(biāo)是高效率和通用性。通常將I/O軟件組成一種層次結(jié)構(gòu),低層軟件用于實(shí)現(xiàn)與硬件相關(guān)的操作,高層軟件主要向用戶提供一個(gè)接口。每一層具有一個(gè)要執(zhí)行的定義明確的功能和一個(gè)與相鄰層次定義明確的接口。57I/O軟件應(yīng)達(dá)到的目標(biāo)與具體設(shè)備無關(guān)統(tǒng)一命名對錯(cuò)誤的處理緩沖技術(shù)設(shè)備的分配和釋放I/O控制方式58
I/O軟件的基本思想是按分層的思想構(gòu)成,較低層軟件要使較高層軟件獨(dú)立于硬件的特性,較高層軟件則要向用戶提供一個(gè)友好的、清晰的、簡單的、功能更強(qiáng)的接口。
I/O軟件的組成5960(1)用戶進(jìn)程層執(zhí)行輸入輸出系統(tǒng)調(diào)用,對I/O數(shù)據(jù)進(jìn)行格式化,為假脫機(jī)輸入/輸出作準(zhǔn)備(2)獨(dú)立于設(shè)備的軟件實(shí)現(xiàn)設(shè)備的命名、設(shè)備的保護(hù)、成塊處理、緩沖技術(shù)和設(shè)備分配(3)設(shè)備驅(qū)動(dòng)程序設(shè)置設(shè)備寄存器、檢查設(shè)備的執(zhí)行狀態(tài)(4)中斷處理程序負(fù)責(zé)I/O完成時(shí),喚醒設(shè)備驅(qū)動(dòng)程序進(jìn)程,進(jìn)行中斷處理(5)硬件層實(shí)現(xiàn)物理I/O的操作61每個(gè)進(jìn)程在啟動(dòng)一個(gè)I/O操作后阻塞直到I/O操作完成并產(chǎn)生一個(gè)中斷由操作系統(tǒng)接管CPU后喚醒該進(jìn)程為止5.4.2中斷處理程序62中斷處理程序處理過程喚醒被阻塞的驅(qū)動(dòng)程序進(jìn)程保存現(xiàn)場轉(zhuǎn)入設(shè)備中斷處理程序進(jìn)行中斷處理恢復(fù)被中斷進(jìn)程的現(xiàn)場63中斷現(xiàn)場保護(hù)示意圖64中斷處理流程65與設(shè)備密切相關(guān)的代碼放在設(shè)備驅(qū)動(dòng)程序中,每個(gè)設(shè)備驅(qū)動(dòng)程序處理一種設(shè)備類型每一個(gè)控制器都設(shè)有一個(gè)或多個(gè)設(shè)備寄存器,用來存放向設(shè)備發(fā)送的命令和參數(shù)。設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)釋放這些命令,并監(jiān)督它們正確執(zhí)行一般,設(shè)備驅(qū)動(dòng)程序的任務(wù)是接收來自與設(shè)備無關(guān)的上層軟件的抽象請求,并執(zhí)行這個(gè)請求5.4.3設(shè)備驅(qū)動(dòng)程序66
在設(shè)備驅(qū)動(dòng)程序的進(jìn)程釋放一條或多條命令后,系統(tǒng)有兩種處理方式,多數(shù)情況下,執(zhí)行設(shè)備驅(qū)動(dòng)程序的進(jìn)程必須等待命令完成,這樣,在命令開始執(zhí)行后,它阻塞自已,直到中斷處理時(shí)將它解除阻塞為止。而在其它情況下,命令執(zhí)行不必延遲就很快完成。
設(shè)備驅(qū)動(dòng)程序(續(xù))67設(shè)備驅(qū)動(dòng)程序的功能
將抽象要求轉(zhuǎn)換為具體要求檢查I/O請求的合法性發(fā)出I/O命令響應(yīng)中斷請求構(gòu)成通道程序68處理方式為每類設(shè)備設(shè)置一個(gè)進(jìn)程整個(gè)系統(tǒng)一個(gè)I/O進(jìn)程不設(shè)專門進(jìn)程69I/O進(jìn)程(1)I/O請求的進(jìn)入用戶程序:調(diào)用send將I/O請求發(fā)送給I/O進(jìn)程;調(diào)用block將自己阻塞,直到I/O任務(wù)完成后被喚醒系統(tǒng):利用wakeup喚醒I/O進(jìn)程,完成用戶所要求的I/O處理(2)I/O中斷的進(jìn)入當(dāng)I/O中斷發(fā)生時(shí),內(nèi)核中的中斷處理程序發(fā)一條消息給I/O進(jìn)程,由I/O進(jìn)程負(fù)責(zé)判斷并處理中斷70(3)I/O進(jìn)程是系統(tǒng)進(jìn)程,一般賦予最高優(yōu)先級。一旦被喚醒,它可以很快搶占處理機(jī)投入運(yùn)行IO進(jìn)程開始運(yùn)行后,首先關(guān)閉中斷,然后用receive去接收消息。兩種情形:沒有消息,則開中斷,將自己阻塞;有消息,則判斷消息(IO請求或IO中斷);IO請求準(zhǔn)備通道程序,發(fā)出啟動(dòng)IO指令,繼續(xù)判斷有無消息IO中斷,進(jìn)一步判斷正常或異常結(jié)束正常:喚醒要求進(jìn)行IO操作的進(jìn)程異常:轉(zhuǎn)入相應(yīng)的錯(cuò)誤處理程序71特點(diǎn)驅(qū)動(dòng)程序主要是指在請求I/O的進(jìn)程與設(shè)備控制器之間的一個(gè)通信和轉(zhuǎn)換程序。驅(qū)動(dòng)程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對不同類型的設(shè)備應(yīng)配置不同的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言書寫。驅(qū)動(dòng)程序應(yīng)允許可重入。驅(qū)動(dòng)程序不允許系統(tǒng)調(diào)用。72處理過程將抽象要求轉(zhuǎn)換為具體要求檢查I/O請求的合法性讀出和檢查設(shè)備狀態(tài)傳送必要參數(shù)方式設(shè)置啟動(dòng)I/O設(shè)備73
雖然I/O軟件中一部分是設(shè)備專用的,但大部分軟件是與設(shè)備無關(guān)的。設(shè)備驅(qū)動(dòng)程序與設(shè)備獨(dú)立軟件之間的確切界限是依賴于具體系統(tǒng)的。
5.4.4設(shè)備獨(dú)立性軟件74設(shè)備獨(dú)立性的概念應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。在應(yīng)用程序中使用邏輯設(shè)備名來請求使用某類設(shè)備。在實(shí)際執(zhí)行時(shí)還必須使用物理設(shè)備名稱。實(shí)現(xiàn)設(shè)備獨(dú)立性可以帶來:
設(shè)備分配時(shí)的靈活性;
易于實(shí)現(xiàn)I/O重定向;7576
1)獨(dú)立于設(shè)備的軟件的基本任務(wù)是實(shí)現(xiàn)所有設(shè)備都需要的功能,并且向用戶級軟件提供一個(gè)統(tǒng)一的接口
2)如何給文件和設(shè)備這樣的對象命名是操作系統(tǒng)中的一個(gè)主要課題。獨(dú)立于設(shè)備的軟件負(fù)責(zé)把設(shè)備的符號名映射到正確的設(shè)備驅(qū)動(dòng)上
3)設(shè)備保護(hù)系統(tǒng)如何防止無權(quán)存取設(shè)備的用戶存取設(shè)備呢?77
4)不同的磁盤可以采用不同的扇區(qū)尺寸。向較高層軟件掩蓋這一事實(shí)并提供大小統(tǒng)一的塊尺寸,這正是設(shè)備獨(dú)立軟件的一個(gè)任務(wù)。它可將若干扇區(qū)合成一個(gè)邏輯塊。這樣,較高層的軟件只與抽象設(shè)備打交道,獨(dú)立于物理扇區(qū)的尺寸而使用等長的邏輯塊
5)緩沖技術(shù)
6)設(shè)備分配
7)出錯(cuò)處理
78
邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)邏輯設(shè)備表LUT的設(shè)置系統(tǒng)LUT用戶LUT79盡管大部分I/O軟件都包含在操作系統(tǒng)中,但仍有一小部分是由與用戶程序連接在一起的庫過程,甚至完全由運(yùn)行于核外的程序構(gòu)成。系統(tǒng)調(diào)用,包括I/O系統(tǒng)調(diào)用,通常由庫過程實(shí)現(xiàn)這些過程所做的工作只是將系統(tǒng)調(diào)用時(shí)所用的參數(shù)放在合適的位置,由其它的I/O過程實(shí)際實(shí)現(xiàn)真正的操作5.4.5用戶層的I/O軟件805.5設(shè)備分配由于外設(shè)資源的有限,需解決進(jìn)程間的外設(shè)共享問題,以提高外設(shè)資源的利用率。設(shè)備分配是對進(jìn)程使用外設(shè)過程的管理。在有的系統(tǒng)中還應(yīng)分配相應(yīng)的控制器和通道。系統(tǒng)必須設(shè)置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。815.5.1數(shù)據(jù)結(jié)構(gòu)
設(shè)備控制表(DCT,DeviceControlTable):每個(gè)設(shè)備一張,描述設(shè)備特性和狀態(tài)。反映設(shè)備的特性、設(shè)備和控制器的連接情況。82控制器控制表(COCT,COntrollerControlTable):每個(gè)設(shè)備控制器一張,描述I/O控制器的配置和狀態(tài)。如DMA控制器所占用的中斷號、DMA數(shù)據(jù)通道的分配。通道控制表(CHCT,CHannelControlTable):每個(gè)通道一張,描述通道工作狀態(tài)。83系統(tǒng)設(shè)備表(SDT,SystemDeviceTable):系統(tǒng)內(nèi)一張,反映系統(tǒng)中設(shè)備資源的狀態(tài),記錄所有設(shè)備的狀態(tài)及其設(shè)備控制表的入口。SDT表項(xiàng)的主要組成:DCT指針:指向相應(yīng)設(shè)備的DCT;設(shè)備使用進(jìn)程標(biāo)識:正在使用該設(shè)備的進(jìn)程標(biāo)識;DCT信息:為引用方便而保存的DCT信息,如:設(shè)備標(biāo)識、設(shè)備類型等;8485
5.5.2設(shè)備分配時(shí)應(yīng)考慮的因素設(shè)備固有屬性設(shè)備分配算法設(shè)備分配中的安全性86
設(shè)備固有屬性獨(dú)占共享獨(dú)享設(shè)備共享設(shè)備虛擬設(shè)備87
設(shè)備分配算法先來先服務(wù)優(yōu)先級高者優(yōu)先88
設(shè)備分配中的安全性安全分配方式不安全分配方式895.5.3獨(dú)占設(shè)備分配程序
基本設(shè)備分配程序分配設(shè)備分配設(shè)備控制器分配通道改進(jìn)增加設(shè)備獨(dú)立性考慮多通路問題90
5.5.4假脫機(jī)技術(shù)利用假脫機(jī)技術(shù)(SPOOLing,SimultaneousPeripheralOperationOnLine,也稱為虛擬設(shè)備技術(shù))可把獨(dú)享設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從而提高設(shè)備利用率。引入在多道程序系統(tǒng)中,專門利用一道程序(SPOOLing程序)來完成對設(shè)備的I/O操作。無需使用外圍I/O處理機(jī)。91SPOOLing程序和外設(shè)進(jìn)行數(shù)據(jù)交換,可以稱為“實(shí)際I/O”。一方面,SPOOLing程序預(yù)先從外設(shè)輸入數(shù)據(jù)并加以緩沖,在以后需要的時(shí)候輸入到應(yīng)用程序;另一方面,SPOOLing程序接受應(yīng)用程序的輸出數(shù)據(jù)并加以緩沖,在以后適當(dāng)?shù)臅r(shí)候輸出到外設(shè)。應(yīng)用程序進(jìn)行I/O操作時(shí),只是和SPOOLing程序交換數(shù)據(jù),可以稱為“虛擬I/O”。這時(shí)候的虛擬I/O實(shí)際上是從SPOOLing程序的緩沖池中讀出數(shù)據(jù)或把數(shù)據(jù)送入緩沖池,而不是跟實(shí)際的外設(shè)進(jìn)行I/O操作。92SPOOLing系統(tǒng)組成93特點(diǎn)高速虛擬I/O操作:應(yīng)用程序的虛擬I/O比實(shí)際I/O速度提高,縮短應(yīng)用程序的執(zhí)行時(shí)間(盡快完成計(jì)算,并釋放占用的計(jì)算機(jī)資源)。另一方面,程序的虛擬I/O操作時(shí)間和實(shí)際I/O操作時(shí)間分離開來。實(shí)現(xiàn)對獨(dú)享設(shè)備的共享:由SPOOLing程序提供虛擬設(shè)備,可以對獨(dú)享設(shè)備依次共享使用。94舉例
打印機(jī)設(shè)備和可由打印機(jī)管理器管理的打印作業(yè)隊(duì)列。如:WindowsNT中,應(yīng)用程序直接向針式打印機(jī)輸出需要15分鐘,而向打印作業(yè)隊(duì)列輸出只需要1分鐘,此后用戶可以關(guān)閉應(yīng)用程序而轉(zhuǎn)入其他工作,在以后適當(dāng)?shù)臅r(shí)候由打印機(jī)管理器完成15分鐘的打印輸出而無需用戶干預(yù)。955.6磁盤存儲器管理分配空間組織文件的存取方式提高磁盤存儲空間的利用率提高IO速度保證文件系統(tǒng)的可靠性96提高IO速度的主要途徑選擇性能好的磁盤并行化采用適當(dāng)?shù)恼{(diào)度算法設(shè)置磁盤高速緩沖區(qū)9798磁盤的組織現(xiàn)代磁盤驅(qū)動(dòng)器可以看作一個(gè)一維的邏輯塊的數(shù)組,邏輯塊是最小的傳輸單位。一維邏輯塊數(shù)組按順序映射到磁盤的扇區(qū)。扇區(qū)0是最外面柱面的第一個(gè)磁道第一個(gè)扇區(qū)。該映射是先按磁道內(nèi)扇區(qū)順序,再按柱面內(nèi)磁道順序,再按從外到內(nèi)的柱面順序來排序的。99磁盤的類型固定頭磁盤移動(dòng)頭磁盤100磁盤訪問時(shí)間尋道時(shí)間旋轉(zhuǎn)延遲時(shí)間傳輸時(shí)間101尋道時(shí)間這是把磁臂(磁頭)從當(dāng)前位置移動(dòng)到指定磁道上所經(jīng)歷的時(shí)間。該時(shí)間是啟動(dòng)磁盤的時(shí)間s與磁頭移動(dòng)n條磁道所花費(fèi)的時(shí)間之和。Ts=m*n+s102旋轉(zhuǎn)延遲時(shí)間對于硬盤,典型的轉(zhuǎn)轉(zhuǎn)速度為3600r/min,每轉(zhuǎn)需時(shí)16.7ms,平均旋轉(zhuǎn)延遲時(shí)間Tr為8.3ms。對于軟盤,其旋轉(zhuǎn)速度為300或600r/min,這樣,平均Tr為50~100ms。103傳輸時(shí)間Tr是指把數(shù)據(jù)從磁盤讀出,或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時(shí)間,Tt的大小與每次所讀/寫的字節(jié)數(shù)b及旋轉(zhuǎn)速度有關(guān)Tt=b/(rN)104總時(shí)間Ts+1/(2r)+b/(rN)例如,我們假定尋道時(shí)間和旋轉(zhuǎn)延遲時(shí)間平均為30ms,而磁道的傳輸速率為1MB/s,如果傳輸1K字節(jié),此時(shí)總的訪問時(shí)間為31ms,傳輸時(shí)間所占比例是相當(dāng)?shù)男?。?dāng)傳輸10K字節(jié)的數(shù)據(jù)時(shí),其訪問時(shí)間也只是40ms,即當(dāng)傳輸?shù)臄?shù)據(jù)量增加10倍時(shí),訪問時(shí)間只增加了約30%。105磁盤調(diào)度算法先來先服務(wù)最短尋道時(shí)間優(yōu)先掃面算法循環(huán)掃面算法N-Step-SCANFSCANS106先來先服務(wù)(FCFS)640cylinders107最短尋道時(shí)間優(yōu)先(SSTF)236cylinders108進(jìn)程“饑餓”現(xiàn)象SSTF算法可能導(dǎo)致某個(gè)進(jìn)程出現(xiàn)“饑餓”現(xiàn)象。只要不斷有新進(jìn)程的請求到達(dá),且其所要訪問的磁道與磁頭當(dāng)前所在磁道的距離較近,這種新進(jìn)程的I/O請求必須優(yōu)先滿足。老進(jìn)程將出現(xiàn)“饑餓”現(xiàn)象為解決該問題,對SSTF略微進(jìn)行改進(jìn),形成SCAN掃面算法。109掃面算法(SCAN)208110循環(huán)掃面算法111問題-“磁臂粘著”在SSTF、SCAN及CSCAN幾種調(diào)度算法中,都可能出現(xiàn)磁臂停留在某處不動(dòng)的情況,例如,有一個(gè)或幾個(gè)進(jìn)程對某一磁道有較高的訪問頻率,即這個(gè)(些)進(jìn)程反復(fù)請求對某一磁道的I/O操作,從而壟斷了整個(gè)磁盤設(shè)備。我們把這一現(xiàn)象稱為“磁臂粘著”(Armstickiness)。112N-Step-SCANN步SCAN算法是將磁盤請求隊(duì)列分成若干個(gè)長度為N的子隊(duì)列,磁盤調(diào)度將按FCFS算法依次處理這些子隊(duì)列。而每處理一個(gè)隊(duì)列時(shí)又是按SCAN算法,對一個(gè)隊(duì)列處理完后,再處理其他隊(duì)列。當(dāng)正在處理某子隊(duì)列時(shí),如果又出現(xiàn)新的磁盤I/O請求,便將新請求進(jìn)程放入其他隊(duì)列,這樣就可避免出現(xiàn)粘著現(xiàn)象。當(dāng)N值取得很大時(shí),會(huì)使N步掃描法的性能接近于SCAN算法的性能;當(dāng)N=1時(shí),N步SCAN算法便蛻化為FCFS算法。113FSCAN算法FSCAN算法實(shí)質(zhì)上是N步SCAN算法的簡化,即SCAN只將磁盤請求隊(duì)列分成兩個(gè)子隊(duì)列。一個(gè)是由當(dāng)前所有請求磁盤I/O的進(jìn)程形成的隊(duì)列,由磁盤調(diào)度按SCAN算法進(jìn)行處理。在掃描期間,將新出現(xiàn)的所有請求磁盤I/O的進(jìn)程,放入另一個(gè)等待處理的請求隊(duì)列。這樣,所有的新請求都將被推遲到下一次掃描時(shí)處理。114磁盤高速緩存(DiskCache)磁盤高速緩存的形式是指利用內(nèi)存中的存儲空間,來暫存從磁盤中讀出的一系列盤塊中的信息。因此,這里的高速緩存是一組在邏輯上屬于磁盤,而物理上是駐留在內(nèi)存中的盤塊。高速緩存在內(nèi)存中可分成兩種形式。第一種是在內(nèi)存中開辟一個(gè)單獨(dú)的存儲空間來作為磁盤高速緩存,其大小是固定的,不會(huì)受應(yīng)用程序多少的影響;第二種是把所有未利用的內(nèi)存空間變?yōu)橐粋€(gè)緩沖池,供請求分頁系統(tǒng)和磁盤I/O時(shí)(作為磁盤高速緩存)共享。此時(shí)高速緩存的大小,顯然不再是固定的。當(dāng)磁盤I/O的頻繁程度較高時(shí),該緩沖池可能包含更多的內(nèi)存空間;而在應(yīng)用程序運(yùn)行得較多時(shí),該緩沖池可能只剩下較少的內(nèi)存空間。115數(shù)據(jù)交付方式系統(tǒng)可以采取兩種方式,將數(shù)據(jù)交付給請求進(jìn)程:
(1)數(shù)據(jù)交付。這是直接將高速緩存中的數(shù)據(jù),傳送到請求者進(jìn)程的內(nèi)存工作區(qū)中。
(2)指針交付。只將指向高速緩存中某區(qū)域的指針,交付給請求者進(jìn)程。后一種方式由于所傳送的數(shù)據(jù)量少,因而節(jié)省了數(shù)據(jù)從磁盤高速緩存存儲空間到進(jìn)程的內(nèi)存工作區(qū)的時(shí)間116置換算法
由于請求調(diào)頁中的聯(lián)想存儲器與高速緩存(磁盤I/O中)的工作情況不同,因而使得在置換算法中所應(yīng)考慮的問題也有所差異。因此,現(xiàn)在不少系統(tǒng)在設(shè)計(jì)其高速緩存的置換算法時(shí),除了考慮到最近最久未使用這一原則外,還考慮了以下幾點(diǎn):
(1)訪問頻率。
(2)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026重慶市萬州區(qū)茨竹鄉(xiāng)人民政府招聘非全日制公益性崗位1人備考考試試題附答案解析
- 2026年西安工業(yè)大學(xué)附屬小學(xué)教師招聘參考考試題庫附答案解析
- 2026年河北雄安容和樂民小學(xué)見習(xí)崗招聘參考考試題庫附答案解析
- 藥品生產(chǎn)質(zhì)量風(fēng)險(xiǎn)管理制度及流程
- 生產(chǎn)管理調(diào)度管理制度
- 生產(chǎn)管理檔案制度
- 南京條約后中國生產(chǎn)制度
- 藥品生產(chǎn)成本核算制度
- 工程安全生產(chǎn)會(huì)議制度
- 衛(wèi)生安全生產(chǎn)舉報(bào)制度
- 3D小人素材13(共16)-金色系列
- 上腔靜脈綜合征患者的護(hù)理專家講座
- 免責(zé)協(xié)議告知函
- 食物與情緒-營養(yǎng)對心理健康的影響
- 2023氣管插管意外拔管的不良事件分析及改進(jìn)措施
- 麻醉藥品、精神藥品月檢查記錄
- 基礎(chǔ)化學(xué)(本科)PPT完整全套教學(xué)課件
- 蕉嶺縣幅地質(zhì)圖說明書
- 電梯控制系統(tǒng)論文
- (完整word版)人教版初中語文必背古詩詞(完整版)
- 湖北省地質(zhì)勘查坑探工程設(shè)計(jì)編寫要求
評論
0/150
提交評論