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

下載本文檔

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

文檔簡介

第六章輸入輸出系統(tǒng)

6.1I/O系統(tǒng)的功能、模型和接口6.2I/O設(shè)備和設(shè)備控制器6.3中斷機(jī)構(gòu)和中斷處理程序6.4設(shè)備驅(qū)動程序6.5與設(shè)備無關(guān)的I/O軟件6.6用戶層的I/O軟件6.7緩沖區(qū)管理6.8磁盤存儲器的性能和調(diào)度6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的基本功能隱藏物理設(shè)備的細(xì)節(jié)與設(shè)備的無關(guān)性提高處理機(jī)和I/O設(shè)備的利用率對I/O設(shè)備進(jìn)行控制確保對設(shè)備的正確共享錯誤處理6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O軟件的層次結(jié)構(gòu)6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)中各種模塊之間的層次視圖6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)接口塊設(shè)備接口流設(shè)備(字符設(shè)備)接口網(wǎng)絡(luò)通信接口6.2I/O設(shè)備和設(shè)備控制器I/O設(shè)備組成機(jī)械部件即設(shè)備本身(物理裝置)執(zhí)行I/O操作電子部件即設(shè)備控制器或叫適配器執(zhí)行I/O控制在小型和微型機(jī)中,它常采用印刷電路卡插入計(jì)算機(jī)主板上的總線插槽通過若干接口寄存器或接口緩沖區(qū)與CPU通信6.2I/O設(shè)備和設(shè)備控制器I/O設(shè)備可從不同角度對設(shè)備進(jìn)行分類按使用特性分類存儲設(shè)備輸入輸出設(shè)備按傳輸速率分類低速設(shè)備:每秒幾個字節(jié)到數(shù)百個字節(jié),鍵盤中速設(shè)備:每秒數(shù)千個字節(jié)到數(shù)十千字節(jié),打印機(jī)高速設(shè)備:每秒數(shù)百千個字節(jié)到數(shù)兆個字節(jié),網(wǎng)卡、磁盤6.2I/O設(shè)備和設(shè)備控制器常用設(shè)備、網(wǎng)絡(luò)以及總線的數(shù)據(jù)率6.2I/O設(shè)備和設(shè)備控制器按信息交換的單位分類塊設(shè)備(BlockDevice):設(shè)備一次操作的數(shù)據(jù)傳輸單位是塊常見設(shè)備:磁盤、磁帶等特征:傳輸速率高;可尋址;DMA方式字符設(shè)備(CharacterDevice):設(shè)備一次操作的數(shù)據(jù)傳輸單位是字符常見設(shè)備:鍵盤、終端、打印機(jī)和鼠標(biāo)等特征:傳輸速率低;不可尋址;中斷驅(qū)動方式6.2I/O設(shè)備和設(shè)備控制器按設(shè)備的固有屬性分類獨(dú)占設(shè)備:在一段時間內(nèi)只能由一個進(jìn)程(用戶)使用的設(shè)備,屬于臨界資源,如打印機(jī)、磁帶機(jī)等共享設(shè)備:在一段時間內(nèi)可由多個進(jìn)程同時使用的設(shè)備,如磁盤虛擬設(shè)備:通過虛擬技術(shù)將一臺獨(dú)占設(shè)備改造為共享設(shè)備,供若干進(jìn)程同時使用6.2I/O設(shè)備和設(shè)備控制器設(shè)備控制器設(shè)備控制器分為兩類控制字符設(shè)備的控制器控制塊設(shè)備的控制器6.2I/O設(shè)備和設(shè)備控制器設(shè)備控制器的功能接收和識別命令(控制寄存器)數(shù)據(jù)交換(數(shù)據(jù)寄存器)設(shè)備狀態(tài)的了解和報(bào)告(狀態(tài)寄存器)地址識別(地址譯碼器)數(shù)據(jù)緩沖差錯控制操作系統(tǒng)一般只與設(shè)備控制器打交道6.2I/O設(shè)備和設(shè)備控制器設(shè)備控制器的組成設(shè)備控制器是CPU和I/O設(shè)備之間的接口,它接收從CPU發(fā)來的命令,并去控制設(shè)備工作設(shè)備控制器和處理機(jī)的接口數(shù)據(jù)線:與數(shù)據(jù)寄存器和控制/狀態(tài)寄存器相連地址線控制線6.2I/O設(shè)備和設(shè)備控制器設(shè)備控制器和設(shè)備的接口數(shù)據(jù)信號控制信號狀態(tài)信號I/O邏輯CPU啟動一個設(shè)備時,將啟動命令和地址送給控制器控制器的I/O邏輯對收到的命令進(jìn)行譯碼再根據(jù)譯出的命令對所選的設(shè)備進(jìn)行控制(在一個設(shè)備控制器中可以有一個或多個設(shè)備接口,一個接口連一臺設(shè)備,控制器中的I/O邏輯根據(jù)處理機(jī)發(fā)來的地址信號,去選擇其中的一個設(shè)備接口)6.2I/O設(shè)備和設(shè)備控制器6.2I/O設(shè)備和設(shè)備控制器內(nèi)存映像I/O接口電路中有多個寄存器,一個寄存器有唯一的一個地址,每個地址為I/O端口,該地址稱為I/O端口地址I/O指令形式與I/O地址相互關(guān)聯(lián),主要有兩種形式I/O獨(dú)立編址(I/O專用指令)內(nèi)存映像編址(內(nèi)存映像I/O模式)6.2I/O設(shè)備和設(shè)備控制器I/O獨(dú)立編址(I/O專用指令)分配給端口的地址空間是完全獨(dú)立的,與內(nèi)存的地址空間沒有關(guān)系主機(jī)使用專門的I/O指令對端口進(jìn)行操作優(yōu)缺點(diǎn)外部設(shè)備不占用內(nèi)存的地址空間程序設(shè)計(jì)時,易于區(qū)分是對內(nèi)存操作還是對I/O端口操作對I/O端口操作的指令類型少,操作不靈活例子:8086/8088,分配給I/O端口的地址空間64K,只能用IN和OUT指令對其進(jìn)行讀寫操作6.2I/O設(shè)備和設(shè)備控制器內(nèi)存映像I/O分配給系統(tǒng)中所有端口的地址空間與內(nèi)存的地址空間統(tǒng)一編址主機(jī)把I/O端口看作一個存儲單元,對I/O的讀寫操作等同于對存儲器的操作優(yōu)缺點(diǎn)凡是可對存儲器操作的指令都可對I/O端口操作不需要專門的I/O指令I(lǐng)/O端口可占有較大的地址空間占用內(nèi)存空間6.2I/O設(shè)備和設(shè)備控制器I/O通道(I/OChannel)I/O通道設(shè)備的引入為了把CPU從繁雜的I/O任務(wù)中解脫出來,同時為了提高CPU與設(shè)備、設(shè)備與設(shè)備之間的并行工作能力通道的定義I/O通道是一種特殊的處理機(jī),它具有執(zhí)行I/O指令的能力,并通過執(zhí)行通道程序來控制I/O操作6.2I/O設(shè)備和設(shè)備控制器通道特點(diǎn)指令類型單一通道沒有自己的內(nèi)存,通道程序在主機(jī)的內(nèi)存中,即通道與CPU共享內(nèi)存通道類型字節(jié)多路通道數(shù)組選擇通道數(shù)組多路通道6.2I/O設(shè)備和設(shè)備控制器字節(jié)多路通道通道中通常含有許多非分配型子通道,數(shù)量從幾十個到數(shù)百個,每一個子通道連接一臺I/O設(shè)備這些子通道按時間片輪轉(zhuǎn)方式共享主通道主要連接以字節(jié)為單位的低速設(shè)備,如打印機(jī),終端以字節(jié)為單位傳輸信息,可以分時地執(zhí)行多個通道程序。當(dāng)一個通道程序控制某臺設(shè)備傳送一個字節(jié)后,通道硬件就控制轉(zhuǎn)去執(zhí)行另一個通道程序,控制另一臺設(shè)備傳送信息6.2I/O設(shè)備和設(shè)備控制器字節(jié)多路通道的工作原理6.2I/O設(shè)備和設(shè)備控制器數(shù)組選擇通道以成組方式工作,每次傳送一批數(shù)據(jù),傳送速度高在一段時間內(nèi)只能執(zhí)行一個通道程序,只允許一臺設(shè)備進(jìn)行數(shù)據(jù)傳輸。當(dāng)這臺設(shè)備數(shù)據(jù)傳輸完成后,再選擇與通道連接的另一臺設(shè)備,執(zhí)行它的相應(yīng)的通道程序。這種獨(dú)占性又使得通道利用率很低主要連接磁盤,磁帶等高速I/O設(shè)備選擇通道6.2I/O設(shè)備和設(shè)備控制器數(shù)組多路通道結(jié)合了選擇通道傳送速度高和字節(jié)多路通道能進(jìn)行分時并行操作的優(yōu)點(diǎn)先為一臺設(shè)備執(zhí)行一條通道指令,然后自動轉(zhuǎn)接,為另一臺設(shè)備執(zhí)行一條通道指令。它含有多個非分配型的子通道,既有很高的數(shù)據(jù)傳輸率,又能獲得令人滿意的通道利用率實(shí)際上是對通道程序采用多道程序設(shè)計(jì)的硬件實(shí)現(xiàn)主要連接高速設(shè)備6.2I/O設(shè)備和設(shè)備控制器“瓶頸”問題通道執(zhí)行通道程序,向控制器發(fā)出命令,并具有向CPU發(fā)中斷信號的功能。一旦CPU發(fā)出指令,啟動通道,則通道獨(dú)立于CPU工作但是,由于通道價格貴,通道數(shù)量少,往往使之成為I/O的“瓶頸”6.2I/O設(shè)備和設(shè)備控制器單通路I/O系統(tǒng)6.2I/O設(shè)備和設(shè)備控制器多通路I/O系統(tǒng)解決“瓶頸”問題提高了控制器效率提高可靠性提高并行度6.3中斷機(jī)構(gòu)和中斷處理程序中斷簡介中斷CPU對系統(tǒng)內(nèi)外發(fā)生的異步事件的響應(yīng)過程異步事件是指無一定時序關(guān)系隨機(jī)發(fā)生的事件引入中斷解決主機(jī)與I/O設(shè)備并行工作的問題提高系統(tǒng)可靠性實(shí)現(xiàn)多機(jī)聯(lián)系方便應(yīng)用程序,實(shí)現(xiàn)實(shí)時控制6.3中斷機(jī)構(gòu)和中斷處理程序分類中斷(外中斷)陷入(內(nèi)中斷)I/O中斷時鐘中斷系統(tǒng)調(diào)用缺頁異常斷點(diǎn)指令其他程序性異常(如算術(shù)溢出等)廣義中斷中斷(狹義)與陷入的區(qū)別——信號的來源不同——中斷:與正執(zhí)行指令無關(guān),可以屏蔽陷入:與正執(zhí)行指令有關(guān),不可屏蔽6.3中斷機(jī)構(gòu)和中斷處理程序中斷向量表和中斷優(yōu)先級中斷向量表每個中斷有一個唯一的中斷向量號(通常為中斷類型號)中斷向量號通常按照從小到大的順序存放在中斷向量表中中斷向量表一般存放在主存儲器的固定區(qū)域中每個表項(xiàng)是一個中斷向量,存放了中斷向量號和中斷處理程序的入口地址中斷優(yōu)先級6.3中斷機(jī)構(gòu)和中斷處理程序?qū)Χ嘀袛嘣吹奶幚矸绞街袛嗥帘翁幚硪粋€中斷時屏蔽其它所有中斷,對任何新中斷置之不理,直至本次中斷處理完,再檢測有無新中斷中斷嵌套處理一個中斷時可以繼續(xù)響應(yīng)其它中斷6.3中斷機(jī)構(gòu)和中斷處理程序中斷處理過程中斷請求中斷判優(yōu)中斷響應(yīng)中斷服務(wù)中斷返回中斷硬件中斷處理程序中斷源(中斷事件):引起中斷發(fā)生的事件中斷處理程序:處理中斷的程序代碼,也稱中斷例程6.3中斷機(jī)構(gòu)和中斷處理程序6.3中斷機(jī)構(gòu)和中斷處理程序中斷處理程序中斷響應(yīng)CPU在每條指令執(zhí)行周期的最后時刻掃描中斷寄存器,詢問是否有中斷信號開始取下一條指令執(zhí)行指令檢查指令處理中斷停止取周期執(zhí)行周期中斷周期不允許中斷允許中斷6.3中斷機(jī)構(gòu)和中斷處理程序保護(hù)被中斷進(jìn)程的CPU現(xiàn)場轉(zhuǎn)讓相應(yīng)的中斷處理程序中斷處理恢復(fù)CPU的現(xiàn)場并退出中斷6.3中斷機(jī)構(gòu)和中斷處理程序6.4設(shè)備驅(qū)動程序又稱設(shè)備處理程序是I/O進(jìn)程與設(shè)備控制器之間的通信程序6.4設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序概述設(shè)備驅(qū)動程序的功能接收由設(shè)備獨(dú)立性軟件發(fā)來的命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為與設(shè)備相關(guān)的低層操作序列檢查用戶I/O請求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式發(fā)出I/O命令及時響應(yīng)由控制器或通道發(fā)來的中斷請求,根據(jù)中斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理對于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),驅(qū)動程序還應(yīng)能夠根據(jù)用戶的I/O請求,自動地構(gòu)成通道程序6.4設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序的特點(diǎn)驅(qū)動程序是實(shí)現(xiàn)在與設(shè)備無關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性密切相關(guān)驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式密切相關(guān)驅(qū)動程序的一部分必須用匯編語言書寫,目前有很多驅(qū)動程序的基本部分已固化在ROM中驅(qū)動程序應(yīng)允許可重入6.4設(shè)備驅(qū)動程序設(shè)備處理方式為每一類設(shè)備設(shè)置一個進(jìn)程,專門用于執(zhí)行這類設(shè)備的I/O操作在整個系統(tǒng)中設(shè)置一個I/O進(jìn)程,專門用于執(zhí)行系統(tǒng)中所有各類設(shè)備的I/O操作。也可以設(shè)置一個輸入進(jìn)程和一個輸出進(jìn)程,分別處理系統(tǒng)中所有各類設(shè)備的輸入或輸出操作不設(shè)置專門的設(shè)備處理進(jìn)程,而只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊),供用戶或系統(tǒng)進(jìn)程調(diào)用6.4設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序的處理過程將抽象要求轉(zhuǎn)換為具體要求對服務(wù)請求進(jìn)行校驗(yàn)檢查設(shè)備的狀態(tài)傳送必要的參數(shù)啟動I/O設(shè)備6.4設(shè)備驅(qū)動程序?qū)/O設(shè)備的控制方式分為四類使用輪詢的可編程I/O方式(程序I/O方式)使用中斷的可編程I/O方式(中斷驅(qū)動方式)直接存儲器訪問方式(DMA方式)I/O通道控制方式6.4設(shè)備驅(qū)動程序使用輪詢的可編程I/O方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/O控制器中讀入字向存儲器中寫字檢查狀態(tài)傳送完?CPU出錯完成未就緒下條指令未完I/O→CPUCPU→內(nèi)存I/O控制器置狀態(tài)寄存器busy=1按規(guī)定指令控制設(shè)備進(jìn)行I/O設(shè)備清error位表示I/O成功;清busy位表示I/O結(jié)束6.4設(shè)備驅(qū)動程序缺點(diǎn)CPU將大量的時間花費(fèi)在循環(huán)等待上,CPU效率極差外設(shè)不能合理利用整個系統(tǒng)的效率很低現(xiàn)在已較少使用這種方式作為I/O的數(shù)據(jù)傳輸控制6.4設(shè)備驅(qū)動程序使用中斷的可編程I/O方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/O控制器中讀入字向存儲器中寫字檢查狀態(tài)傳送完?CPU出錯完成下條指令未完I/O→CPUCPU→內(nèi)存I/O控制器置狀態(tài)寄存器busy=1按規(guī)定指令控制設(shè)備進(jìn)行I/O設(shè)備清error位表示I/O成功;清busy位表示I/O結(jié)束中斷CPU做其它事6.4設(shè)備驅(qū)動程序6.4設(shè)備驅(qū)動程序優(yōu)點(diǎn)在設(shè)備進(jìn)行數(shù)據(jù)傳輸時,CPU不必等待,可以繼續(xù)執(zhí)行其它進(jìn)程缺點(diǎn)CPU以字(節(jié))為單位進(jìn)行干預(yù),只適于數(shù)據(jù)傳輸率較低的設(shè)備6.4設(shè)備驅(qū)動程序直接存儲器訪問方式(DMA方式)DMA方式的引入數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊所傳送的數(shù)據(jù)是由設(shè)備直接送入內(nèi)存,或者相反僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需要CPU干預(yù)6.4設(shè)備驅(qū)動程序DMA控制器的組成主機(jī)與DMA控制器的接口DMA控制器與塊設(shè)備的接口I/O控制邏輯DMA控制器中設(shè)置四類寄存器命令/狀態(tài)寄存器(CR)內(nèi)存地址寄存器(MAR)數(shù)據(jù)寄存器(DR)數(shù)據(jù)計(jì)數(shù)器(DC)6.4設(shè)備驅(qū)動程序6.4設(shè)備驅(qū)動程序DMA工作過程竊取總線控制權(quán)6.4設(shè)備驅(qū)動程序I/O通道控制方式I/O通道控制方式的引入將DMA方式中對一個數(shù)據(jù)塊的讀(寫)為單位的干預(yù),減少為對一組數(shù)據(jù)塊的讀(寫)及有關(guān)的控制和管理為單位的干預(yù)實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行工作,從而更有效地提高了整個系統(tǒng)的資源利用率6.4設(shè)備驅(qū)動程序通道程序通道程序由若干通道指令組成,每條通道指令規(guī)定了設(shè)備的一種操作,通道程序的執(zhí)行過程就是I/O操作的處理過程每條通道指令包含以下信息操作碼:規(guī)定指令執(zhí)行的操作。內(nèi)存地址:數(shù)據(jù)在內(nèi)存中的首地址。計(jì)數(shù):本條指令要讀或?qū)懙淖止?jié)數(shù)。通道程序結(jié)束位:表示通道程序是否結(jié)束。1,結(jié)束。記錄結(jié)束標(biāo)志:0,本條指令和下一條指令所處理的數(shù)據(jù)同屬一個記錄;1,這是處理某記錄的最后一條指令6.4設(shè)備驅(qū)動程序通道使用的主要寄存器數(shù)據(jù)字寄存器:用于存放傳輸?shù)臄?shù)據(jù)通道控制字寄存器(CCW):用于存放當(dāng)前正在執(zhí)行的通道命令通道地址字寄存器(CAW):用于存放通道命令的地址,在通道程序執(zhí)行前,要把通道程序的首地址存于此通道狀態(tài)字寄存器(CSW):其中包括通道的狀態(tài)、設(shè)備狀態(tài)的信息,當(dāng)I/O操作結(jié)束時送入主存固定單元,以中斷的方式告訴CPU有關(guān)通道、控制器和設(shè)備的有關(guān)信息6.4設(shè)備驅(qū)動程序通道工作過程CPU執(zhí)行用戶進(jìn)程,當(dāng)遇到I/O請求時,由操作系統(tǒng)生成相應(yīng)的通道程序放入內(nèi)存,之后執(zhí)行“啟動I/O”指令,啟動通道工作通道接收到“啟動I/O”指令后,按CAW取出指令,同時向CPU發(fā)回答信號,使CPU可繼續(xù)執(zhí)行其它程序;而通道則開始執(zhí)行通道程序,控制設(shè)備完成傳輸工作。此時,通道與CPU并行工作當(dāng)通道傳輸完成時,向CPU發(fā)I/O中斷,并且通道停止工作CPU接收中斷信號,根據(jù)通道的狀態(tài)信息,決定下一步做什么進(jìn)程i/進(jìn)程k/其他就緒進(jìn)程執(zhí)行規(guī)定的操作用戶程序中央處理器操作系統(tǒng)程序通道設(shè)備控制器和設(shè)備進(jìn)程i…

系統(tǒng)調(diào)用(I/O請求)…保護(hù)進(jìn)程i的現(xiàn)場組織通道程序存CAW執(zhí)行“啟動I/O”指令檢查條件碼啟動成功進(jìn)程i阻塞重新調(diào)度,進(jìn)程k運(yùn)行進(jìn)程k被中斷,保護(hù)現(xiàn)場分析中斷事件處理I/O中斷喚醒進(jìn)程i重新調(diào)度判斷狀態(tài)形成條件碼執(zhí)行通道程序;控制設(shè)備操作;執(zhí)行情況記錄在CSW中。出現(xiàn)中斷事件;CSW送主存固定單元;通道號、設(shè)備號送特定寄存器。進(jìn)程k…6.5與設(shè)備無關(guān)的I/O軟件與設(shè)備無關(guān)軟件的基本概念也稱設(shè)備獨(dú)立性(DeviceIndependence)基本含義:應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備做法應(yīng)用程序中使用邏輯設(shè)備名稱來請求使用設(shè)備系統(tǒng)在實(shí)際執(zhí)行時,必須使用物理設(shè)備名稱好處設(shè)備分配時的靈活性易于實(shí)現(xiàn)I/O重定向6.5與設(shè)備無關(guān)的I/O軟件與設(shè)備無關(guān)的軟件的功能設(shè)備驅(qū)動程序的統(tǒng)一接口緩沖管理差錯控制對獨(dú)立設(shè)備的分配和回收獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊實(shí)現(xiàn)設(shè)備的符號名到設(shè)備驅(qū)動程序的映射6.5與設(shè)備無關(guān)的I/O軟件

(a)沒有標(biāo)準(zhǔn)的(b)具有標(biāo)準(zhǔn)的驅(qū)動程序接口驅(qū)動程序的接口6.5與設(shè)備無關(guān)的I/O軟件設(shè)備分配設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)設(shè)備表SDT(SystemDeviceTable)整個系統(tǒng)中只有一張每個設(shè)備占一個表項(xiàng)6.5與設(shè)備無關(guān)的I/O軟件設(shè)備控制表DCT(DeviceControlTable)系統(tǒng)中的每臺設(shè)備都有一張?jiān)O(shè)備控制表DCT充分體現(xiàn)出設(shè)備的各方面特征6.5與設(shè)備無關(guān)的I/O軟件控制器控制表(COCT)每個控制器一張通道控制表(CHCT)每個通道一張6.5與設(shè)備無關(guān)的I/O軟件設(shè)備分配時應(yīng)考慮的因素設(shè)備的固有屬性獨(dú)占設(shè)備采用獨(dú)享分配策略,即將設(shè)備分配給某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至該進(jìn)程完成或釋放該設(shè)備。缺點(diǎn):設(shè)備得不到充分利用,還可能引起死鎖。共享設(shè)備同時分配給多個進(jìn)程使用,須注意對這些進(jìn)程訪問該設(shè)備的先后次序進(jìn)行合理的調(diào)度。虛擬設(shè)備同共享設(shè)備6.5與設(shè)備無關(guān)的I/O軟件設(shè)備分配算法先來先服務(wù)優(yōu)先級高者優(yōu)先6.5與設(shè)備無關(guān)的I/O軟件設(shè)備分配時的安全性安全分配方式每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。缺點(diǎn):進(jìn)程進(jìn)展緩慢,CPU與I/O設(shè)備串行工作不安全分配方式進(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):分配不安全,可能造成死鎖。設(shè)備獨(dú)立性6.5與設(shè)備無關(guān)的I/O軟件獨(dú)占設(shè)備的分配程序基本的分配程序分配設(shè)備分配控制器分配通道設(shè)備分配程序的改進(jìn)增加設(shè)備的獨(dú)立性考慮多通路情況6.5與設(shè)備無關(guān)的I/O軟件邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)邏輯設(shè)備表(LUT,LogicalUnitTable)6.5與設(shè)備無關(guān)的I/O軟件LUT的設(shè)置問題整個系統(tǒng)中只設(shè)置一張LUT要求所有用戶都不使用相同的邏輯設(shè)備名主要用于單用戶系統(tǒng)中為每個用戶設(shè)置一張LUT每當(dāng)用戶登錄時,便為該用戶建立一個進(jìn)程,同時也為之建立一張LUT,并將該表放入進(jìn)程的PCB中6.6用戶層的I/O軟件大部分I/O軟件都包含在操作系統(tǒng)中但仍有一小部分在用戶空間,包括與用戶程序連接在一起的庫函數(shù)完全運(yùn)行于內(nèi)核之外的SPOOLing系統(tǒng)6.6用戶層的I/O軟件系統(tǒng)調(diào)用與庫函數(shù)系統(tǒng)調(diào)用庫函數(shù)C語言、UNIX系統(tǒng)的庫函數(shù)Win32API用戶態(tài)內(nèi)核態(tài)6.6用戶層的I/O軟件SPOOLing(假脫機(jī))系統(tǒng)SPOOLing技術(shù)SPOOLing,SimultaneousPeripheralOperationOnLine,也稱為虛擬設(shè)備技術(shù)多道程序設(shè)計(jì)系統(tǒng)中處理獨(dú)占設(shè)備的一種方法利用假脫機(jī)技術(shù)可把獨(dú)占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從而提高設(shè)備利用率6.6用戶層的I/O軟件SPOOLing的組成輸入井和輸出井輸入緩沖區(qū)和輸出緩沖區(qū)輸入進(jìn)程和輸出進(jìn)程井管理程序6.6用戶層的I/O軟件6.6用戶層的I/O軟件6.6用戶層的I/O軟件SPOOLing系統(tǒng)的特點(diǎn)提高了I/O的速度將獨(dú)占設(shè)備改造為共享設(shè)備實(shí)現(xiàn)了虛擬設(shè)備功能6.6用戶層的I/O軟件假脫機(jī)打印機(jī)系統(tǒng)用戶進(jìn)程的打印請求傳遞給SPOOLing系統(tǒng),而不是真正將打印機(jī)分配給用戶進(jìn)程SPOOLing系統(tǒng)同意為它打印輸出,但并不真正立即把打印機(jī)分配給該用戶進(jìn)程,而只為它做兩件事:由輸出進(jìn)程在輸出井中為之申請一個空閑磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;輸出進(jìn)程再為用戶進(jìn)程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊(duì)列上。打印機(jī)空閑時,輸出進(jìn)程從請求打印隊(duì)列上取出一個請求打印表,按其中的要求把數(shù)據(jù)由打印機(jī)輸出6.6用戶層的I/O軟件6.6用戶層的I/O軟件舉例WindowsNT中,應(yīng)用程序直接向針式打印機(jī)輸出需要15分鐘,而向打印作業(yè)隊(duì)列輸出只需要1分鐘,此后用戶可以關(guān)閉應(yīng)用程序而轉(zhuǎn)入其他工作,在以后適當(dāng)?shù)臅r候由打印機(jī)管理器完成15分鐘的打印輸出而無需用戶干預(yù)。6.6用戶層的I/O軟件守護(hù)進(jìn)程為打印機(jī)建立守護(hù)進(jìn)程取消原假脫機(jī)管理進(jìn)程6.3~6.6小結(jié)I/O系統(tǒng)的層次和每一層的主要功能6.3~6.6小結(jié)例,讀操作用戶進(jìn)程對已打開文件的文件描述符執(zhí)行讀庫函數(shù)(系統(tǒng)調(diào)用);設(shè)備獨(dú)立性軟件檢查參數(shù)是否正確,若正確,檢查高速緩存中有無要讀的數(shù)據(jù)塊。若有,從緩沖區(qū)直接讀至用戶區(qū),完成I/O請求;若沒有,設(shè)備獨(dú)立性軟件將設(shè)備的邏輯名轉(zhuǎn)換成物理名,檢查對設(shè)備操作的合法性,將I/O請求排隊(duì),阻塞用戶進(jìn)程等待I/O操作完成;內(nèi)核啟動設(shè)備驅(qū)動程序,分配存放讀出塊的緩沖區(qū),準(zhǔn)備接收數(shù)據(jù),并向設(shè)備控制寄存器發(fā)送啟動命令,啟動I/O;設(shè)備控制器操作設(shè)備,執(zhí)行數(shù)據(jù)傳輸;數(shù)據(jù)傳輸完成時,設(shè)備產(chǎn)生I/O中斷;6.3~6.6小結(jié)CPU響應(yīng)中斷,轉(zhuǎn)入磁盤中斷處理程序。中斷處理程序檢查中斷產(chǎn)生的原因和設(shè)備的執(zhí)行狀態(tài),若設(shè)備有錯,向設(shè)備驅(qū)動程序發(fā)信號,檢查能否重復(fù)執(zhí)行,如果允許,重發(fā)啟動設(shè)備的命令,再次傳輸;否則,向上層軟件報(bào)告錯誤。若I/O正確完成,將數(shù)據(jù)傳輸?shù)街付ǖ挠脩暨M(jìn)程空間,喚醒阻塞進(jìn)程,從而結(jié)束此次I/O請求;當(dāng)用戶進(jìn)程被再次調(diào)動執(zhí)行時,從I/O系統(tǒng)調(diào)用的斷點(diǎn)處繼續(xù)運(yùn)行。6.7

緩沖區(qū)管理緩沖的概念緩沖的引入緩和CPU與I/O設(shè)備間速度不匹配的矛盾減少對CPU的中斷頻率,放寬對中斷響應(yīng)時間的限制解決數(shù)據(jù)粒度不匹配的問題提高CPU和I/O設(shè)備之間的并行性6.7緩沖區(qū)管理緩沖技術(shù)的實(shí)現(xiàn)原理當(dāng)某個進(jìn)程進(jìn)行數(shù)據(jù)輸出操作時,先將數(shù)據(jù)送入緩沖區(qū),當(dāng)緩沖區(qū)滿時再將緩沖區(qū)的內(nèi)容送到輸出設(shè)備上當(dāng)一個進(jìn)程完成輸入操作時,先將輸入設(shè)備上的數(shù)據(jù)送入緩沖區(qū),當(dāng)緩沖區(qū)滿時,再由CPU將數(shù)據(jù)取走在緩沖管理中必須建立緩沖區(qū),有兩種設(shè)定方式采用硬件方法實(shí)現(xiàn)緩沖采用軟件緩沖的方式,即從主存空間中劃定出一個特殊的內(nèi)存區(qū)域作為緩沖區(qū)6.7緩沖區(qū)管理常用的緩沖技術(shù)有四種單緩沖雙緩沖環(huán)形緩沖緩沖池6.7緩沖區(qū)管理單緩沖當(dāng)用戶進(jìn)程發(fā)出I/O請求時,操作系統(tǒng)在主存的系統(tǒng)空間為之分配一個緩沖區(qū)可以實(shí)現(xiàn)預(yù)讀和滯后寫6.7緩沖區(qū)管理6.7緩沖區(qū)管理雙緩沖首先輸入將數(shù)據(jù)送入BUF1,裝滿后,轉(zhuǎn)向BUF2可以實(shí)現(xiàn)用戶數(shù)據(jù)區(qū)—緩沖區(qū)之間交換數(shù)據(jù)和緩沖區(qū)—外設(shè)之間交換數(shù)據(jù)的并行6.7緩沖區(qū)管理6.7緩沖區(qū)管理環(huán)形緩沖要真正實(shí)現(xiàn)CPU與外設(shè)的并行操作,雙緩沖技術(shù)還不能達(dá)到要求,在計(jì)算機(jī)中都采用多緩沖或緩沖池結(jié)構(gòu)為了便于管理,一般將多緩沖組織成循環(huán)緩沖形式,每個緩沖區(qū)的大小相同6.7緩沖區(qū)管理組成(三類緩沖區(qū))空緩沖區(qū)R用于存放數(shù)據(jù)指針:Nexti已裝滿數(shù)據(jù)的緩沖區(qū)G數(shù)據(jù)供進(jìn)程使用指針:Nextg現(xiàn)行工作緩沖區(qū)C當(dāng)前進(jìn)程使用的緩沖區(qū)指針:CurrentRRCGGGG1234567NextiNextgCurrent6.7緩沖區(qū)管理緩沖區(qū)的使用Getbuf過程計(jì)算進(jìn)程要取數(shù)據(jù):將指針Nextg所指的緩沖區(qū)提供給進(jìn)程使用,用Current指針指向該緩沖區(qū)的第一個單元,同時將Nextg移向下一個G緩沖區(qū)。輸入進(jìn)程要使用空緩沖區(qū)裝數(shù)據(jù):將指針Nexti所指的緩沖區(qū)提供給輸入進(jìn)程使用,同時將Nexti移向下一個R緩沖區(qū)。6.7緩沖區(qū)管理Releasebuf過程當(dāng)計(jì)算進(jìn)程把C緩沖區(qū)中的數(shù)據(jù)提取完時,調(diào)用該過程釋放該緩沖區(qū):將該緩沖區(qū)由當(dāng)前工作緩沖區(qū)C改為空緩沖區(qū)R。當(dāng)輸入進(jìn)程將緩沖區(qū)裝滿時:將該緩沖區(qū)釋放,并改為G緩沖區(qū)。6.7緩沖區(qū)管理進(jìn)程同步輸入進(jìn)程和計(jì)算進(jìn)程可并發(fā)執(zhí)行,指針Nexti和指針Nextg將不斷地沿順時針方向移動可能出現(xiàn)兩種情況Nexti指針追上Nextg指針(輸入速度>處理速度):無空緩沖區(qū),輸入進(jìn)程阻塞,稱為系統(tǒng)受計(jì)算限制。Nextg指針追上Nexti指針(輸入速度<處理速度):無數(shù)據(jù)可取,計(jì)算進(jìn)程阻塞,稱為系統(tǒng)受I/O限制。6.7緩沖區(qū)管理緩沖池問題:循環(huán)緩沖僅適用于某特定的I/O進(jìn)程和計(jì)算進(jìn)程,屬于專用緩沖。當(dāng)系統(tǒng)較大時,會有很多這樣的循環(huán)緩沖,不僅消耗大量內(nèi)存,而且利用率也不高解決:公用緩沖池——池中緩沖區(qū)可供多個進(jìn)程共享6.7緩沖區(qū)管理緩沖池的組成空緩隊(duì)列emq由空閑緩沖區(qū)連接而成用F(emq)指針指向隊(duì)首,L(emq)指向隊(duì)尾輸入隊(duì)列inq由裝滿輸入數(shù)據(jù)的緩沖區(qū)連接而成用F(inq)指針指向隊(duì)首,L(inq)指向隊(duì)尾輸出隊(duì)列outq由裝滿輸出數(shù)據(jù)的緩沖區(qū)連接而成用F(outq)指針指向隊(duì)首,L(outq)指向隊(duì)尾6.7緩沖區(qū)管理緩沖區(qū)的工作方式收容輸入提取輸入收容輸出提取輸出提取輸出hinsoutsinhout用戶程序收容輸入提取輸入收容輸出6.8磁盤存儲器的性能和調(diào)度

磁盤性能簡述數(shù)據(jù)的組織和格式磁盤柱面磁道扇區(qū)6.8磁盤存儲器的性能和調(diào)度老式磁盤上,每磁道扇區(qū)對于所有柱面都是相同的現(xiàn)代磁盤被劃分為環(huán)帶,外層的環(huán)帶比內(nèi)層的環(huán)帶擁有更多的扇區(qū)具有兩個環(huán)帶的磁盤該磁盤的一種的物理幾何規(guī)格可能的虛擬幾何規(guī)格6.8磁盤存儲器的性能和調(diào)度磁盤參數(shù)比較6.8磁盤存儲器的性能和調(diào)度磁盤格式化步驟低級格式化對磁盤進(jìn)行分區(qū)對每個分區(qū)分別執(zhí)行一次高級格式化6.8磁盤存儲器的性能和調(diào)度低級格式化磁盤使用之前,必須由軟件進(jìn)行低級格式化包含一系列同心的磁道,每個磁道包含若干數(shù)目的扇區(qū),扇區(qū)間存在短的間隙低格之后磁盤容量減少,減少量取決于:前導(dǎo)碼、扇區(qū)間隙和ECC的大小以及保留的備用扇區(qū)數(shù)目6.8磁盤存儲器的性能和調(diào)度分區(qū)在低格之后,要對磁盤進(jìn)行分區(qū)。邏輯上每個分區(qū)就象一個獨(dú)立的磁盤如Pentium和大多數(shù)機(jī)器上,0扇區(qū)包含主引導(dǎo)記錄,其中存放一些引導(dǎo)代碼和末尾的分區(qū)表分區(qū)表給出每個分區(qū)的起始扇區(qū)和大小為了能從硬盤引導(dǎo),在分區(qū)表中必須有一個分區(qū)被標(biāo)記為活動的6.8磁盤存儲器的性能和調(diào)度高級格式化一個引導(dǎo)塊空閑存儲管理(空閑列表或位圖)根目錄空文件系統(tǒng)將一個代碼設(shè)置在分區(qū)表中,表明該分區(qū)用什么文件系統(tǒng)6.8磁盤存儲器的性能和調(diào)度磁盤的類型固定頭磁盤移動頭磁盤一次訪盤請求讀/寫,磁盤地址,內(nèi)存地址設(shè)備號,柱面號,磁頭號,扇區(qū)號源地址/目的地址6.8磁盤存儲器的性能和調(diào)度磁盤訪問時間尋道時間TS把磁臂(磁頭)移動到指定磁道上所經(jīng)歷的時間TS=m*n+s

(m:常數(shù),n:移動的磁道數(shù),s:磁盤啟動時間)旋轉(zhuǎn)延遲時間Tr指定扇區(qū)移動到磁頭下面所經(jīng)歷的時間硬盤平均8.3ms,軟盤平均50-100ms數(shù)據(jù)傳輸時間Tt把數(shù)據(jù)從磁盤讀出或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時間Tt=b/(r*N)(b:讀寫字節(jié)數(shù)r:磁盤轉(zhuǎn)速N:一個磁道上的字節(jié)數(shù))6.8磁盤存儲器的性能和調(diào)度磁盤調(diào)度當(dāng)多個訪盤請求在等待時,采用一定的策略,對這些請求的服務(wù)順序調(diào)整安排,旨在降低平均磁盤服務(wù)時間,達(dá)到公平、高效公平:一個I/O請求在有限時間內(nèi)滿足高效:減少設(shè)備機(jī)械運(yùn)動所帶來的時間浪費(fèi),主要是使磁盤的平均尋道時間最短6.8磁盤存儲器的性能和調(diào)度例,考慮一個有40個柱面的磁盤,假設(shè)讀柱面11上數(shù)據(jù)塊的請求到達(dá),當(dāng)對柱面11的尋道正在進(jìn)行時,又來了對柱面1,36,16,34,9,12

的請求,則讓它們進(jìn)入未完成的請求表,一個柱面對應(yīng)一個單獨(dú)的鏈表6.8磁盤存儲器的性能和調(diào)度FCFS(先來先服務(wù))算法

溫馨提示

  • 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

提交評論