計(jì)算機(jī)專業(yè)課蘆晨課件操作系統(tǒng)_第1頁(yè)
計(jì)算機(jī)專業(yè)課蘆晨課件操作系統(tǒng)_第2頁(yè)
計(jì)算機(jī)專業(yè)課蘆晨課件操作系統(tǒng)_第3頁(yè)
計(jì)算機(jī)專業(yè)課蘆晨課件操作系統(tǒng)_第4頁(yè)
計(jì)算機(jī)專業(yè)課蘆晨課件操作系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩136頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章設(shè)備管理1I/O系統(tǒng)I/O控制方式緩沖管理設(shè)備分配設(shè)備處理磁盤(pán)存儲(chǔ)器的管理5.1

I/O系統(tǒng)2I/O設(shè)備的類(lèi)型I/O設(shè)備的類(lèi)型繁多,從OS觀點(diǎn)看,其重要的性能指標(biāo)有:①設(shè)備使用特性②數(shù)據(jù)傳輸速率③數(shù)據(jù)的傳輸單位④設(shè)備共享屬性……因而,可以從不同角度對(duì)它們進(jìn)行分類(lèi)①按設(shè)備的使用特性分類(lèi)3存儲(chǔ)設(shè)備:也稱外存或后備存儲(chǔ)器、輔助存儲(chǔ)器。該類(lèi)設(shè)備存取速度較內(nèi)存慢,但容量比內(nèi)存大得多,相對(duì)價(jià)格也便宜輸入/輸出設(shè)備:分為輸入設(shè)備、輸出設(shè)備和交互式設(shè)備。輸入設(shè)備:鍵盤(pán)、鼠標(biāo)、掃描儀、視頻攝像、各類(lèi)傳感器等。輸出設(shè)備:打印機(jī)、繪圖儀、顯示器、數(shù)字視頻顯示設(shè)備、音響輸出設(shè)備等。交互式設(shè)備:集成上述兩類(lèi)設(shè)備,利用輸入設(shè)備接收用戶命令,通過(guò)輸出設(shè)備顯示執(zhí)行的結(jié)果②按傳輸速率分類(lèi)4①低速設(shè)備:傳輸速率僅為每秒鐘幾個(gè)字節(jié)至數(shù)百個(gè)字節(jié)鍵盤(pán)、鼠標(biāo)器、語(yǔ)音的輸入和輸出等②中速設(shè)備:傳輸速率在每秒鐘數(shù)千個(gè)字節(jié)至數(shù)十萬(wàn)個(gè)字節(jié)行式打印機(jī)、激光打印機(jī)等③高速設(shè)備:傳輸速率在數(shù)百個(gè)千字節(jié)至千兆字節(jié)磁盤(pán)機(jī)、光盤(pán)機(jī)等③按信息交換的單位分類(lèi)①塊設(shè)備:用于存儲(chǔ)信息由于信息的存取總是以數(shù)據(jù)塊為單位,故而得名屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是磁盤(pán),每個(gè)盤(pán)塊的大小為512

B~4

KB基本特征:速率高,可尋址,DMA方式②字符設(shè)備:用于數(shù)據(jù)的輸入和輸出。基本單位是字符,故稱為字符設(shè)備。屬于無(wú)結(jié)構(gòu)類(lèi)型?;咎卣鳎核俾实?,不可尋址,中斷驅(qū)動(dòng)方式5④

按設(shè)備的共享屬性分類(lèi)6①獨(dú)占設(shè)備:指在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)的設(shè)備,即臨界資源系統(tǒng)一旦把這類(lèi)設(shè)備分配給了某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至用完釋放注意:獨(dú)占設(shè)備的分配有可能引起進(jìn)程死鎖②共享設(shè)備:在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程“同時(shí)”訪問(wèn)的設(shè)備顯然,共享設(shè)備必須是可尋址的和可隨機(jī)訪問(wèn)的設(shè)備。典型的共享設(shè)備是磁盤(pán)③虛擬設(shè)備:通過(guò)虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備變

換為若干臺(tái)邏輯設(shè)備,供若干個(gè)進(jìn)程“同時(shí)”使用設(shè)備與控制器之間的接口通常,I/O設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信在I/O設(shè)備中含有與設(shè)備控制器的接口,在該接口中有三種類(lèi)型的信號(hào),各對(duì)應(yīng)一條信號(hào)線7緩沖轉(zhuǎn)換器控制邏輯信號(hào)數(shù)據(jù)8數(shù)據(jù)信號(hào)線狀態(tài)信號(hào)線至設(shè)備控制器I/O設(shè)備控制信號(hào)線設(shè)備與控制器之間的接口①數(shù)據(jù)信號(hào)線用于設(shè)備和設(shè)備控制器之間傳送數(shù)據(jù)信號(hào)。對(duì)輸入設(shè)備而言,外界輸入的信號(hào)轉(zhuǎn)換成數(shù)據(jù),通常先送入緩沖器中,當(dāng)數(shù)據(jù)量達(dá)到一定的比特(字符)數(shù)后,再?gòu)木彌_器通過(guò)一組數(shù)據(jù)信號(hào)線傳送給設(shè)備控制器。對(duì)輸出設(shè)備而言,將從設(shè)備控制器經(jīng)過(guò)數(shù)據(jù)信號(hào)線傳送來(lái)的一批數(shù)據(jù)先暫存于緩沖器中,經(jīng)轉(zhuǎn)換后再逐個(gè)字符地輸出。9②控制信號(hào)線是設(shè)備控制器向I/O設(shè)備發(fā)送控制信號(hào)時(shí)的通路信號(hào)規(guī)定了設(shè)備將要執(zhí)行的操作,如讀操作、寫(xiě)操作,或移動(dòng)磁頭等操作③狀態(tài)信號(hào)線用于傳送設(shè)備當(dāng)前狀態(tài)的信號(hào)設(shè)備的當(dāng)前狀態(tài)有正在讀/寫(xiě);設(shè)備已讀/寫(xiě)完成,并準(zhǔn)備好新的數(shù)據(jù)傳送103.

設(shè)備控制器11設(shè)備控制器的基本功能①接收和識(shí)別命令CPU向控制器發(fā)送多種不同的命令,設(shè)備控制器應(yīng)能接收并識(shí)別這些命令。為此,在控制器中應(yīng)具有相應(yīng)的控制寄存器,用來(lái)存放接收的命令和參數(shù),并對(duì)所接收的命令進(jìn)行譯碼。例如,磁盤(pán)控制器可以接收CPU發(fā)來(lái)的Read、Write、Format等15條不同的命令,而且有些命令還帶有參數(shù);相應(yīng)地,在磁盤(pán)控制器中有多個(gè)寄存器和命令譯碼器等②數(shù)據(jù)交換指實(shí)現(xiàn)CPU與控制器之間、控制器與設(shè)備之間的數(shù)據(jù)交換。對(duì)于前者,是通過(guò)數(shù)據(jù)總線,由CPU并行地把數(shù)據(jù)寫(xiě)入控制器,或從控制器中并行地讀出數(shù)據(jù);對(duì)于后者,是設(shè)備將數(shù)據(jù)輸入到控制器,或從控制器傳送給設(shè)備。為此,在控制器中須設(shè)置數(shù)據(jù)寄存器12③標(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)寄存器,用其中的每一位來(lái)反映設(shè)備的某一種狀態(tài)當(dāng)CPU將該寄存器的內(nèi)容讀入后,便可了解該設(shè)備的狀態(tài)13④地址識(shí)別就像內(nèi)存中的每一個(gè)單元都有一個(gè)地址一

樣,系統(tǒng)中的每一個(gè)設(shè)備也都有一個(gè)地址,而設(shè)備控制器又必須能夠識(shí)別它所控制的

每個(gè)設(shè)備的地址。此外,為使CPU能向(或從)寄存器中寫(xiě)入(或讀出)數(shù)據(jù),這些寄存器都應(yīng)具有唯一的地址控制器應(yīng)能正確識(shí)別這些地址。為此,在控制器中應(yīng)配置地址譯碼器14⑤數(shù)據(jù)緩沖由于I/O設(shè)備的速率較低而CPU和內(nèi)存的速率很高,故在控制器中必須設(shè)置一緩沖器。在輸出時(shí),用此緩沖器暫存由主機(jī)高速傳來(lái)的數(shù)據(jù),然后才以I/O設(shè)備所具有的速率將緩沖器中的數(shù)據(jù)傳送給I/O設(shè)備;在輸入時(shí),緩沖器則用于暫存從I/O設(shè)備送來(lái)的數(shù)據(jù),待接收到一批數(shù)據(jù)后,再將緩沖器中的數(shù)據(jù)高速地傳送給主機(jī)15⑥差錯(cuò)控制設(shè)備控制器兼管對(duì)由I/O設(shè)備傳送來(lái)的數(shù)據(jù)進(jìn)行差錯(cuò)檢測(cè)。若發(fā)現(xiàn)傳送中出現(xiàn)了錯(cuò)誤,便向CPU報(bào)告,然后CPU將本次傳送來(lái)的數(shù)據(jù)作廢,并重

新進(jìn)行一次傳送。這樣,便可保證數(shù)據(jù)輸入的正確性16設(shè)備控制器的組成①設(shè)備控制器與處理機(jī)的接口用于實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信。共有三類(lèi)信號(hào)線:數(shù)據(jù)線、地址線、控制線數(shù)據(jù)線通常與兩類(lèi)寄存器相連接①數(shù)據(jù)寄存器用于存放從設(shè)備送來(lái)的數(shù)據(jù)(輸入)或從CPU送來(lái)的數(shù)據(jù)(輸出);②控制/狀態(tài)寄存器用于存放從CPU送來(lái)的控制信息或設(shè)備的狀態(tài)信息17②設(shè)備控制器與設(shè)備的接口在一個(gè)設(shè)備控制器上,可以連接一個(gè)或多個(gè)設(shè)備相應(yīng)地,在控制器中便有一個(gè)或多個(gè)設(shè)備接口,一個(gè)接口連接一臺(tái)設(shè)備在每個(gè)接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類(lèi)型的信號(hào)控制器中的I/O邏輯根據(jù)CPU發(fā)來(lái)的地址信號(hào)去選擇一個(gè)設(shè)備接口18③I/O邏輯在設(shè)備控制器中的I/O邏輯用于實(shí)現(xiàn)對(duì)設(shè)備的控制。它通過(guò)一組控制線與CPU交互,CPU利用該邏輯向控制器發(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)行控制。19設(shè)備控制器的組成數(shù)據(jù)寄存器控制/狀態(tài)寄存器數(shù)據(jù)線I/O邏輯…控制器與設(shè)備接口1控制器與設(shè)備接口i數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制…地址線控制線CPU與控制器接口控控控控控控控控20總線系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的各部件,如CPU、存儲(chǔ)器以及各種I/O設(shè)備之間的聯(lián)系,都是通過(guò)總線來(lái)實(shí)現(xiàn)的。總線的性能是用總線的時(shí)鐘頻率、帶寬和相應(yīng)的總線傳輸速率等指標(biāo)來(lái)衡量的。隨著計(jì)算機(jī)中CPU和內(nèi)存速率的提高,字長(zhǎng)的增加,以及不斷地引入新型設(shè)備,促使人們對(duì)總線的時(shí)鐘頻率、帶寬和傳輸速率的要求也不斷提高。這便推動(dòng)了總線的不斷發(fā)展,使之由早期的ISA總線發(fā)展為EISA總線、VESA總線,進(jìn)而又演變成當(dāng)前廣為流行的PCI總線。21總線型I/O系統(tǒng)結(jié)構(gòu)CPU存儲(chǔ)器磁盤(pán)控制器打印機(jī)控制器…其它控制器磁盤(pán)驅(qū)動(dòng)器打印機(jī)系統(tǒng)總線22常用的總線①

ISA為在1984年推出的80286型微機(jī)設(shè)計(jì)的總線總線的帶寬為8位,最高傳輸速率為2

Mb/s②

EISA20世紀(jì)80年代末期,ISA總線已難于滿足帶寬和傳輸速率的要求,于是又開(kāi)發(fā)出擴(kuò)展ISA(EISA)總線帶寬為32位,總線的傳輸速率高達(dá)32Mb/s,同樣可以連接12臺(tái)外部設(shè)備2324多媒體技術(shù)的興起,特別是全運(yùn)動(dòng)視頻處理、高保真音響、高速LAN,以及高質(zhì)量圖形處理等技術(shù),都要求總線具有更高的傳輸速率,這時(shí)的

EISA總線已難于滿足要求。于是,局部總線便應(yīng)運(yùn)而生局部總線:指將多媒體卡、高速LAN網(wǎng)卡、高性能圖形板等,從ISA總線上卸下來(lái),再通過(guò)局部總線控制器直接接到CPU總線上,使之與高速CPU總線相匹配,而打印機(jī)、FAX/Modem、CDROM等仍掛在ISA總線上。在局部總線中較有影響的是VESA總線和PCI總線①

VESA設(shè)計(jì)思想是以低價(jià)位迅速占領(lǐng)市場(chǎng)。VESA總線的帶寬為32位,最高傳輸速率為132

Mb/s。在20世紀(jì)90年代初被推出時(shí),廣泛應(yīng)用于486微機(jī)中。但VESA總線仍存在較嚴(yán)重的缺點(diǎn),比如,它所能連接的設(shè)備數(shù)僅為2~4臺(tái),在控制器中無(wú)緩沖,故難于適應(yīng)處理器速度的不斷提高,也不能支持后來(lái)出現(xiàn)的Pentium微機(jī)。25②

PCI隨著Pentium系列芯片的推出,Intel公司分別在1992年和1995年頒布了PCI總線的

V1.0和V2.1規(guī)范,后者支持64位系統(tǒng)。PCI最大傳輸速率可達(dá)132

Mb/s。PCI既可連接ISA、EISA等傳統(tǒng)型總線,又可支持Pentium的64位系統(tǒng),是基于

Pentium等新一代微處理器而發(fā)展的總線26AGP27AGP是AcceleratedGraphicsPort(加速圖形接口)的縮寫(xiě),也是AdvancedGraphicsPort(高級(jí)圖形端口)的縮寫(xiě)。AGP規(guī)范是目前應(yīng)用于x86個(gè)人電腦中的顯示接口技術(shù),由英特爾(Intel)在1996年提出,直到1997年該公司的i440LX主板芯片組問(wèn)世后才真正得以實(shí)施應(yīng)用。PCI-X28PCI-X在外形上和64bit的PCI基本上是一樣的,但是它們使用的是不同的標(biāo)準(zhǔn),PCI-X的插槽可以兼容PCI的卡(通過(guò)針腳區(qū)分),PCI-X也是共享總線的,插多個(gè)設(shè)備傳輸速率會(huì)下降。PCI-X一般只出現(xiàn)在服務(wù)器主板上,不過(guò)現(xiàn)在也逐步被PCI-E取代.PCI-EPCI

Express是新一代的總線接口。早在2001年的春季,英特爾公司就提出了要用新一代的技術(shù)取代PCI總線和多種芯片的內(nèi)部連接,并稱之為第三代I/O總線技術(shù)。隨后在2001年底,包括Intel、AMD、DELL、IBM在內(nèi)的20多家業(yè)界主導(dǎo)公司開(kāi)始起草新技術(shù)的規(guī)范,并在2002年完成,對(duì)其正式命名為PCIExpress。它采用了目前業(yè)內(nèi)流行的點(diǎn)對(duì)點(diǎn)串行連接,比起PCI以及更早期的計(jì)算機(jī)總線的共享并行架構(gòu),每個(gè)設(shè)備都有自己的專用連接,不需要向整個(gè)總線請(qǐng)求帶寬,而且可以把數(shù)據(jù)傳輸率提高到一個(gè)很高的頻率,達(dá)到PCI所不能提供的高帶寬。5.2

I/O控制方式29I/O控制方式有幾個(gè)發(fā)展階段①程序控制方式②中斷驅(qū)動(dòng)方式③DMA方式④I/O通道控制方式①程序控制方式30早期的計(jì)算機(jī)系統(tǒng)中,CPU對(duì)設(shè)備的控制采取程序控制方式,或稱為忙—等待方式?;舅枷隒PU發(fā)出一條I/O指令啟動(dòng)輸入設(shè)備輸入數(shù)據(jù)時(shí),要同時(shí)令狀態(tài)寄存器中的忙/閑標(biāo)志busy置1,并循環(huán)檢查busy的值。當(dāng)busy=1時(shí),表示尚未完成一個(gè)字(符)的輸入,此時(shí)

CPU應(yīng)繼續(xù)對(duì)busy進(jìn)行檢查,直至busy=0,表明已完成數(shù)據(jù)的輸入。于是,CPU將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存中,這樣便完成了一個(gè)字(符)的I/O。接著再去啟動(dòng)讀下一個(gè)數(shù)據(jù),并置busy=1。如此反復(fù)下去。②中斷驅(qū)動(dòng)方式31現(xiàn)代計(jì)算機(jī)系統(tǒng)中,都毫無(wú)例外地引入了中斷機(jī)構(gòu),因此對(duì)I/O設(shè)備的控制,廣泛采用中斷驅(qū)動(dòng)方式基本思想進(jìn)程要啟動(dòng)I/O設(shè)備工作時(shí),由CPU向該設(shè)備控制器發(fā)出一條I/O命令,然后便可立即返回繼續(xù)執(zhí)行原來(lái)的任務(wù)。設(shè)備控制器按照命令要求去控制指定設(shè)備。此時(shí),CPU與I/O設(shè)備并行操作。設(shè)備處理完數(shù)據(jù)后,便產(chǎn)生一個(gè)中斷信號(hào)。此時(shí),CPU便轉(zhuǎn)而處理該信號(hào)。在I/O設(shè)備處理每個(gè)數(shù)據(jù)的過(guò)程中,由于無(wú)需CPU干預(yù),因而可使CPU與I/O設(shè)備并行工作。僅當(dāng)處理完一個(gè)數(shù)據(jù)時(shí),才需CPU花費(fèi)極短的時(shí)間去做些中斷處理。可見(jiàn),這樣可使CPU和I/O設(shè)備都處于忙碌狀態(tài),從而提高了整個(gè)系統(tǒng)的資源利用率及吞吐量。32③DMA方式雖然中斷驅(qū)動(dòng)方式比程序控制方式更有效,但它仍是以字(節(jié))為單位進(jìn)行I/O的,每當(dāng)

完成一個(gè)字(節(jié))的I/O時(shí),控制器便要向

CPU發(fā)出一次中斷。換言之,采用中斷驅(qū)動(dòng)方式時(shí)的CPU是以字(節(jié))為單位進(jìn)行干預(yù)的。如果將這種方式用于塊設(shè)備的I/O,顯然效率極低。例如,為了從磁盤(pán)中讀出1

KB的數(shù)據(jù)塊,

CPU會(huì)被中斷1K次。為了進(jìn)一步減少CPU對(duì)I/O的干預(yù)而引入了DMA方式33DMA的特點(diǎn)①傳輸?shù)幕締挝弧獢?shù)據(jù)塊.CPU與I/O設(shè)備之間每次傳送至少一個(gè)數(shù)據(jù)塊②所傳送的數(shù)據(jù)從設(shè)備直接送入內(nèi)存,或者相反③僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開(kāi)始和結(jié)束時(shí),才需CPU干預(yù)。傳送是在控制器的控制下完

成的??梢?jiàn),DMA方式較之中斷驅(qū)動(dòng)方式,又成百倍地減少了CPU對(duì)I/O的干預(yù),進(jìn)一步提高了

CPU與I/O設(shè)備的并行程度。34DMA控制器的組成DMA控制器由三部分組成①主機(jī)與DMA控制器的接口②DMA控制器與塊設(shè)備的接口③I/O控制邏輯35DMA控制器的組成DRMARDCI/O控控邏輯CR…機(jī)—控制器接口控制器與塊設(shè)備接口countCPU

內(nèi)存

主命令

系統(tǒng)總線

D命令/狀態(tài)寄存器:接收從CPU發(fā)來(lái)的I/O命令或有關(guān)控制信息,或設(shè)備狀態(tài)數(shù)據(jù)寄存器:用于暫存數(shù)據(jù)內(nèi)存地址寄存器:存放數(shù)據(jù)的源/起始目標(biāo)地址數(shù)據(jù)計(jì)數(shù)器:存放本次CPU要讀或?qū)懙淖?節(jié))數(shù)MA

控制器36DMA工作過(guò)程–以從磁盤(pán)讀入數(shù)據(jù)為例:①?gòu)拇疟P(pán)讀入數(shù)據(jù)塊時(shí),CPU將一條讀指令送至磁盤(pán)控制器的命令寄存器(CR)中。②將數(shù)據(jù)讀入的內(nèi)存起始目標(biāo)地址送入內(nèi)存地址寄存器(MAR)中;將讀數(shù)據(jù)的字(節(jié))數(shù)送入數(shù)據(jù)計(jì)數(shù)器(DC)中③將磁盤(pán)的源地址送至DMA控制器的I/O邏輯中。④然后,啟動(dòng)DMA控制器進(jìn)行數(shù)據(jù)傳送,以后,CPU便可去處理其它任務(wù)。⑤此后,整個(gè)數(shù)據(jù)傳送過(guò)程便由DMA控制器進(jìn)行控制。37⑥當(dāng)DMA控制器已從磁盤(pán)讀入一個(gè)字(節(jié))的數(shù)據(jù)并送入數(shù)據(jù)寄存器(DR)后,將該字(節(jié))傳送到指定的內(nèi)存單元中。⑦接著便對(duì)MAR內(nèi)容加1,將DC內(nèi)容減1。⑧若減1后DC內(nèi)容不為0,表示傳送未完,便繼續(xù)傳送下一個(gè)字(節(jié));⑨否則,由DMA控制器發(fā)出中斷請(qǐng)求。3839DMA方式與中斷方式的主要區(qū)別①中斷的時(shí)機(jī)不同中斷方式是在數(shù)據(jù)寄存器滿后,發(fā)中斷請(qǐng)求,CPU進(jìn)行中斷處理DMA方式是在所要求傳送的數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求CPU進(jìn)行中斷處理,大大減少了CPU進(jìn)行中斷處理的次數(shù)②CPU控制方法不同中斷方式的數(shù)據(jù)傳送是由CPU控制完成的DMA方式是在DMA控制器的控制下不經(jīng)

CPU控制完成的40④I/O通道控制方式41I/O通道控制方式的引入雖然DMA方式比中斷方式已經(jīng)顯著地減少了

CPU的干預(yù),但CPU每發(fā)出一條I/O指令,也只能去讀(或?qū)?一個(gè)連續(xù)的數(shù)據(jù)塊。當(dāng)我們需要一次去讀多個(gè)數(shù)據(jù)塊,且將它們分別傳送到不同的內(nèi)存區(qū)域,或者相反時(shí),則須由CPU發(fā)出多條I/O指令,并進(jìn)行多次中斷處理才能完成。在這種情況下,會(huì)影響系統(tǒng)的效率和吞吐量I/O通道方式是DMA方式的發(fā)展,它可進(jìn)一步減少CPU的干預(yù)因此,在CPU和設(shè)備控制器之間增設(shè)通道,其主要目的–使一些原來(lái)由CPU處理的I/O任務(wù)轉(zhuǎn)由通道來(lái)承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來(lái)。通道是一種特殊的處理機(jī),特點(diǎn):①指令類(lèi)型單一,主要局限于對(duì)I/O操作②沒(méi)有自己的內(nèi)存,通道程序放在內(nèi)存里在設(shè)置了通道后,CPU只需向通道發(fā)送一條I/O指令。通道在收到該指令后,便從內(nèi)存中取出本次要執(zhí)行的通道程序,然后執(zhí)行該通道程序,僅當(dāng)通道完成了規(guī)定的

I/O任務(wù)后,才向CPU發(fā)中斷信號(hào)42通道類(lèi)型①字節(jié)多路通道子通道連接一個(gè)設(shè)備,按時(shí)間片共享主通道(以字節(jié)為單位)控制器A控制器B控制器C控制器D控制器N…3A1A2A

…子通道AB1B2B3…子通道BC1C2C3…子通道CN1N2N3…子通道NA1B1C1…A2B2C2…43控控②數(shù)組選擇通道只有一個(gè)子通道,一段時(shí)間內(nèi)只能執(zhí)行一道程序,控制一臺(tái)設(shè)備,利用率低。③數(shù)組多路通道數(shù)組選擇通道+字節(jié)多路通道。(廣泛用于多臺(tái)高、中速設(shè)備)。44“瓶頸”問(wèn)題–通道價(jià)格昂貴,配備不可能太多,這造成了I/O瓶頸。設(shè)備1設(shè)備2設(shè)備3設(shè)備4設(shè)備5設(shè)備6設(shè)備7控制器1控制器2控制器3控制器4通道1通道2存儲(chǔ)器45–解決辦法:增加通路即,一個(gè)設(shè)備連接多個(gè)控制器,一個(gè)控制器連接多個(gè)通道。這解決了瓶頸問(wèn)題,提高了系統(tǒng)可靠性I/O設(shè)備控制器1控制器2通道1通道2存儲(chǔ)器I/O設(shè)備I/O設(shè)備I/O設(shè)備多通路I/O系統(tǒng)46通道程序通道程序是由一系列通道指令構(gòu)成的通道指令與一般的機(jī)器指令不同,在它的每條指令中都包含下列諸信息:①操作碼:規(guī)定指令所執(zhí)行的操作,如讀/寫(xiě)/控制等②內(nèi)存地址:標(biāo)明數(shù)據(jù)送入內(nèi)存(讀操作)和從內(nèi)存取出(寫(xiě)操作)時(shí)的內(nèi)存首址③計(jì)數(shù):表示指令所要讀(或?qū)?的字節(jié)數(shù)④通道程序結(jié)束位P:表示通道程序是否結(jié)束。P=1表示本指令是通道程序的最后一條指令⑤記錄結(jié)束標(biāo)志R:R=0表示本指令與下一條指令所處理的數(shù)據(jù)是同屬于一個(gè)記錄;R=1表示這是處理某記錄的最后一條指令47計(jì)數(shù)內(nèi)存地址Write0080813Write001401034Write01605830Write013002000Write002501850Write11250720寫(xiě)操作(從內(nèi)存取數(shù)據(jù))操作

P

R通道程序的最后一條指令通過(guò)P的值來(lái)識(shí)別多條指令操作的內(nèi)存寫(xiě)到一起通過(guò)R的值來(lái)識(shí)別485.3

緩沖管理49緩沖的引入①緩和CPU與I/O設(shè)備間速度不匹配的矛盾CPU的運(yùn)算速率遠(yuǎn)遠(yuǎn)高于I/O設(shè)備的速率如果沒(méi)有緩沖區(qū),則在輸出數(shù)據(jù)時(shí),必然會(huì)由于設(shè)備速度跟不上而必須使CPU停下來(lái)等待;然而在計(jì)算階段,設(shè)備又空閑無(wú)事。顯然,如果在設(shè)備或控制器中設(shè)置一緩沖區(qū),用于暫存進(jìn)程的輸出數(shù)據(jù),以后由設(shè)備“慢慢地”從中取出數(shù)據(jù),這樣,就可提高CPU的效率。類(lèi)似地,在輸入設(shè)備與CPU之間也設(shè)置緩沖區(qū),也可提高CPU的效率。事實(shí)上,凡在數(shù)據(jù)到達(dá)速率與發(fā)送速率不同的地方,都可設(shè)置緩沖區(qū),以緩和它們之間速率不匹配的矛

盾。②減少對(duì)CPU的中斷頻率在遠(yuǎn)程通信系統(tǒng)中,如果從遠(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,即每100μs就要中斷CPU一次,而且CPU必須在100μs內(nèi)予以響應(yīng),否則緩沖區(qū)內(nèi)的數(shù)據(jù)將被沖掉。若增加緩存,則等于放寬對(duì)CPU中斷響應(yīng)時(shí)間的限制。50利用緩沖寄存器實(shí)現(xiàn)緩沖9.6

Kb/s送內(nèi)存8位緩沖寄存器送內(nèi)存(b)(a)(c)1位緩沖若再設(shè)置一個(gè)8位寄存器,則可把8位C緩PU沖寄存器9.6

K對(duì)b中/s

斷的響應(yīng)時(shí)間再放寬。9?.倘6

K若b/設(shè)s

置一個(gè)8位的緩沖寄存器,可使CPU被中斷的頻率降低為原來(lái)的1/85152③提高CPU和I/O設(shè)備之間的并行性可顯著地提高CPU和I/O設(shè)備間的并行操作程度,提高系統(tǒng)的吞吐量和設(shè)備的利用率。532.

單緩沖和雙緩沖單緩沖工作示意圖工作區(qū)處理(C)緩沖區(qū)傳送(M)輸入(T)I/O設(shè)備(a)T1M1C1T2M2C2T3M3C3T4t(b)用戶進(jìn)程在塊設(shè)備輸入時(shí),假定從磁盤(pán)把一塊數(shù)據(jù)輸入到緩沖區(qū)的時(shí)間為T(mén),OS將該時(shí)間為C由于T和C可以并行,T>①C時(shí)單,緩系統(tǒng)沖對(duì)每一塊數(shù)據(jù)的緩處沖理區(qū)時(shí)中間為的M數(shù)+據(jù)T,傳反送之到為用M+C,故可把?系在統(tǒng)單對(duì)每緩一沖塊情數(shù)況據(jù)下的,處戶每理區(qū)時(shí)當(dāng)?shù)拈g用時(shí)表戶間示進(jìn)為為程:M發(fā)M,a出x而(一CC,ITP/O)U+請(qǐng)M求時(shí),OS便在內(nèi)存中對(duì)為這之一分塊配數(shù)一據(jù)個(gè)處緩理沖(計(jì)區(qū)算)的54雙緩沖區(qū)機(jī)制,也稱為緩沖對(duì)換用戶進(jìn)程緩沖區(qū)2工作區(qū)

I/O

設(shè)備T1(緩緩1)M1M2M3C3T2(緩緩2)T3(緩緩3)M4C4T4(緩緩4)(b)C1

C2雙緩沖工作示意圖設(shè)備②輸雙入緩時(shí)沖,先將數(shù)據(jù)送入緩沖區(qū)1,裝滿后轉(zhuǎn)向緩沖區(qū)2此時(shí)OS?可為從加緩快沖I/O區(qū)速1中度,讀提取高數(shù)設(shè)據(jù)備,利并用送率入,用人戶們進(jìn)又程引入。了系統(tǒng)處理一塊數(shù)據(jù)的時(shí)間可以緩粗沖區(qū)略1

地認(rèn)為是Max(C,T)如果C<T,可使塊設(shè)備連續(xù)輸入;(如a)果C>T,可使CPU不必等待設(shè)備輸入。雙機(jī)通信時(shí)緩沖區(qū)的設(shè)置緩沖區(qū)緩沖區(qū)A機(jī)B機(jī)(a)單緩沖發(fā)送緩沖區(qū)接收緩沖區(qū)接收緩沖區(qū)發(fā)送緩沖區(qū)A機(jī)B機(jī)(b)雙緩沖553.

循環(huán)緩沖56①循環(huán)緩沖的組成多個(gè)緩沖區(qū)在循環(huán)緩沖中包括多個(gè)緩沖區(qū),每個(gè)緩沖區(qū)的大小相同作為輸入的多緩沖區(qū)可分為三種類(lèi)型:空緩沖區(qū)R已裝滿數(shù)據(jù)的緩沖區(qū)G計(jì)算進(jìn)程正在使用的工作緩沖區(qū)C多個(gè)指針作為輸入的緩沖區(qū)可設(shè)置三個(gè)指針Nexti:指示輸入進(jìn)程下次可用空緩沖區(qū)RNextg:指示計(jì)算進(jìn)程下一個(gè)可用緩沖區(qū)GCurrent:指示計(jì)算進(jìn)程正使用的緩沖區(qū)C57循環(huán)緩沖RGGGRG165423NextiNextgRGR16G

54G23

CNextiNextgcurrent指示計(jì)算進(jìn)程下一個(gè)可用的緩沖區(qū)指示輸入進(jìn)程下一個(gè)可用的空緩沖區(qū)指示計(jì)算進(jìn)程正在使用的緩沖區(qū)58②循環(huán)緩沖區(qū)的使用59計(jì)算進(jìn)程和輸入進(jìn)程可利用兩個(gè)過(guò)程使用循環(huán)緩沖區(qū):Getbuf過(guò)程計(jì)算進(jìn)程要使用緩沖區(qū)的數(shù)據(jù)時(shí),將Nextg指向的緩沖區(qū)提供給進(jìn)程使用,將其改為正在使用緩沖區(qū),令current指向該區(qū)的第一個(gè)單元,再令Nextg指向下一個(gè)G緩沖區(qū)。

(輸入進(jìn)程,類(lèi)似)Releasebuf過(guò)程讀取完緩沖區(qū)的數(shù)據(jù)后,由計(jì)算進(jìn)程調(diào)用。將緩沖區(qū)釋放,將之改為空緩沖區(qū)R。(輸入進(jìn)程,類(lèi)似)③進(jìn)程同步使用輸入循環(huán)緩沖,指針Nexti和指針

Nextg將不斷地沿著順時(shí)針?lè)较蛞苿?dòng),這樣就可能出現(xiàn)下述兩種情況:Nexti指針追趕上Nextg指針表示輸入數(shù)據(jù)的速度大于處理數(shù)據(jù)的速度,已無(wú)空緩沖區(qū)可用。此時(shí),輸入進(jìn)程應(yīng)阻塞,直到計(jì)算進(jìn)程把某個(gè)緩沖區(qū)中的數(shù)據(jù)讀取完,使之成為空緩沖區(qū)R,并調(diào)用Releasebuf過(guò)程將它釋放時(shí),才將輸入進(jìn)程喚醒。這種情況被稱為系統(tǒng)受計(jì)算限制60Nextg指針追趕上Nexti指針表示輸入數(shù)據(jù)的速度低于處理數(shù)據(jù)的速度,此時(shí)無(wú)裝滿數(shù)據(jù)的緩沖區(qū)供計(jì)算進(jìn)程使用。這時(shí),計(jì)算進(jìn)程只能阻塞,直至輸入進(jìn)程又裝滿某個(gè)緩沖區(qū),并調(diào)用

Releasebuf過(guò)程將它釋放時(shí),才去喚醒計(jì)算進(jìn)程。這種情況被稱為系統(tǒng)受I/O限制614.

緩沖池62前面講的緩沖區(qū)都是專屬某個(gè)進(jìn)程的。因此,進(jìn)程較多時(shí),開(kāi)銷(xiāo)會(huì)很大,利用率低??梢栽O(shè)立公用緩沖池,池中設(shè)立多個(gè)緩沖區(qū),為多個(gè)進(jìn)程共享,以提高利用率。①緩沖池的組成對(duì)于既可用于輸入又可用于輸出的公用緩沖池,其中至少應(yīng)含有以下三種類(lèi)型的緩沖區(qū):空緩沖區(qū)裝滿輸入數(shù)據(jù)的緩沖區(qū)裝滿輸出數(shù)據(jù)的緩沖區(qū)為了管理上的方便,可將相同類(lèi)型的緩沖區(qū)鏈成一個(gè)隊(duì)列,于是形成以下三個(gè)隊(duì)列:①空緩沖隊(duì)列emq②輸入隊(duì)列inq:裝滿輸入數(shù)據(jù)的緩沖區(qū)組成③輸出隊(duì)列outq:裝滿輸出數(shù)據(jù)的緩沖區(qū)此外,還應(yīng)具有四種工作緩沖區(qū):①用于收容輸入數(shù)據(jù)的工作緩沖區(qū)②用于提取輸入數(shù)據(jù)的工作緩沖區(qū)③用于收容輸出數(shù)據(jù)的工作緩沖區(qū)④用于提取輸出數(shù)據(jù)的工作緩沖區(qū)6364②Getbuf過(guò)程和Putbuf過(guò)程hinsoutsinhout用用程程收收收收

提提收收提提收提

收收收提因?yàn)殛?duì)列屬于臨界資源,所以在Getbuf和Putbuf兩個(gè)操作緩沖池的函數(shù)中加入信號(hào)量操作③緩沖區(qū)的工作方式緩沖區(qū)可以工作在收容輸入、提取輸入、收容輸出和提取輸出四種工作方式下緩緩緩緩沖區(qū)的工作方式655.4

設(shè)備分配為防止設(shè)備被無(wú)序使用,它們必須由OS統(tǒng)一分配進(jìn)程要使用設(shè)備時(shí),不是直接使用設(shè)備,而是向OS提出申請(qǐng)。每當(dāng)進(jìn)程提出分配設(shè)備的申請(qǐng),只要是安全和可能的,OS便按一定的策略,進(jìn)行分配為了便于分配,OS必須維護(hù)與設(shè)備相關(guān)的信息661.

設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)①設(shè)備控制表(DCT)OS為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄該設(shè)備的情況設(shè)備類(lèi)型type設(shè)備標(biāo)識(shí)符:d設(shè)備狀態(tài):等待/不等待

忙/閑指向控制器表的指針重復(fù)執(zhí)行次數(shù)或時(shí)間設(shè)備隊(duì)列的隊(duì)首指針DCT

1DCT

2DCT

n設(shè)備控制表集合設(shè)備控制表DCT因申請(qǐng)?jiān)撛O(shè)備未獲得的,都排成一個(gè)隊(duì)列當(dāng)重復(fù)傳輸超過(guò)一定次數(shù)或時(shí)間,才認(rèn)為出錯(cuò)指向與設(shè)備相連的設(shè)備控制器eviceid②控制器控制表、通道控制表和系統(tǒng)設(shè)備表控制器控制表(COCT)OS為每一個(gè)控制器設(shè)置一張記錄其情況的控制表通道控制表(CHCT)每個(gè)通道都配有一張控制表系統(tǒng)設(shè)備表(SDT)這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),記錄了系統(tǒng)中全部設(shè)備的情況。每個(gè)設(shè)備占一個(gè)表目,其中包括設(shè)備類(lèi)型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表、設(shè)備驅(qū)動(dòng)程序的入口等表項(xiàng)67COCT、CHCT和SDT表(c)系統(tǒng)控控設(shè)SDT控制器標(biāo)識(shí)符:controllerid控制器狀態(tài):忙/閑與控制器連接的通道表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)尾指針通道標(biāo)識(shí)符:channelid通道狀態(tài):忙/閑與通道連接的控制器表首址通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)尾指針(a)控制器表COCT(b)通道表CHCT表目1…表目i…68設(shè)備類(lèi)設(shè)備標(biāo)識(shí)符DCT驅(qū)動(dòng)程序入口2.

設(shè)備分配時(shí)應(yīng)考慮的因素69–

為使OS有條不紊地工作,OS在分配設(shè)備時(shí),應(yīng)考慮這樣幾個(gè)因素:①設(shè)備的固有屬性②設(shè)備分配算法③設(shè)備分配時(shí)的安全性④設(shè)備獨(dú)立性①設(shè)備的固有屬性設(shè)備的固有屬性分成3種:①獨(dú)占性指這種設(shè)備在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程獨(dú)占,此即“臨界資源”②共享性指這種設(shè)備允許多個(gè)進(jìn)程同時(shí)共享③可虛擬性指設(shè)備本身雖是獨(dú)占設(shè)備,但經(jīng)過(guò)某種技術(shù)處理,可以把它改造成虛擬設(shè)備。對(duì)上述的獨(dú)占、共享、可虛擬三種設(shè)備應(yīng)采取不同的分配策略70②設(shè)備分配算法71與進(jìn)程調(diào)度的算法有些相似,但相對(duì)簡(jiǎn)單,通常只采用以下兩種算法:①先來(lái)先服務(wù)有多個(gè)進(jìn)程對(duì)同一設(shè)備提出I/O請(qǐng)求時(shí),根據(jù)提出請(qǐng)求的先后次序,將它們排成一個(gè)設(shè)備請(qǐng)求隊(duì)列,設(shè)備分配程序總是把設(shè)備首先分配給隊(duì)首進(jìn)程②優(yōu)先級(jí)高者優(yōu)先將優(yōu)先級(jí)高的進(jìn)程排在設(shè)備隊(duì)列前面,而對(duì)于優(yōu)先級(jí)相同的I/O請(qǐng)求,則按先來(lái)先服務(wù)原則排隊(duì)③設(shè)備分配中的安全性72從進(jìn)程運(yùn)行的安全性考慮,設(shè)備分配有以下兩種方式。①安全分配方式進(jìn)程發(fā)出I/O請(qǐng)求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時(shí)才被喚醒。這種方式下,一旦進(jìn)程已獲得某種設(shè)備后便阻塞,使該進(jìn)程不可能再請(qǐng)求任何資源,而在它運(yùn)行時(shí)

又不保持任何資源。優(yōu)點(diǎn):這種方式摒棄了造成死鎖的四個(gè)必要條件之一的“請(qǐng)求和保持”條件,從而使設(shè)備分配是安全的。缺點(diǎn):進(jìn)程進(jìn)展緩慢,即CPU與I/O設(shè)備是串行工作的②不安全分配方式在這種方式中,進(jìn)程發(fā)出I/O請(qǐng)求后仍繼續(xù)運(yùn)行,需要時(shí)又可發(fā)出其他I/O請(qǐng)求。僅當(dāng)進(jìn)程請(qǐng)求的設(shè)備已被另一進(jìn)程占用時(shí),才進(jìn)入阻塞狀態(tài)。優(yōu)點(diǎn):進(jìn)程可同時(shí)操作多個(gè)設(shè)備,使其推進(jìn)迅速缺點(diǎn):分配不安全,可能導(dǎo)致死鎖因此,在設(shè)備分配程序中,還應(yīng)再增加一個(gè)功能,以用于對(duì)本次設(shè)備分配是否會(huì)發(fā)生死鎖進(jìn)行安全性計(jì)算,僅當(dāng)計(jì)算結(jié)果說(shuō)明分配是安全的情況下才進(jìn)行設(shè)備分配73④設(shè)備獨(dú)立性74①設(shè)備獨(dú)立性的概念設(shè)備獨(dú)立性(設(shè)備無(wú)關(guān)性):應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。為了實(shí)現(xiàn)設(shè)備獨(dú)立性而引入了邏輯設(shè)備和物理設(shè)備這兩個(gè)概念。在應(yīng)用程序中,使用邏輯設(shè)備名稱請(qǐng)求某類(lèi)設(shè)備;OS在實(shí)際執(zhí)行時(shí),必須使用物理設(shè)備名稱。因此,OS須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物理設(shè)備名稱的功能,類(lèi)似于邏輯地址和物理地址的概念。設(shè)備獨(dú)立性的好處設(shè)備分配時(shí)的靈活性使用邏輯設(shè)備名稱,進(jìn)程申請(qǐng)時(shí),OS可把任何一臺(tái)同類(lèi)設(shè)備分配給它易于實(shí)現(xiàn)I/O重定向用于I/O操作的設(shè)備可以更換75②設(shè)備獨(dú)立性軟件76位于驅(qū)動(dòng)程序之上用戶進(jìn)程用戶進(jìn)程用戶進(jìn)程設(shè)備獨(dú)立性軟件驅(qū)動(dòng)程序驅(qū)動(dòng)程序驅(qū)動(dòng)程序驅(qū)動(dòng)程序無(wú)論何種設(shè)備,它們向用戶所提供的接口應(yīng)該是相同的。例如:對(duì)各種設(shè)備的讀操作,在應(yīng)用程序中都使用read;而對(duì)各種設(shè)備的寫(xiě)操作,也都使用write。③邏輯設(shè)備表LUT用于實(shí)現(xiàn)邏輯設(shè)備名到物理設(shè)備名的映射進(jìn)程用邏輯設(shè)備名請(qǐng)求設(shè)備時(shí),OS為之建一個(gè)LUT表項(xiàng)。LUT可以有兩種設(shè)置方法:OS中設(shè)置一張統(tǒng)一的表為每個(gè)用戶設(shè)置一張表77邏輯設(shè)備表邏輯設(shè)備名物理設(shè)備名驅(qū)動(dòng)程序入口地址/dev/tty31024/dev/printer52046………邏輯設(shè)備名系統(tǒng)設(shè)備表指針/dev/tty3/dev/printer5…(a)(b)所有用戶必須使用不同的邏輯設(shè)

備名,在多用戶環(huán)境下很難做到。可以實(shí)現(xiàn)每個(gè)用戶使用相同的邏輯設(shè)備名標(biāo)示不同的物理設(shè)備。78獨(dú)占設(shè)備的分配程序①基本的設(shè)備分配程序分配設(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ì)列。79分配控制器OS把設(shè)備分配給請(qǐng)求進(jìn)程后,再到其DCT中找出與該設(shè)備連接的控制器的COCT,從中的狀態(tài)字段可知該控制器是否忙碌。若忙,便將進(jìn)程PCB掛在該控制器的等待隊(duì)列上;否則,便將之分配給進(jìn)程分配通道在該COCT中又可找到與該控制器連接的通道的CHCT,從中的狀態(tài)信息,可知該通道是否忙碌。若忙,便將進(jìn)程PCB掛在該通道的等待隊(duì)列上;否則,將之分配給進(jìn)程只有在設(shè)備、控制器和通道三者都分配成功時(shí),這次的設(shè)備分配才算成功80②設(shè)備分配程序的改進(jìn)仔細(xì)研究上述基本的設(shè)備分配程序后可以發(fā)現(xiàn):進(jìn)程是以物理設(shè)備名來(lái)提出I/O請(qǐng)求的;采用的是單通路的I/O系統(tǒng)結(jié)構(gòu),容易產(chǎn)生

“瓶頸”現(xiàn)象。81為此,應(yīng)從以下兩方面對(duì)基本的設(shè)備分配程序加以改進(jìn),以使獨(dú)占設(shè)備的分配更靈活,提高分配的成功率。增加設(shè)備的獨(dú)立性進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O這樣,只要有一個(gè)該類(lèi)設(shè)備可用,OS便進(jìn)一步計(jì)算分配該設(shè)備的安全性。僅當(dāng)所有該類(lèi)設(shè)備都忙時(shí),才把進(jìn)程掛在其等待隊(duì)列上??紤]多通路情況為防止“瓶頸”現(xiàn)象,通常采用多通路的I/O系統(tǒng)結(jié)構(gòu)。僅當(dāng)所有的控制器(通道)都忙時(shí),分配才算失

敗,才把進(jìn)程掛在控制器(通道)的等待隊(duì)列上。只要有一個(gè)控制器(通道)可用,系統(tǒng)便可將它

分配給進(jìn)程。82SPOOLing技術(shù)脫機(jī)輸入/輸出技術(shù)是利用專門(mén)的外圍控制機(jī),將低速I(mǎi)/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤(pán)上;或者相反。SPOOLing技術(shù)的實(shí)質(zhì)是模擬脫機(jī)輸入/輸出基本方法①用一個(gè)進(jìn)程將設(shè)備輸入的數(shù)據(jù)暫存到磁盤(pán)上②用另一個(gè)進(jìn)程把暫存在磁盤(pán)上的數(shù)據(jù)傳送到設(shè)備上這樣,便可在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入/輸出功能此時(shí)的外圍操作與CPU對(duì)數(shù)據(jù)的處理同時(shí)進(jìn)行,這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作稱為SPOOLing,或稱為假脫機(jī)操作83SPOOLing系統(tǒng)的組成SPOOLing系統(tǒng)必須建立在具有多道程序功能的OS上而且應(yīng)有高速隨機(jī)外存的支持這通常是采用磁盤(pán)存儲(chǔ)技術(shù)來(lái)實(shí)現(xiàn)84SPOOLing系統(tǒng)主要有以下三部分:①輸入井、輸出井磁盤(pán)上的兩塊大存儲(chǔ)區(qū),用于暫存輸入、輸出的數(shù)據(jù)②輸入緩沖區(qū)、輸出緩沖區(qū)位于內(nèi)存中,作用是緩和CPU、設(shè)備之間的速度差異③輸入進(jìn)程、輸出進(jìn)程輸入進(jìn)程:利用輸入緩沖區(qū)為中介,把輸入設(shè)備的數(shù)據(jù)存入輸入井輸出進(jìn)程:將用戶數(shù)據(jù)存入輸出井,設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù)利用輸出緩沖區(qū)送入設(shè)備85SPOOLing系統(tǒng)的組成輸入進(jìn)程SPi入輸入緩沖區(qū)Bi輸出緩沖區(qū)Bo輸入井86輸出井磁盤(pán)輸入設(shè)備輸出設(shè)備輸出進(jìn)程SPo利用SPOOLing技術(shù)實(shí)現(xiàn)共享打印機(jī)打印機(jī)是經(jīng)常用到的輸出設(shè)備,屬于獨(dú)占設(shè)備。利用SPOOLing技術(shù),可將之改造為一臺(tái)可供多個(gè)用戶共享的設(shè)備,從而提高設(shè)備的利用率,也方便了用戶。共享打印機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。87進(jìn)程請(qǐng)求打印時(shí),SPOOLing系統(tǒng)并不是把打印機(jī)分配給該進(jìn)程,而只為它做兩件事:①由輸出進(jìn)程在輸出井中申請(qǐng)一塊空閑磁盤(pán)區(qū),并將要打印的數(shù)據(jù)存入其中;②輸出進(jìn)程為該進(jìn)程申請(qǐng)一張空白的請(qǐng)求打印表,并將打印請(qǐng)求填入其中;再將該表掛到請(qǐng)求打印隊(duì)列上。如果還有其他進(jìn)程要求打印,系統(tǒng)仍可接受其請(qǐng)求,并同樣為它們做上述兩件事。88如果打印機(jī)空閑,輸出進(jìn)程從請(qǐng)求打印隊(duì)列取出第一張請(qǐng)求打印表根據(jù)表中的要求將數(shù)據(jù),從輸出井傳送到輸出緩沖區(qū),再由打印機(jī)進(jìn)行打印。打印完后,輸出進(jìn)程再查看請(qǐng)求打印隊(duì)列中是否還有等待打印的請(qǐng)求表。若有,再取出第一張表,并根據(jù)要求打印,如此下去。直至隊(duì)列為空,輸出進(jìn)程才將自己阻塞起來(lái)。僅當(dāng)下次再有打印請(qǐng)求時(shí),輸出進(jìn)程才被喚醒。89SPOOLing系統(tǒng)的特點(diǎn)①提高了I/O的速度②將獨(dú)占設(shè)備改造為共享設(shè)備③實(shí)現(xiàn)了虛擬設(shè)備功能905.5

設(shè)備處理91由于I/O設(shè)備種類(lèi)繁多,物理特性各異,并涉及到大量與數(shù)字邏輯運(yùn)算有關(guān)的細(xì)節(jié),造成對(duì)設(shè)備的操作和管理非常復(fù)雜和瑣碎。要求用戶掌握I/O系統(tǒng)的原理,顯然是不現(xiàn)實(shí)的,也會(huì)限制計(jì)算機(jī)的推廣和應(yīng)用。所以,設(shè)法消除或屏蔽設(shè)備硬件內(nèi)部的低級(jí)處理

過(guò)程,為用戶提供一個(gè)簡(jiǎn)便、易用、抽象的邏輯

設(shè)備接口,保證用戶安全、方便地使用各類(lèi)設(shè)備,是設(shè)計(jì)I/O軟件的一個(gè)重要原則。I/O軟件負(fù)責(zé)設(shè)備的輸入/輸出,它涉及的面非常寬,往下與硬件有密切關(guān)系,往上又與用戶直接交互。它與進(jìn)程管理、存儲(chǔ)器、文件管理等都存在著一定的聯(lián)系,即它們都可能需要I/O軟件來(lái)實(shí)現(xiàn)I/O操作。為使十分復(fù)雜的I/O軟件能具有清晰的結(jié)構(gòu),更好的可移植性和易適應(yīng)性,目前在I/O軟件中已普遍采用層次式結(jié)構(gòu)。每一層都利用其下層提供的服務(wù),完成輸入/輸出功能中的某些子功能,并屏蔽這些功能實(shí)現(xiàn)的細(xì)節(jié),向高層提供服務(wù)。9293I/O系統(tǒng)的層次及功能I/O應(yīng)應(yīng)用用用用用

產(chǎn)產(chǎn)I/O請(qǐng)請(qǐng)、格格格I/O、Spooling用戶控層控軟設(shè)件設(shè):設(shè)與用用用戶交映互映的、接??诒?,、用分戶分可、直緩接緩調(diào)、用分分用?

戶設(shè)層備控提獨(dú)控供立設(shè)的性設(shè)與軟程I件/程O(píng):操負(fù)作責(zé)控有實(shí)設(shè)關(guān)現(xiàn)控的與控庫(kù)設(shè)設(shè)函備設(shè)數(shù)驅(qū)控,動(dòng),對(duì)器檢設(shè)的檢備統(tǒng)設(shè)進(jìn)一設(shè)行接控操口檢作、檢設(shè)備命中名中、中設(shè)中備程保程護(hù)、設(shè)備的分配與釋放等,同時(shí)為設(shè)備?管設(shè)理備和驅(qū)數(shù)動(dòng)據(jù)程傳序送:提與供硬必件要直的接存相儲(chǔ)關(guān)空,間負(fù)。責(zé)具體實(shí)現(xiàn)系統(tǒng)對(duì)設(shè)備發(fā)出的操作指令,驅(qū)動(dòng)I/O設(shè)備工作的程序中斷處硬理用程序:保存被執(zhí)中執(zhí)斷I/O進(jìn)操程操的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的處理程序進(jìn)行處理,處理完后再恢復(fù)被中斷進(jìn)程的現(xiàn)場(chǎng)后返回繼續(xù)執(zhí)行被中斷的進(jìn)程設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序通常又稱為設(shè)備處理程序,它是I/O進(jìn)程與設(shè)備控制器之間的通信程序由于它常以進(jìn)程的形式存在,故以后就簡(jiǎn)稱之為設(shè)備驅(qū)動(dòng)進(jìn)程94設(shè)備驅(qū)動(dòng)程序的主要任務(wù):接收上層發(fā)來(lái)的抽象I/O要求,如read或write,在把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行它也將由設(shè)備控制器發(fā)來(lái)的信號(hào)傳送給上層軟件由于設(shè)備驅(qū)動(dòng)程序與硬件密切相關(guān),故應(yīng)為每一類(lèi)設(shè)備配置一種驅(qū)動(dòng)程序;有時(shí)也可為非常類(lèi)似的兩類(lèi)設(shè)備配置一個(gè)驅(qū)動(dòng)程序951.

設(shè)備驅(qū)動(dòng)程序的功能①接收由進(jìn)程發(fā)來(lái)的I/O命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求(例如,將磁盤(pán)塊號(hào)轉(zhuǎn)換為磁盤(pán)的盤(pán)面、磁道號(hào)及扇區(qū)號(hào))②檢查I/O請(qǐng)求的合法性,了解設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式③發(fā)出I/O命令。如果設(shè)備空閑,立即啟動(dòng)設(shè)備完成操作;如果設(shè)備忙碌,則將請(qǐng)求掛在設(shè)備隊(duì)列上等待。④及時(shí)響應(yīng)由控制器或通道發(fā)來(lái)的中斷請(qǐng)求,調(diào)用相應(yīng)的中斷處理程序⑤對(duì)于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),還應(yīng)能夠根據(jù)用戶的I/O請(qǐng)求,自動(dòng)構(gòu)成通道程序96設(shè)備處理方式根據(jù)設(shè)備處理時(shí)設(shè)置進(jìn)程的情況分類(lèi):①為每一類(lèi)設(shè)備設(shè)置一個(gè)進(jìn)程,專門(mén)用于執(zhí)行這類(lèi)設(shè)備的I/O操作。②在整個(gè)OS中設(shè)置一個(gè)I/O進(jìn)程,專門(mén)用于執(zhí)行OS中所有各類(lèi)設(shè)備的I/O操作。(或分別設(shè)置輸入、輸出進(jìn)程)③不設(shè)置專門(mén)的設(shè)備處理進(jìn)程,只為各類(lèi)設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊),供用戶進(jìn)程或OS進(jìn)程調(diào)用。97設(shè)備驅(qū)動(dòng)程序的特點(diǎn)與一般程序的差異:①負(fù)責(zé)在請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之間進(jìn)行通信和轉(zhuǎn)換。②與控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而不同類(lèi)型的設(shè)備的驅(qū)動(dòng)程序不同。③與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。(中斷還是DMA)④因?yàn)榕c硬件緊密相關(guān),因而其中的一部分必須用匯編語(yǔ)言書(shū)寫(xiě)。985.6

磁盤(pán)存儲(chǔ)器的管理硬盤(pán)內(nèi)部結(jié)構(gòu)99磁盤(pán)性能簡(jiǎn)述磁盤(pán)的組織和格式磁盤(pán)包括一或多個(gè)物理盤(pán)片每個(gè)盤(pán)片分一個(gè)或兩個(gè)存儲(chǔ)面每個(gè)面被組織成若干個(gè)同心環(huán),這種環(huán)稱為磁道,各磁道之間留有必要的間隙。為使處理簡(jiǎn)單,每條磁道上可存儲(chǔ)相同數(shù)目的二進(jìn)制位每條磁道又被邏輯上劃分成若干個(gè)扇區(qū),軟盤(pán)大約為8~32個(gè)扇區(qū),硬盤(pán)則可多達(dá)數(shù)百個(gè)。一個(gè)扇區(qū)稱為一個(gè)盤(pán)塊(或數(shù)據(jù)塊),常常叫做

磁盤(pán)扇區(qū)。各扇區(qū)之間保留一定的間隙100磁盤(pán)的結(jié)構(gòu)和布局盤(pán)盤(pán)9盤(pán)盤(pán)8盤(pán)盤(pán)7盤(pán)盤(pán)6盤(pán)盤(pán)5盤(pán)盤(pán)4盤(pán)盤(pán)3盤(pán)盤(pán)2盤(pán)盤(pán)1盤(pán)盤(pán)0軸軸讀讀讀讀101主主扇扇讀磁讀磁磁扇扇磁磁盤(pán)上存儲(chǔ)的數(shù)據(jù)塊數(shù)目是由扇區(qū)數(shù)、磁道數(shù)以及磁盤(pán)面數(shù)所決定的。例如,一個(gè)10

GB容量的磁盤(pán)有8個(gè)雙面可存儲(chǔ)盤(pán)片,共16個(gè)存儲(chǔ)面(盤(pán)面)每面有16,383個(gè)磁道(也稱柱面),63個(gè)扇區(qū)102為充分利用磁盤(pán)外面磁道的存儲(chǔ)能力,現(xiàn)代磁盤(pán)不再把內(nèi)外磁道劃分為相同數(shù)目的扇區(qū)而是利用外層磁道容量較大的特點(diǎn),將盤(pán)面劃分成若干環(huán)帶,同一環(huán)帶內(nèi)的所有磁道具有相同的扇區(qū)數(shù)。顯然,外層環(huán)帶的磁道擁有更多的扇區(qū)。為減少這種磁道和扇區(qū)在盤(pán)面分布的幾何形式變化對(duì)驅(qū)動(dòng)程序的影響,大多數(shù)現(xiàn)代磁盤(pán)都隱藏了這些細(xì)節(jié),向OS提供虛擬幾何的磁盤(pán)規(guī)格,而不是實(shí)際的物理幾何規(guī)格103104為在磁盤(pán)上存儲(chǔ)數(shù)據(jù),必須先將磁盤(pán)低級(jí)格式化圖中給出一種溫切斯特盤(pán)中一條磁道格式化的情況ID

DataGap

Gap

Field

Gap

Field

Gap1

0

2

0

3

1

29

2

29

317

7

41

515

20

17

7

41

515

20IDPhysical

Sector

29BytesBytes

1211SynchByteTrack#Head#Sector#CRC3SynchByteDataCRC15122600

Bytes/Sector每條磁道含有30個(gè)固定大小的扇區(qū),每個(gè)扇區(qū)容量為600個(gè)字節(jié),其中512個(gè)字節(jié)存放數(shù)據(jù),其余的用于存放控制信息Sector?

SYNPhyCsicaHl

Se字ctor段0

:利用P磁hysic道al

Se號(hào)ctor、1磁頭號(hào)及扇區(qū)號(hào)三者來(lái)標(biāo)識(shí)一個(gè)ID扇區(qū)DataGap

Field

Gap

FieldCRC字段:校Gap驗(yàn)Field

GapData字段:存放51

122個(gè)9

字2節(jié)的數(shù)17DataField

Gap29

3據(jù)7

41

515

202.

磁盤(pán)的類(lèi)型105對(duì)磁盤(pán)可以從不同的角度進(jìn)行分類(lèi)。最常見(jiàn)的有:硬盤(pán)、軟盤(pán)單片盤(pán)、多片盤(pán)固定頭磁盤(pán)、活動(dòng)頭(移動(dòng)頭)磁盤(pán)…下面僅對(duì)固定頭磁盤(pán)和移動(dòng)頭磁盤(pán)做些介紹①固定頭磁盤(pán)每條磁道都有一讀/寫(xiě)磁頭,所有磁頭都裝在一剛性磁臂上。通過(guò)這些磁頭可并行訪問(wèn)所有磁道,有效提高了磁盤(pán)的I/O速度。這種結(jié)構(gòu)主要用于大容量磁盤(pán)②移動(dòng)頭磁盤(pán)每一個(gè)盤(pán)面僅配一個(gè)磁頭,也被裝在磁臂上。為能訪問(wèn)該盤(pán)面上的所有磁道,該磁頭必須能移動(dòng)。因此,移動(dòng)磁頭僅能以串行方式讀/寫(xiě),致使速度較慢由于其結(jié)構(gòu)簡(jiǎn)單,仍廣泛用于中小型磁盤(pán)。在PC機(jī)上配置的溫盤(pán)和軟盤(pán)都采用這種結(jié)構(gòu)1063.

磁盤(pán)訪問(wèn)時(shí)間107①尋道時(shí)間Ts指磁臂(磁頭)移動(dòng)到指定磁道上所經(jīng)歷的時(shí)間該時(shí)間是啟動(dòng)磁臂的時(shí)間s與磁頭移動(dòng)n條磁道所花費(fèi)的時(shí)間之和,即Ts=m×n+s其中,m是一常數(shù),與磁盤(pán)驅(qū)動(dòng)器的速度有關(guān)。尋道時(shí)間隨尋道距離的增加而增大②旋轉(zhuǎn)延遲時(shí)間Tr108扇區(qū)移動(dòng)到磁頭下面所經(jīng)歷的時(shí)間不同的磁盤(pán)類(lèi)型中,旋轉(zhuǎn)速度至少相差一個(gè)數(shù)量級(jí)。如軟盤(pán)為300

r/min,硬盤(pán)一般為

7200~15

000

r/min,甚至更高。③傳輸時(shí)間Tt指讀/寫(xiě)磁盤(pán)所經(jīng)歷的時(shí)間Tt的大小與每次所讀/寫(xiě)的字節(jié)數(shù)b和旋轉(zhuǎn)速度有關(guān):rNtT

=

b其中,r是磁盤(pán)每秒鐘的轉(zhuǎn)數(shù);N是一條磁道上的字節(jié)數(shù),當(dāng)一次讀/寫(xiě)的字節(jié)數(shù)相當(dāng)于半條磁道上的字節(jié)數(shù)時(shí),Tt與Tr

相同。因此訪問(wèn)時(shí)間Ta可表示為:a

s1092r

rNT

=

T

+

1

+

b磁盤(pán)調(diào)度算法①先來(lái)先服務(wù)(FCFS)一種最簡(jiǎn)單的磁盤(pán)調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤(pán)的先后次序進(jìn)行調(diào)度。優(yōu)點(diǎn):公平、簡(jiǎn)單,且每個(gè)進(jìn)程的請(qǐng)求都能依次地得到處理,不會(huì)出現(xiàn)某一進(jìn)程的請(qǐng)求長(zhǎng)期得不到滿足的情況。缺點(diǎn):由于未對(duì)尋道進(jìn)行優(yōu)化,致使平均尋道時(shí)間可能較長(zhǎng)。該算法僅適用于請(qǐng)求磁盤(pán)I/O的進(jìn)程數(shù)目較少的場(chǎng)合。110FCFS調(diào)度算法舉例平均尋道長(zhǎng)度=移動(dòng)距離之和/尋道次數(shù)111②最短尋道時(shí)間優(yōu)先(SSTF,

Shortest

Seek

Time

First)該算法首先滿足“要求訪問(wèn)的磁道與當(dāng)前所在磁道之間距離最短”的進(jìn)程,以使每次的尋道時(shí)間最短。SSTF算法的平均磁頭移動(dòng)距離明顯低于FCFS,因而SSTF較之FCFS有更好的尋道性能,故過(guò)

去曾一度被廣泛采用。但這種算法不能保證平均尋道時(shí)間最短。112SSTF調(diào)度算法舉例總是優(yōu)先訪問(wèn)離當(dāng)前磁頭最近的磁道113進(jìn)程“饑餓”現(xiàn)象SSTF算法雖然能獲得較好的尋道性能,但可能導(dǎo)致某個(gè)進(jìn)程發(fā)生“饑餓”現(xiàn)象。因?yàn)橹灰粩嘤行逻M(jìn)程的請(qǐng)求到達(dá),且其所要訪問(wèn)的磁道與當(dāng)前磁道之間的距離較近,新進(jìn)程的I/O請(qǐng)求必然優(yōu)先滿足。致使老進(jìn)程的請(qǐng)求長(zhǎng)期無(wú)法得到滿足114③掃描(SCAN)算法115它是對(duì)SSTF算法的改進(jìn),以防止老進(jìn)程出現(xiàn)“饑餓”現(xiàn)象。該算法不僅考慮到要訪問(wèn)的磁道與當(dāng)前磁道之間的距離,更優(yōu)先考慮的是磁頭當(dāng)前的移動(dòng)方向。例如,當(dāng)磁頭正在自里向外移動(dòng)時(shí),SCAN算法所考慮的下一個(gè)訪問(wèn)對(duì)象,應(yīng)是要訪問(wèn)的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問(wèn),直至再無(wú)更外的磁道需要訪問(wèn)時(shí),才將磁頭換向?yàn)樽酝庀蚶镆苿?dòng)。由于該算法的磁頭移動(dòng)規(guī)律頗似電梯的運(yùn)行,因而又常稱之為“電梯調(diào)度算法”。不僅考慮磁道

的距離,更考慮磁頭移動(dòng)方向。(電梯調(diào)度算法)SCAN調(diào)度算法舉例116SCAN算法既能獲得較好的尋道性能,又能防止

“饑餓”現(xiàn)象,故被廣泛用于大、中、小型機(jī)器和網(wǎng)絡(luò)中的磁盤(pán)調(diào)度。但SCAN也存在這樣的問(wèn)題:假設(shè)當(dāng)磁頭剛從里向外移動(dòng)而越過(guò)了某一磁道時(shí),恰好又有一進(jìn)程請(qǐng)求訪問(wèn)此磁道。這時(shí),磁頭繼續(xù)從里向外,而該進(jìn)程必須等待,等磁頭再次從外向里掃描時(shí),該進(jìn)程的請(qǐng)求才

可能得到處理,致使該進(jìn)程的請(qǐng)求被大大推遲。117④循環(huán)掃描(CSCAN)算法118為減少SCAN算法造成的這種延遲,CSCAN算法規(guī)定磁頭只做單向移動(dòng)。例如,總是自里向外移動(dòng),當(dāng)磁頭移到最外的磁道并訪問(wèn)完后,磁頭立即返回到最里的要訪問(wèn)磁道,亦即將最小磁道號(hào)緊接著最大磁道號(hào)構(gòu)成循環(huán),進(jìn)行循環(huán)掃描。磁頭單向移動(dòng)。總是從里向外訪問(wèn),或總是從外向里訪問(wèn)CSCAN調(diào)度算法舉例11935.85.

磁盤(pán)高速緩存120①磁盤(pán)高速緩存的形式磁盤(pán)高速緩存是指:利用內(nèi)存中的存儲(chǔ)空間暫存從磁盤(pán)讀出的信息。目的是提高磁盤(pán)I/O的速度。它邏輯上屬于磁盤(pán),物理上駐留在內(nèi)存中磁盤(pán)高速緩存在內(nèi)存中可分成兩種形式在內(nèi)存中開(kāi)辟一個(gè)單獨(dú)的存儲(chǔ)空間作為磁盤(pán)高速緩存,大小是固定的,不受應(yīng)用程序多少的影響把所有未利用的內(nèi)存空間變?yōu)橐粋€(gè)緩沖池,供請(qǐng)求分頁(yè)系統(tǒng)和磁盤(pán)I/O時(shí)(作為磁盤(pán)高速緩存)共享。磁盤(pán)高速緩存的大小顯然不再是固定的磁盤(pán)高速緩存的應(yīng)用當(dāng)有一進(jìn)程請(qǐng)求訪問(wèn)某個(gè)盤(pán)塊中的數(shù)據(jù)時(shí),由

OS先查看磁盤(pán)高速緩存中是否存在進(jìn)程所要訪問(wèn)的數(shù)據(jù)。若有,便直接從高速緩存中提取數(shù)據(jù)交付給請(qǐng)求進(jìn)程。這樣,就避免了訪盤(pán)操作,從而使本次訪問(wèn)速度提高4~6個(gè)數(shù)量級(jí);否則,應(yīng)先從磁盤(pán)中將所要訪問(wèn)的數(shù)據(jù)讀入并

交付給請(qǐng)求進(jìn)程。同時(shí)也將數(shù)據(jù)送入高速緩存。以后又需要訪問(wèn)該盤(pán)塊的數(shù)據(jù)時(shí),便可直接從

高速緩存中提取。121②數(shù)據(jù)交付方式–

指將磁盤(pán)高速緩存中的數(shù)據(jù)傳送給請(qǐng)求進(jìn)程的方式OS可以采取兩種方式將數(shù)據(jù)交付給請(qǐng)求進(jìn)程:①數(shù)據(jù)交付直接將磁盤(pán)高速緩存中的數(shù)據(jù)傳送給請(qǐng)求進(jìn)程②指針交付將指向磁盤(pán)高速緩存中的數(shù)據(jù)保存區(qū)域的指針交給請(qǐng)求進(jìn)程后一種方式由于所傳送的數(shù)據(jù)量少,而節(jié)省了實(shí)際傳送數(shù)據(jù)的時(shí)間122③置換算法如同請(qǐng)求調(diào)頁(yè)(段)一樣,將磁盤(pán)中的盤(pán)塊數(shù)據(jù)讀入磁盤(pán)高速緩存時(shí),同樣會(huì)出現(xiàn)因其中已裝滿數(shù)據(jù)而需要將某些數(shù)據(jù)換出的問(wèn)題。相應(yīng)地,也必然存在著采用哪種置換算法的問(wèn)題。較常用的置換算法仍然是LRU等。123由于請(qǐng)求調(diào)頁(yè)中的快表與磁盤(pán)高速緩存的工作情況不同,因而使得在置換算法中所應(yīng)考慮的問(wèn)題也有所差異?,F(xiàn)在不少OS在設(shè)計(jì)磁盤(pán)高速緩存的置換算法時(shí),除了考慮到“最近最久未使用”這一原則外,還考

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論