操作系統(tǒng)原理第四章_第1頁
操作系統(tǒng)原理第四章_第2頁
操作系統(tǒng)原理第四章_第3頁
操作系統(tǒng)原理第四章_第4頁
操作系統(tǒng)原理第四章_第5頁
已閱讀5頁,還剩139頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章設備管理

(Devices

Management)

設備管理是指計算機系統(tǒng)對除CPU和內存以外的所有輸入、輸出設備的管理。設備管理不但要管理實際I/O操作的設備(如磁盤機、打印機),還要管理諸如設備控制器、DMA控制器、中斷控制器、I/O處理機(通道)等支持設備。如何有效而又方便地管理好種類繁多的設備是設備管理的重要任務。

教學要求了解設備的分類,熟悉設備管理的目標和功能。熟悉程序I/O方式、中斷方式、DMA方式和通道方式四種I/O的控制方式;掌握通道的概念,熟悉通道類型。熟悉緩沖的概念,熟悉單緩沖、雙緩沖和多緩沖和緩沖池工作原理,了解UNIX系統(tǒng)的緩沖技術。熟悉I/O系統(tǒng)的目標---設備獨立性的概念;熟悉I/O軟件分層結構的概念;了解UNIX設備驅動程序結構;了解中斷方式I/O處理過程;掌握SPOOLing技術概念和SPOOLing系統(tǒng)的組成。了解設備分配的策略;熟悉獨享設備分配中數(shù)據結構。了解磁盤結構、數(shù)據組織和磁盤的訪問時間等磁盤性能,熟悉磁盤調度算法;了解獨立磁盤冗余陣列(RAID)技術。目錄4.1設備管理的概述4.1.1設備的分類4.1.2設備控制器4.1.3I設備管理的目標和功能4.2I/O控制方式4.2.1程序I/O方式4.2.2中斷控制方式4.2.3DMA控制方式4.2.4I/O通道控制方式4.3緩沖技術4.3.1緩沖的引入4.3.2緩沖的類型4.3.3UNIX系統(tǒng)的緩沖技術目錄-14.4I/O系統(tǒng)軟件4.4.1I/O系統(tǒng)的目標---設備獨立性4.4.2I/O軟件分層結構4.4.3UNIX設備驅動程序結構4.4.4中斷方式I/O處理4.4.5用戶空間的軟件I/O――SPOOLing系統(tǒng)4.5設備的分配4.5.1設備分配的策略4.5.2獨享設備的分配程序目錄-24.6磁盤I/O4.6.1磁盤結構4.6.2數(shù)據的組織4.6.3磁盤的訪問時間4.6.4磁盤(移臂)調度算法4.6.5獨立磁盤冗余陣列(RAID)技術4.7Windows2000I/O系統(tǒng)4.7.1Windows2000I/O系統(tǒng)結構4.7.2Windows2000延遲過程調用(DPC)4.7.3Windows2000注冊表4.7.4Windows2000I/O系統(tǒng)數(shù)據結構4.7.5Windows2000設備驅動程序目錄-34.8實驗和習題4.8.1注冊表編輯器(REGEDT32.EXE/REGEDIT.EXE)的使用4.8.2U盤安裝實例4.8.3磁盤I/OAPI函數(shù)應用4.8.4選擇題4.8.5問答題4.1設備管理的概述

4.1.1設備的分類

I/O設備的種類繁多,從OS觀點來看,其重要的性能指標有:數(shù)據傳輸速率、數(shù)據的傳輸單位、設備的共享屬性等。1.按傳輸速率分類低速設備:指傳輸速率為每秒鐘幾個字節(jié)到數(shù)百個字節(jié)的設備。典型的設備有鍵盤、鼠標、語音的輸入等;中速設備:指傳輸速率在每秒鐘數(shù)千個字節(jié)至數(shù)十千個字節(jié)的設備。典型的設備有行式打印機、激光打印機等;高速設備:指傳輸速率在數(shù)百千個字節(jié)至數(shù)兆字節(jié)的設備。典型的設備有磁帶機、磁盤機、光盤機等。2.按信息交換的單位分類塊設備(BlockDevice):指以數(shù)據塊為單位來組織和傳送數(shù)據信息的設備。這類設備用于存儲信息,有磁盤和磁帶等。它屬于有結構設備。典型的塊設備是磁盤,每個盤塊的大小為512B~4KB,磁盤設備的基本特征是:①傳輸速率較高,通常每秒鐘為幾兆位;②它是可尋址的,即可隨機地讀/寫任意一塊;③磁盤設備的I/O采用DMA方式。字符設備(CharacterDevice):指以單個字符為單位來傳送數(shù)據信息的設備。這類設備一般用于數(shù)據的輸入和輸出,有交互式終端、打印機等。它屬于無結構設備。字符設備的基本特征是:①傳輸速率較低;②不可尋址,即不能指定輸入時的源地址或輸出時的目標地址;③字符設備的I/O常采用中斷驅動方式。3.按資源分配的角度分類獨占設備:指在一段時間內只允許一個用戶(進程)訪問的設備,大多數(shù)低速的I/O設備,如用戶終端、打印機等屬于這類設備。因為獨占設備屬于臨界資源,所以多個并發(fā)進程必須互斥地進行訪問。共享設備:指在一段時間內允許多個進程同時訪問的設備。顯然,共享設備必須是可尋址的和可隨機訪問的設備。典型的共享設備是磁盤。共享設備不僅可以獲得良好的設備利用率,而且是實現(xiàn)文件系統(tǒng)和數(shù)據庫系統(tǒng)的物質基礎。虛擬設備:指通過虛擬技術將一臺獨占設備變換為若干臺供多個用戶(進程)共享的邏輯設備。一般可以利用假脫機技術(SPOOLing技術)實現(xiàn)虛擬設備。4.1.2設備控制器設備的電子部分叫做設備控制器或適配器。設備控制器的主要職責是控制一個或多個I/O設備,以實現(xiàn)I/O設備和計算機之間的數(shù)據交換。在小型和微型機中,它常采用印刷電路卡插入計算機中,控制器卡上通常有一個插座,通過電纜與設備相連,控制器和設備之間的接口是一個標準接口,它符合ANSI、IEEE或ISO這樣的國際標準。設備控制器是CPU與I/O設備之間的接口,它既要與CPU通信,又要與設備通信、還應具有按照CPU所發(fā)來的命令去控制設備工作的功能。

設備控制器-1因此,現(xiàn)有的大多數(shù)控制器都是由以下三部分組成的:設備控制器與處理器的接口、設控制器與設備的接口、I/O邏輯。設備控制器與處理機的接口用于實現(xiàn)CPU與設備控制器之間的通信。共有三類信號線:數(shù)據線、地址線和控制線。數(shù)據線通常與三類寄存器相連接,它們有不同的地址。第一類是數(shù)據寄存器(可能有多個),用于存放從設備送來的數(shù)據(輸入)或從CPU送來的數(shù)據(輸出);第二類是控制寄存器(也可能有多個),用于存放從CPU送來的控制信息信息;第三類是狀態(tài)寄存器(可以簡單到只有一位狀態(tài)位),用于存放設備的狀態(tài)信息。在I/O邏輯中還有中斷控制邏輯,產生中斷請求線INT輸出,在控制狀態(tài)寄存器上有相應的中斷允許位。設備控制器的內部邏輯結構和CPU、設備聯(lián)系圖如圖4-1所示。

P157圖4-1設備控制器的內部邏輯結構和CPU、設備聯(lián)系圖

CPU設備數(shù)據狀態(tài)控制數(shù)據寄存器控制/狀態(tài)寄存器I/O邏輯中斷控制器8259設備控制器控制器與設備接口i數(shù)據線地址線控制線4.1.3設備管理的目標和功能

1.設備管理的目標提高設備的利用率。為此,應盡量提高CPU與I/O設備之間的并行操作程度,主要利用的技術有:中斷技術、DMA技術、通道技術、緩沖技術。為用戶提供方便、統(tǒng)一的界面。所謂方便,是指用戶能獨立于具體設備的復雜物理特性之外而方便地使用設備。所謂統(tǒng)一,是指對不同的設備盡量使用統(tǒng)一的操作方式,例如各種字符設備用一種I/O操作方式。這就要求用戶操作的是簡便的邏輯設備,而具體的I/O物理設備由操作系統(tǒng)去實現(xiàn),這種性能常常被稱為設備的獨立性。2.設備管理功能設備分配。指設備管理程序按照一定的算法把某一個I/O設備、及其相應的設備控制器和通道分配給某一用戶(進程),對于未分配到的進程,則插入等待隊列中。緩沖區(qū)管理。為了解決CPU與I/O之間速度不匹配的矛盾,在它們之間配置了緩沖區(qū)。這樣設備管理程序又要負責管理緩沖區(qū)的建立、分配和釋放。實現(xiàn)物理I/O設備的操作。對于具有通道的系統(tǒng),設備管理程序根據用戶提出的I/O請求,生成相應的通道程序并提交給通道,然后用專門的通道指令啟動通道,對指定的設備進行I/O操作,并能響應通道的中斷請求。對于未設置通道的系統(tǒng),設備管理程序直接驅動設備進行I/O操作。4.2I/O控制方式

隨著計算機技術的發(fā)展,I/O的控制方式也在不斷地發(fā)展。一般可分為:程序I/O方式、中斷方式、DMA方式和通道方式。I/O的控制方式發(fā)展的目標是盡量減少主機對I/O控制的干預。本書設備管理涉及到2種I/O系統(tǒng),主機型I/O系統(tǒng)和微機型I/O系統(tǒng)。主機型系統(tǒng)以內存為中心,它的體系機構如圖1-1所示,由通道方式控制I/O設備與內存的數(shù)據傳送。微機型系統(tǒng)是總線結構,它的體系機構如圖1-2所示,由中斷或DMA控制I/O設備與內存的數(shù)據傳送。P3圖1-1主機I/O系統(tǒng)圖

終端打印機多路通道

存儲器CPU

選擇通道P3圖1-2微機I/O系統(tǒng)圖

CPUDMA打印機終端存儲器磁盤控制器打印機控制器終端控制器ATypicalPCBusStructureStructureofalargePentiumsystem

主機I/O系統(tǒng)圖4.2.1程序I/O方式

在早期的計算機系統(tǒng)中,由于沒有中斷機構,處理機對I/O設備直接進行控制,采取程序I/O(ProgrammedI/O)方式、(Polling輪詢)或稱為忙-等待方式。即在CPU向設備控制器發(fā)出一條I/O指令啟動I/O設備進行數(shù)據傳輸時,要同時把狀態(tài)寄存器中的忙/閑標志busy置為1,然后便不斷地循環(huán)測試busy。當busy=l時,表示該I/O設備尚未輸入完一個字(符),CPU應繼續(xù)對該標志進行測試,直至busy=0。程序I/O方式-1busy=0表示該I/O設備已將輸入數(shù)據送入到I/O控制器的數(shù)據寄存器中,于是CPU將從數(shù)據寄存器中取出數(shù)據,送入內存的指定單元,接著,再啟動去讀下一個數(shù)據,并置busy=l。在程序I/O方式中,由于CPU的速度遠遠高于I/O設備,導致CPU的絕大部分時間都處于等待I/O設備完成而循環(huán)測試之中,造成了CPU的極大浪費。但是它管理簡單,在要求不高的場合可以被采用。P158圖4-2(a)程序I/O方式的流程

向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)檢查狀態(tài)?從I/O控制器中讀入字向內存中寫入字傳送完畢?CPU→I/OI/O→CPU未就緒

出錯處理就緒I/O→CPUCPU→RAM

未完完成執(zhí)行下一條I/O指令4.2.2中斷控制方式在現(xiàn)代計算機系統(tǒng)中,對I/O設備的控制,廣泛地采用中斷驅動(Interrupt-driven)方式,即當某進程要啟動某個I/O設備時,便由CPU向相應的設備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來的任務。設備控制器便按照該命令的要求去控制I/O設備。此時,CPU與I/O設備處于并行工作狀態(tài)。例如,在輸入時,當設備控制器收到CPU發(fā)來的讀命令后,便準備接收從相應輸入設備送來的數(shù)據。一旦數(shù)據進入數(shù)據寄存器,控制器便通過控制線向CPU發(fā)送一中斷信號,由CPU檢查輸入過程中是否出錯,若無錯,便向控制器發(fā)取走數(shù)據的信號,然后便通過控制器將數(shù)據寫入指定內存單元。P158圖4-2(b)中斷驅動方式的流程

向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)檢查狀態(tài)?從I/O控制器中讀入字向內存中寫入字傳送完畢?CPU→I/OCPU做其它事中斷I/O→CPU出錯處理就緒I/O→CPUCPU→RAM未完完成執(zhí)行下一條I/O指令InterruptsRevisitedHowinterruptshappens.Connectionsbetweendevicesandinterruptcontrolleractuallyuseinterruptlinesonthebusratherthandedicatedwires中斷控制方式-1

所以,中斷驅動方式在I/O設備輸入數(shù)據的過程中,無需CPU干預,可以使CPU與I/O設備并行工作。僅當輸完一個數(shù)據時,才需CPU花費極短的時間去進行中斷處理。從而大大地提高了整個系統(tǒng)的資源利用率及吞吐量,特別是CPU的利用率。4.2.3DMA控制方式

中斷驅動I/O方式雖然大大提高了主機的利用率,但是它以字(節(jié))為單位進行數(shù)據傳送,每完成一個字(節(jié))的傳送,控制器便要向CPU請求一次中斷(做保存現(xiàn)場信息,恢復現(xiàn)場等工作),仍然占用了CPU的許多時間。這種方式對于高速的塊設備的I/O控制顯然是不適合。為了進一步減少CPU對I/O的干預,引入了直接存儲器訪問DMA(DirectMemoryAccess)控制方式。DMA控制方式-1

DMA方式是一種完全由硬件執(zhí)行I/O數(shù)據交換的工作方式,它需要使用一個專門的DMA控制器(DMAC),DMAC中有控制狀態(tài)寄存器、傳送字節(jié)計數(shù)器、內存地址寄存器和數(shù)據緩沖寄存器。在這種方式中,DMAC采用盜竊總線控制權的方法從CPU接管對總線的控制,成批的數(shù)據交換不經過CPU而直接在內存和I/O設備之間進行。寄存器DMA控制方式-2

DMA控制方式-3DMA方式下的數(shù)據傳送過程可分為三個階段:(1)預處理階段:當進程要求設備輸入數(shù)據時,CPU把準備存放輸入數(shù)據的內存起始地址以及要傳送的字節(jié)數(shù)分別送入DMAC中的內存地址寄存器和傳送字節(jié)計數(shù)器。另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動位置成1,從而啟動設備,開始進行數(shù)據輸入。

DMA控制方式-4(2)數(shù)據傳送階段:發(fā)出數(shù)據傳輸要求的進程進入等待狀態(tài),進程調度程序調度其他進程占據CPU。DMAC不斷地竊取CPU工作周期,執(zhí)行數(shù)據傳送的操作:向內存發(fā)出地址和控制信號,進行地址修改,對傳送字的個數(shù)計數(shù),直到所要求的字節(jié)全部傳送完畢。

(3)后處理階段:DMAC在傳送完所有字節(jié)時,通過中斷請求線發(fā)出中斷信號。CPU在接收到中斷信號后,轉入中斷處理程序進行后續(xù)處理。中斷處理結束后,CPU返回到被中斷的進程中,或切換到新的進程上下文環(huán)境中,繼續(xù)執(zhí)行。DMA方式較之中斷驅動方式,又是成百倍地減少了CPU對I/O控制的干預,進一步提高了CPU與I/O設備的并行操作程度。

DMA控制方式-5DMA控制方式-4OperationofaDMAtransfer4.2.4I/O通道控制方式

1.I/O通道控制方式的引入雖然DMA方式比中斷驅動方式已顯著地減少了CPU的干預,即由以字(節(jié))為單位的干預減少到以數(shù)據塊為單位的干預。但是CPU每發(fā)出一條I/O指令,也只能去讀(或寫)一個連續(xù)的數(shù)據塊。而當我們需要一次去讀多個離散的數(shù)據塊且將它們分別傳送到不同的內存區(qū)域,或者相反時,則需由CPU分別發(fā)出多條I/O指令及進行多次中斷處理,才能完成。

I/O通道控制方式的引入-1由于DMA每次只能執(zhí)行一條I/O指令,不能滿足復雜的I/O操作要求。在大、中型計算機系統(tǒng)中,普遍采用由專用的I/O處理機--通道來接受CPU的委托,獨立執(zhí)行自己的通道程序來實現(xiàn)I/O設備與內存之間的信息交換,這就是通道技術。通道技術可以進一步減少CPU的干預,即把對一個數(shù)據塊為單位的讀(或寫)的干預,減少到對一組數(shù)據塊為單位的讀(或寫)的有關的控制和管理的干預。這樣可實現(xiàn)CPU、通道和I/O設備三者之間的并行工作,從而更有效地提高了整個系統(tǒng)的資源利用率和運行速度。2.通道程序

通道是通過執(zhí)行通道程序,并與設備控制器來共同實現(xiàn)對I/O設備的控制。通道程序是由一系列的通道指令(或稱為通道命令)所構成。通道指令與一般的機器指令不同,在每條指令中包含的信息較多,有操作碼、內存地址、計數(shù)(讀或寫數(shù)據的字節(jié)數(shù))、通道程序結束位P和記錄結束標志R。通道程序-1通道命令及格式:用于I/O操作的命令主要有兩種:

I/O指令:啟動通道程序通道命令:對I/O操作進行控制。讀、反讀、寫、測試設備狀態(tài)的數(shù)據傳輸命令、用于設備控制的命令(磁帶反繞、換頁)、實現(xiàn)通道程序內部控制的轉移命令

命令格式一般包括:操作碼、數(shù)據傳輸內存地址、特征位、計數(shù)器編制一個通道程序,從磁帶機上讀入200字節(jié)的信息,送入內存(1000)16開始的單元。通道命令碼:“07”反繞“02”讀

CCW1X“07”*X“40”1;

CCW2X“02”1000X“00”200;通道程序-23.通道類型由于外圍設備的種類較多,且其傳輸速率相差很大,所以通道也具有多種類型。根據信息交換方式,可以把通道分成以下三種類型:字節(jié)多路通道(ByteMultiplexorChannel)在這種通道中,通常都含有較多個(8,16,32)非分配型子通道,每一個子通道連接一臺I/O設備。這些子通道按時間片輪轉方式共享主通道。一個子通道完成一個字節(jié)的傳送后,立即讓出字節(jié)多路通道(主通道),給另一個子通道使用。它適用于連接低速或中速設備,如打印機、終端等。字節(jié)多路通道圖通道類型-1數(shù)組選擇通道(BlockSelectorChannel)這種通道雖然可以連接多臺I/O設備,但是它只有一個分配型子通道,在一段時間內只能執(zhí)行一道通道程序、控制一臺設備進行數(shù)據傳送,其數(shù)據傳送是按數(shù)組方式進行。即當某臺設備一旦占用了該通道,就被它獨占,直至該設備傳送完畢釋放該通道為止??梢姡m于連接高速設備(如磁盤機、磁帶機),但是這種通道的利用率較低。通道類型-2數(shù)組多路通道(BlockMultiplexorChannel)數(shù)組選擇通道雖然有很高的傳輸速率,但它每次只允許一個設備傳輸數(shù)據。數(shù)組多路通道是將數(shù)組選擇通道的傳輸速率高和字節(jié)多路通道的分時并行操作的優(yōu)點結合起來,形成的一種新的通道。它含有多個非分配型子通道,可以連接多臺高、中速的外圍設備,其數(shù)據傳送卻是按數(shù)組方式進行。所以這種通道既具有很高的數(shù)據傳輸速率,又能獲得令人滿意的通道利用率。

單通道聯(lián)系圖返回多通道聯(lián)系圖返回

通道運算控制部件:通道地址字CAW:記錄通道程序在內存中的地址通道命令字CCW:保存正在執(zhí)行的通道指令通道狀態(tài)字CSW:存放通道執(zhí)行后的返回結果通道數(shù)據字CDW:存放傳輸數(shù)據4.通道工作原理CPU在執(zhí)行用戶程序時遇到I/O請求,操作系統(tǒng)根據該請求生成通道程序放入內存,并將該通道程序的首地址放入通道地址字CAW中。之后執(zhí)行“啟動I/O”指令,啟動通道工作。通道接收到“啟動I/O”指令后,從CAW中取出通道程序的首地址,并根據首地址取出第一條指令放入通道命令字CCW中,同時向CPU發(fā)回答信號,使CPU可繼續(xù)執(zhí)行其他程序,而通道則開始執(zhí)行通道程序,與CPU并行完成I/O設備數(shù)據傳輸工作。通道工作原理-1

通道程序完成實際I/O,啟動I/O設備,執(zhí)行完畢后,如果還有下一條指令,則繼續(xù)執(zhí)行。當通道傳輸完成最后一條指令時停止工作,向CPU發(fā)I/O中斷。CPU接收中斷信號,執(zhí)行中斷子程序,從通道狀態(tài)字CSW中取得有關通道狀態(tài)信息,決定下一步做什么。

通道工作原理-2

4.3緩沖(Buffering

)技術

目前為了解決CPU與I/O設備間速度不匹配的矛盾,提高的I/O速度和設備利用率,在所有的I/O設備與處理機(內存)之間,都使用了緩沖區(qū)來交換數(shù)據。所以OS必須組織和管理好這些緩沖區(qū)。4.3.1緩沖的引入

在操作系統(tǒng)中,引入緩沖的主要原因:1。改善CPU與I/O設備間速度不匹配的矛盾例如一個程序,它時而進行長時間的計算而沒有輸出,時而又陣發(fā)性把輸出送到打印機。由于打印機的速度跟不上CPU,而使得CPU長時間的等待。如果設置了緩沖區(qū),程序輸出的數(shù)據先送到緩沖區(qū)暫存,然后由打印機慢慢地輸出。這時,CPU不必等待,可以繼續(xù)執(zhí)行程序。實現(xiàn)了CPU與I/O設備之間的并行工作。事實上,凡在數(shù)據的到達速率與其離去速率不同的地方,都可設置緩沖,以緩和它們之間速度不匹配的矛盾。眾所周知,通常的程序都是時而計算,時而輸出的。緩沖的引入-12。可以減少對CPU的中斷頻率,放寬對中斷響應時間的限制

如果I/O操作每傳送一個字節(jié)就要產生一次中斷,那么設置了n個字節(jié)的緩沖區(qū)后,則可以等到緩沖區(qū)滿才產生中斷,這樣中斷次數(shù)就減少到1/n,而且中斷響應的時間也可以相應的放寬。3.提高CPU和I/O設備之間的并行性緩沖的引入可顯著提高CPU和設備的并行操作程度,提高系統(tǒng)的吞吐量和設備的利用率。4.3.2緩沖的類型

緩沖有硬件緩沖和軟件緩沖之分。硬件緩沖是指以專用的寄存器作為緩沖器。軟件緩沖是指在操作系統(tǒng)的管理下,在內存中劃出若干個單元作為緩沖區(qū)。軟件緩沖的好處是易于改變緩沖區(qū)的大小和數(shù)量,但占用了一部分內存空間。根據緩沖區(qū)設置個數(shù)的多少,可分為單緩沖、雙緩沖和多緩沖。根據緩沖區(qū)的從屬關系,可以分為專用緩沖區(qū)和緩沖池。

1.單緩沖(SingleBuffer

)為了提高CPU和設備的并行操作程度,每當一個用戶進程發(fā)出一個I/O請求時,操作系統(tǒng)便在主存的系統(tǒng)區(qū)中為之分配一個緩沖區(qū)(如圖4-3所示)。例如,CPU從磁盤上讀一塊數(shù)據進行計算要分三步:先從磁盤把一塊數(shù)據讀入到緩沖區(qū)中,然后由操作系統(tǒng)將緩沖區(qū)的數(shù)據傳送到用戶區(qū),最后由CPU對這一塊數(shù)據進行計算,這樣處理一個數(shù)據時間為(T+M+C)

。單緩沖-1當連續(xù)讀入一組數(shù)據時,讀入某數(shù)據的第一步(輸入)和讀入它前一個數(shù)據的最后一步(計算)是可以并行執(zhí)行的,這樣就提高了CPU和外設的利用率。由于對緩沖區(qū)中數(shù)據的輸入和提取是串行工作的。連續(xù)處理一個數(shù)據時間=max(C,T)+M。為使兩者能并行工作,必須引入雙緩沖。單緩沖-2T4T1M1C1T2M2C2T3M3C3t緩沖區(qū)用戶區(qū)用戶進程C操作系統(tǒng)傳送M輸入TI/O設備2.雙緩沖(DoubleBuffer

)雙緩沖工作方式(也稱為緩沖對換方式)基本方法是在設備輸入時,先將數(shù)據輸入到緩沖區(qū)A,裝滿后便轉向緩沖區(qū)B。此時操作系統(tǒng)可以從緩沖區(qū)A中提取數(shù)據傳送到用戶區(qū),最后由CPU對數(shù)據進行計算(如圖4-4所示)。這樣可以實現(xiàn)對緩沖區(qū)中讀入某數(shù)據的第一步(輸入)和讀入它前一個數(shù)據的后二步(傳送和計算)二者的并行工作,連續(xù)處理一個數(shù)據時間=max(T,(M+C)),特別是緩沖區(qū)中數(shù)據的輸入和傳送的速度基本相匹配時,可獲得較好的效果。所以雙緩沖進一步加快了I/O的速度,提高了設備的利用率。

雙緩沖-1T2(緩沖B)M2C2T3(緩沖A)M3C3T1(緩沖A)M1C1T4(緩沖B)M4C4緩沖區(qū)A用戶區(qū)緩沖區(qū)B用戶進程C操作系統(tǒng)傳送M輸入TI/O設備3。循環(huán)緩沖(CircularBuffer

)由于數(shù)據I/O多數(shù)是間斷的,可增加緩沖區(qū)的個數(shù)來改善CPU與I/O設備間速度不匹配的矛盾。我們可以將多個緩沖區(qū)組織成循環(huán)隊列的形式,其中一些隊列專門用于輸入,另一些隊列專門用于輸出。如圖4-5顯示供給輸入進程和計算進程使用的輸入緩沖區(qū)循環(huán)隊列,輸入進程先不斷向隊列中空緩沖區(qū)R輸入數(shù)據,計算進程再從隊列中裝滿數(shù)據的緩沖區(qū)G中提取數(shù)據用于計算。

循環(huán)緩沖圖RRGGGG用戶區(qū)用戶進程操作系統(tǒng)I/O設備輸入傳送計算4.緩沖池

當系統(tǒng)配置較多的設備時,使用專用緩沖區(qū)就要消耗大量的內存空間,且其利用率不高。為了提高緩沖區(qū)的利用率,目前廣泛使用公用緩沖池,池中的緩沖區(qū)可供多個進程共享。對于同時用于輸入/輸出的公用緩沖池,至少含有三種類型的緩沖區(qū):空緩沖區(qū)、裝滿輸入數(shù)據的緩沖區(qū)和裝滿輸出數(shù)據的緩沖區(qū)。為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個隊列,于是就形成三個隊列:空緩沖區(qū)隊列emq、輸入緩沖區(qū)隊列inq和輸出緩沖區(qū)隊列outq。緩沖池-1另外還應具有四種工作緩沖區(qū):⑴用于收容輸入數(shù)據的工作緩沖區(qū)(hin);⑵用于提取輸入數(shù)據的工作緩沖區(qū)(sin);⑶用于收容輸出數(shù)據的工作緩沖區(qū)(hout);⑷用于提取輸出數(shù)據的工作緩沖區(qū)(sout)。緩沖池有收容輸入、提取輸入、收容輸出和提取輸出四種工作方式(如下圖所示)。緩沖池-2輸入過程包括收容輸入和提取輸入,收容輸入完成從輸入設備輸入數(shù)據到緩沖區(qū)并排入輸入緩沖區(qū)隊列,提取輸入完成從輸入緩沖區(qū)隊列的緩沖區(qū)中取出輸入數(shù)據到進程用戶區(qū)。收容輸入工作方式分三步:第一步從空緩沖區(qū)隊列隊首申請一個空緩沖區(qū)作為用于收容輸入數(shù)據的工作緩沖區(qū)(hin),第二步從輸入設備輸入數(shù)據到工作緩沖區(qū)(hin),第三步將裝滿輸入數(shù)據的緩沖區(qū)插入到輸入緩沖區(qū)隊列隊尾,如下圖中1、2、3帶箭頭的線。提取輸入的三步如下圖中4、5、6帶箭頭的線。P163圖4-6緩沖池工作原理123hin

3L(out)151372F(out)sout5輸入設備輸出設備L(em)121063F(em)sin

4hout1

序。。O84F(in)L(in)4564.3.3UNIX系統(tǒng)的緩沖技術

UNIX系統(tǒng)采用緩沖池技術,來平滑和加快文件信息從內存到磁盤的傳輸,并充分利用以前從磁盤讀入已傳入用戶區(qū)、但仍在緩沖區(qū)的數(shù)據。當從磁盤上讀數(shù)據時,如果數(shù)據已經在緩沖區(qū)中,則核心就直接從緩沖區(qū)中讀出,而不必從盤上讀;當數(shù)據不在緩沖區(qū)時,核心先把數(shù)據從磁盤傳送到緩沖區(qū),再由緩沖區(qū)讀出。目的在于盡可能減少磁盤I/O的次數(shù),提高系統(tǒng)運行的速度。1。緩沖控制塊

UNIXSystemⅤ有一個由200個緩沖區(qū)組成的緩沖池。每個緩沖區(qū)的長度可以是512字節(jié)或1024字節(jié)。每個緩沖區(qū)由兩部分組成:存放數(shù)據的區(qū)域被稱為緩沖數(shù)據區(qū)。用于控制的區(qū)域被稱為緩沖控制塊或緩沖首部。緩沖區(qū)和緩沖控制塊一一對應。系統(tǒng)通過緩沖控制塊來實現(xiàn)對緩沖區(qū)的管理,保證一個盤塊一次只能映射一個緩沖區(qū)。緩沖控制塊的數(shù)據結構如圖4-7所示。其中,邏輯設備號和盤塊號分別標志出文件系統(tǒng)和數(shù)據所在的盤塊號,它們是緩沖區(qū)的唯一標志。狀態(tài)項指明了該緩沖區(qū)當前的狀態(tài):忙∕閑、上鎖∕開鎖、是否延遲寫、數(shù)據有效性等。還有兩組指針(av和b)用于對緩沖池的分配管理。

緩沖控制塊-1

2.緩沖池結構

緩沖池利用緩沖控制塊的兩組指針組成多個緩沖區(qū)隊列:空閑緩沖區(qū)隊列(空閑av隊列)、設備緩沖區(qū)隊列(設備b鏈、散列隊列)和設備I/O請求隊列(塊設備av鏈)等??臻eav隊列是系統(tǒng)所擁有的所有空閑緩沖區(qū)資源,系統(tǒng)只有一條,隊列頭部為bfreelist。在系統(tǒng)初始化時,所有的緩沖區(qū)按序號高低掛在空閑av隊列上。當文件系統(tǒng)申請一個緩沖區(qū)時,從空閑av隊列隊首取下一個緩沖區(qū),而一個緩沖區(qū)被釋放時則掛入空閑av隊列隊尾。緩沖池結構-1

設備b鏈鏈接所有分配給各類設備使用的緩沖區(qū),每類設備都有自己的設備b鏈,每類設備的設備b鏈按散列算法組成64個散列隊列,每個隊列頭部都有自己的頭標。當系統(tǒng)為一個設備b_dev中的邏輯塊號b分配一個緩沖區(qū)之后,該緩沖區(qū)排入散列隊列頭標為:i=(b_dev+b)mod64。圖4-8顯示了緩沖池的鏈接結構,其中,實線表示空閑av隊列鏈,由一個空閑av隊列頭指示。多條虛線各表示不同的散列隊列,同一行是具有同一散列值的隊列,由散列隊列頭標指示。每個物理塊設備都有一個I/O請求隊列,設備I/O請求隊列是由正在請求該塊設備進行讀寫操作的緩沖區(qū)所組成的隊列,用av單向鏈,隊列頭部為設備控制表(DCT)。其中的緩沖區(qū)使用與前面所述的緩沖控制塊不完全相同的I/O緩沖控制塊,以指示物理設備是否正在使用以及有關寄存器的地址等。

P164圖4-8緩沖池的鏈接結構塊號mod64=0塊號mod64=1塊號mod64=2塊號mod64=3………12819264165130661292313167空閑av隊列頭散列隊列頭標緩沖池結構-2a.空閑鏈表(空閑緩沖隊列、空閑av鏈)

:buf用av雙向鏈,且只有一條,隊列頭部為bfreelist

。b.散列隊列(設備緩沖隊列、設備b鏈):鏈接所有分配給各類設備使用的緩沖區(qū)。buf用b雙向鏈,可以有64個隊列,每個隊列頭部有頭標。設備為b_dev上的邏輯塊b在散列隊列的頭標為:i=(b_dev+b)mod64c.設備IO請求隊列:buf用av單向鏈,d.空設備隊列:buf用b雙向鏈,隊列頭部為bfreelist緩沖池結構-3每個buf同時在av鏈和b鏈:a.開始:在空閑av鏈和空設備隊列。b.開始IO請求:在設備IO請求隊列和散列隊列。c.IO完成:在空閑av鏈和散列隊列。d.以后IO請求:在設備IO請求隊列和散列隊列,在散列隊列改變隊列。緩沖池的鏈接結構圖例圖中,紅實線表示空閑av隊列鏈,由一個空閑av隊列頭指示。多條虛線各表示不同的散列隊列,同一行是具有同一散列值的隊列,由散列隊列頭標指示。每個物理塊設備都有一個I/O請求隊列,設備I/O請求隊列是由正在請求該塊設備進行讀寫操作的緩沖區(qū)所組成的隊列,用av單向鏈,隊列頭部為設備控制表(DCT)。其中的緩沖區(qū)使用與前面所述的緩沖控制塊不完全相同的I/O緩沖控制塊,以指示物理設備是否正在使用以及有關寄存器的地址等。

塊號mod4=0塊號mod4=1塊號mod4=2塊號mod4=3284641759850971033599自由鏈鏈頭4.緩沖區(qū)的分配和釋放當進程想從指定的盤塊讀取數(shù)據時(把數(shù)據寫到指定的盤塊類同),核心根據盤塊號從散列隊列中查找,如找到緩沖區(qū),則將該緩沖區(qū)狀態(tài)標記為“忙”,并從空閑av隊列中取下,接著完成從緩沖區(qū)到內存用戶區(qū)的數(shù)據傳送。如在散列隊列中未找到時,則從空閑av隊列隊首摘取一個緩沖區(qū),插入設備I/O請求隊列。并從原散列隊列中取下,插入由讀入信息盤塊號確定的新的散列隊列中。當數(shù)據從磁盤塊讀入到緩沖區(qū)后,緩沖區(qū)從設備I/O請求隊列取下。當核心完成從緩沖區(qū)到內存用戶區(qū)的數(shù)據傳送后,要把緩沖區(qū)釋放,鏈入空閑av隊列隊尾。緩沖區(qū)的分配和釋放-1當數(shù)據從磁盤塊讀入到緩沖區(qū),并傳送到內存用戶區(qū)后,該緩沖區(qū)一直保留在原散列隊列中,即它的數(shù)據一直有效。如它又要被使用,則又要從空閑av隊列鏈中取下,使用完后插入到空閑av隊列隊尾。如它一直未使用,則該緩沖區(qū)從空閑av隊列隊尾慢慢升到隊首,最后被重新分配,舊的盤塊數(shù)據才被置換。由此可知,核心對緩沖區(qū)的分配是采用接近LRU算法。

4.4I/O系統(tǒng)軟件4.4.1I/O系統(tǒng)的目標---設備獨立性為了提高操作系統(tǒng)的可適應性和可擴展性,目前幾乎所有的操作系統(tǒng)都實現(xiàn)了設備的獨立性(DeviceIndependence)(也稱為設備無關性)。

用戶程序的設備獨立性是:用戶程序不直接使用物理設備名(或設備的物理地址),而只能使用邏輯設備名;而系統(tǒng)在實際執(zhí)行時,將邏輯設備名轉換為某個具體的物理設備名,實施I/O操作。設備獨立性-1

I/O軟件的設備獨立性是:除了直接與設備打交道的低層軟件之外,其他部分的軟件并不依賴于硬件。I/O軟件獨立于設備,就可以提高設備管理軟件的設計效率。邏輯設備是實際物理設備屬性的抽象,它并不限于某個具體設備。例如在MS-DOS中,最基本的輸入、輸出設備(鍵盤和顯示器)用一個公共的邏輯設備名CON(控制臺),并由同一個設備驅動程序來驅動和控制;并行打印機的邏輯設備名為PRN或LPTi等等。使用邏輯設備名是操作系統(tǒng)對用戶程序的設備獨立性的具體支持。在系統(tǒng)實現(xiàn)了設備獨立性的功能后,可以帶來以下兩方面的好處:設備獨立性-2(1)設備分配時的靈活性當進程以邏輯設備名請求某類設備時,如果一臺設備已經分配給其它進程或正在檢修,此時系統(tǒng)可以將其它幾臺相同的空閑設備中的任一臺分配給該進程,只有當此類設備全部被分配完時,進程才會被阻塞。

(2)易于實現(xiàn)I/O重定向所謂I/O重定向,指用于I/O操作的設備是可以更換,應用程序的輸入、輸出是可以重定向,而不必修改應用程序。在Windows中,默認標準的輸入設備是鍵盤,輸出設備是顯示器,如果想改變標準的輸入、輸出設備,可以用轉向符。設備獨立性-3例如:C:\>DIR>DIR.LST將DIR命令的輸出結果送文件DIR.LST。C:\>DIR>PRN將DIR命令的輸出結果送打印機。為了實現(xiàn)設備的獨立性,必須在驅動程序之上設置一層軟件,稱為設備獨立性軟件,其主要功能有以下兩個方面:⑴執(zhí)行所有設備的公有操作;⑵向用戶層(或文件層)軟件提供統(tǒng)一的接口。設備獨立性-3為了實現(xiàn)邏輯設備名到物理設備名的映射,系統(tǒng)必須設置一張邏輯設備表LUT(LogicalUnitTable),能夠將應用程序中所使用的邏輯設備名映射為物理設備名,并提供該設備驅動程序的人口地址。邏輯設備表LUT如下所示:邏輯設備名物理設備名驅動程序的人口地址

/dev/tty31024/dev/printer520464.4.2I/O軟件分層結構

I/O軟件采用分層結構,它把軟件組織成為一系列的層,低層參與隔離硬件特征,使其它部分軟件不依賴硬件;而高層則參與向用戶提供一個友好的、清晰而統(tǒng)一的接口。I/O軟件一般共分四層:中斷處理程序,設備驅動程序,與設備無關的操作系統(tǒng)軟件,以及用戶級軟件(指用戶空間的I/O軟件),如圖4-9所示。從功能上看,設備無關層是I/O管理的主要部分;從代碼量上看,驅動層是I/0管理的主要部分。分層是相對靈活的,一些具體分層時細節(jié)上的處理是依賴于系統(tǒng)的。I/O軟件分層結構圖I/O軟件分層結構

-1現(xiàn)代操作系統(tǒng)通過使用重構設備驅動程序技術,簡化了驅動程序的安裝。這種系統(tǒng)允許安裝好新的輸入輸出設備后,只要增加相應的設備驅動程序到操作系統(tǒng),而無需編譯操作系統(tǒng),只要通過一些操作來重新配置系統(tǒng)。這種可重構性,是通過允許在操作系統(tǒng)設計中,動態(tài)地將操作系統(tǒng)代碼與驅動程序結合起來而實現(xiàn)的。LayersoftheI/OSoftwareSystemI/O軟件分層結構-2大部分I/0軟件都包含在操作系統(tǒng)中,用戶程序的I/0軟件是有關實現(xiàn)I/O系統(tǒng)調用的庫函數(shù)和SPOOLing系統(tǒng)等。所有設備所需要的I/O功能在與設備獨立的軟件中實現(xiàn),這類軟件面向應用層并提供一個統(tǒng)一的應用編程接口(API),它提供了一組功能函數(shù),應用程序員能夠通過調用它們管理設備。這個接口是設備硬件的一個大大簡化了的簡單抽象的接口,提供的是對具有邏輯性質的邏輯設備上的邏輯操作。由文件系統(tǒng)和設備管理功能接受、翻譯、轉換為相應的物理設備、物理性質、物理操作。與設備無關的系統(tǒng)軟件實現(xiàn)的功能有:設備驅動程序的統(tǒng)一接口,設備命名,設備保護,提供一個與設備無關的邏輯塊,緩沖,存儲設備的塊分配,獨占設備的分配和釋放,錯誤處理等。I/O軟件分層結構-3設備驅動程序的主要功能將來自上層軟件的與設備無關的的抽象請求轉為具體請求,向有關的輸入輸出設備的各種控制器的寄存器發(fā)出控制命令,并監(jiān)督它們的正確執(zhí)行,進行必要的錯誤處理。還要對各種可能的有關設備排隊、掛起、喚醒等操作進行處理,執(zhí)行確定的緩沖區(qū)策略等。一旦CPU響應中斷,轉人中斷處理程序。中斷處理程序首先檢查響應中斷的條件是否滿足,如果響應中斷,則關中斷,保存被中斷進程現(xiàn)場,分析中斷原因,調用并執(zhí)行中斷處理子程序,最后退出中斷,恢復現(xiàn)場,開中斷。

4.4.3UNIX設備驅動程序結構

設備驅動程序的結構同輸入輸出設備的硬件特性有關,不同的操作系統(tǒng)中,對設備驅動程序的結構的要求是不同的。UNIX把設備分為塊設備或字符設備二類,并規(guī)定了兩個標準化的接口(設備驅動API):塊設備接口或字符設備接口,兩個接口都定義了一組固定的函數(shù)(close、ioctl、open、read、select、strategy、stop、write),它以統(tǒng)一的文件方式處理物理設備,以此來簡化設備的應用編程模型。UNIX設備驅動程序結構

-1在UNIX系統(tǒng)中,每類設備都有一個驅動程序,用它來控制該類設備。任何一個驅動程序通常都包含了滿足標準化的接口要求的用于執(zhí)行不同操作的多個函數(shù),如打開、關閉、啟動設備、讀和寫等函數(shù),它是標準化的接口函數(shù)的一個子集,從而可以對特殊設備進行操作。塊設備沒有read/write的入口點,而用strategy入口點定義了讀寫操作入口點。UNIX設備驅動程序結構-2這種方法允許調用內核的緩沖例程,系統(tǒng)為塊設備的I/O數(shù)據在內存設立了緩沖。為使核心能方便地轉向各函數(shù),系統(tǒng)為每類塊設備提供了一個塊設備開關bdevsw,其中有該類設備的各函數(shù)的入口地址,它是核心與驅動程序的接口。如系統(tǒng)含有通用磁盤,通用磁帶和控制臺磁帶時bdevsw的預置情況如下:

structbdevswbdevsw[]={

/*0*/gdopen,gdclose,gdstrategy,/*1*/gtopen,gtclose,gtstrategy,/*2*/cdtopen,cdtclose,cdtstrategy,};設備開關表及系統(tǒng)調用和驅動程序間的接口關系如圖4-10所示。圖4-10設備開關表、系統(tǒng)調用和驅動程序間的接口

opencloseopenclosereadwriteioctlmountumountreadwrite

字符設備開關表高速緩沖調用

塊設備開關表openclosereadwriteioctl字符設備驅動程序字符設備中斷處理程序openclosestrategy塊設備驅動程序塊設備中斷處理程序

中斷向量

中斷向量返74.4.4中斷方式I/O處理

在使用中斷的微機系統(tǒng)中,執(zhí)行輸入請求的處理步驟如圖4-11所示。(1)應用進程請求讀操作。(2)設備啟動程序(設備驅動程序的上半部分)查詢設備控制器的狀態(tài)寄存器,確定設備是否空閑;如果設備忙,則設備啟動程序等待,直到它變?yōu)榭臻e為止。(3)設備啟動程序把輸入命令存人設備控制器的命令寄存器中,從而啟動設備。中斷方式I/O處理-1

(4)設備啟動程序將相應信息寫入到設備狀態(tài)表的設備對應表項中,如最初調用的返回地址,以及I/O操作的一些特定參數(shù)等。然后CPU就可以分配給其他進程使用了,因此設備管理器調用進程管理器的調度程序執(zhí)行,原進程的執(zhí)行就被暫停了。(5)經過一段時間設備完成了I/O操作后,設備控制器發(fā)出中斷請求,中斷CPU上運行的進程,從而引起CPU運行中斷處理程序。

中斷方式處理I/O操作-2(6)中斷處理程序確定是哪個設備引起的中斷,然后轉移到該設備對應的設備處理程序(設備驅動程序的下半部分)執(zhí)行。(7)設備處理程序重新從設備狀態(tài)表中,找到等待I/O操作的狀態(tài)信息。(8)設備處理程序拷貝設備控制器的數(shù)據寄存器的內容到用戶進程的內存區(qū)。(9)設備處理程序返回給應用進程控制權,從而繼續(xù)運行。P168圖4-11中斷方式處理I/O操作步驟

中斷方式處理I/O操作-2在以上處理I/O操作過程中,中斷處理程序和設備處理程序二程序一起完成對中斷請求的處理,但二者工作方式不同,前者必須關中斷運行,或是以高優(yōu)先權方式運行;而后者可以開中斷運行,或以低優(yōu)先權方式運行。這種把“長”中斷服務程序分成二個程序的方法是為了減少系統(tǒng)對I/O處理的響應時間。要保證隨時可能發(fā)生的中斷信號不被丟失,要及時做一些信號的保存,讀取甚至傳遞工作,這一階段的工作要求快速處理,采用關中斷方式運行,將其稱為中斷處理的低級階段。中斷方式處理I/O操作-3而那些與設備有關的數(shù)據結構的處理,它要花費中斷處理的大部分時間,采用開中斷運行,將其稱為中斷處理的高級階段。對應在Linux中,把一次中斷處理分割為兩部分:快速的tophalf中斷處理和慢速的bottomhalf中斷處理。在Windows2000慢速的中斷處理用延遲過程調用DPC。

4.4.5用戶空間的軟件I/O――

SPOOLing系統(tǒng)

早期批處理系統(tǒng)中使用的虛擬技術是以脫機方式工作的。為了緩和CPU和I/O設備之間的速度不比配的問題。利用專門的外圍控制機將低速I/O設備上的數(shù)據傳送到高速磁盤上,或者相反。當多道程序設計的分時系統(tǒng)出現(xiàn)后,SPOOLing技術就孕育而生,它將一臺獨占設備改造成可以共享的虛擬設備。1.什么是SPOOLing技術

當多道程序程序技術出現(xiàn)后,就可以利用一道程序,來模擬脫機輸入時的外圍控制機的功能,即把低速I/O設備上的數(shù)據傳送到高速的磁盤上;再用另一道程序來模擬脫機輸出時外圍控制機的功能,即把數(shù)據從磁盤傳送到低速I/O設備上。這樣,便在主機的直接控制下,實現(xiàn)脫機輸入、輸出功能。所以,我們把這種在聯(lián)機情況下實現(xiàn)的同時與外圍設備聯(lián)機操作的技術稱為SPOOLing(SimultaneousPeripheralOperationOnLine),或稱為假脫機技術。2.SPOOLing系統(tǒng)的組成

SPOOLing系統(tǒng)是對脫機輸入、輸出工作的模擬,它必須有高速隨機外存(硬盤)的支持。SPOOLing系統(tǒng)主要有以下三部分(如下圖所示):輸入井和輸出井:在磁盤上開辟的兩個大的存儲空間。輸入井模擬脫機輸入時的磁盤,用于收容I/O設備輸入的數(shù)據。輸出井模擬脫機輸出時的磁盤,用于收容用戶程序的輸出數(shù)據。輸入緩沖區(qū)和輸出緩沖區(qū):在內存中開辟兩個緩沖區(qū):輸入緩沖區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設備送來的數(shù)據,再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據,再傳送給輸出設備。SPOOLing系統(tǒng)的組成-1

輸入進程SPi和輸出進程SPo

進程SPi

模擬脫機輸入時的外圍控制機,將用戶要求的數(shù)據從輸入機通過輸入緩沖區(qū)再送到輸入井。當CPU需要輸入數(shù)據時,直接從輸入井讀入內存。SPo

進程模擬脫機輸出時的外圍控制機,把用戶要求輸出的數(shù)據,先從內存送到輸出井,待輸出設備空閑時,再將輸出井中的數(shù)據,經過輸出緩沖區(qū)送到輸出設備上。

輸入進程SPi輸出進程SPo輸入緩沖區(qū)

輸出緩沖區(qū)

輸入井

輸出井輸入設備輸出設備磁盤內存SPOOLing系統(tǒng)磁盤通道主機通道卡片機通道打印

機spooling系統(tǒng)作業(yè)#3.共享打印機打印機雖然是獨享設備。但是通過SPOOLing技術,可以將它改造為一臺可供多個用戶共享的設備,共享打印機技術已被廣泛地用于多用戶系統(tǒng)和局域網絡。為此,SPOOLing系統(tǒng)創(chuàng)建一個特殊進程,稱為守護(daemon)進程,以及一個特殊目錄,稱為SPOOLing目錄。當用戶進程請求打印輸出時,SPOOLing系統(tǒng)并不是真正把打印機分配給該用戶進程,而由守護進程為它在磁盤中申請一個存儲空間,并將要打印的數(shù)據以文件的形式存放于SPOOLing目錄下。然后由守護進程依次完成該目錄下文件的打印工作,該進程是唯一一個擁有使用打印機特殊文件權限的進程??傊?,利用SPOOLing技術可以提高I/O的速度,將獨占設備改造為共享設備,實現(xiàn)虛擬設備的功能。4.5設備的分配

在多道程序環(huán)境下,設備必須由系統(tǒng)分配。每當進程向系統(tǒng)提出I/O請求時,設備分配程序按照一定的策略,把其所需的設備及其有關資源(如緩沖區(qū)、控制器和通道)分配給該進程。在分配設備時還必須考慮系統(tǒng)的安全性,避免發(fā)生死鎖現(xiàn)象。4.5.1設備分配的策略1.根據設備的固有屬性而采取的策略獨享方式:

獨享方式是指將一個設備分配給某進程后,便一直由它獨占,直至該進程完成或釋放該設備為止,系統(tǒng)才能將該設備分配給其它進程使用。這種分配方式是對獨占設備采用的分配策略。它不僅往往造成設備利用率低,而且還會引起系統(tǒng)死鎖。共享方式:

共享方式是指將共享設備(磁盤)同時分配給多個進程使用。但是這些進程對設備的訪問需進行合理的調度。虛擬方式:

虛擬方式是指通過高速的共享設備,把一臺慢速的以獨占方式工作的物理設備改造成若干臺虛擬的同類邏輯設備,這就需要引入SPOOLing技術。虛擬設備屬于邏輯設備。2.設備分配算法(與進程的調度算法相似)先來先服務:當多個進程同時向某一設備提出I/O請求時,該算法就根據對該設備提出請求的先后次序將這些進程排列成一個設備請求隊列,設備分配程序把設備首先分配給隊首進程。優(yōu)先級高者優(yōu)先:對優(yōu)先權高的進程所提出的I/O請求賦予高優(yōu)先權,在形成設備隊列時,將優(yōu)先級高的進程排在設備隊列前面,先得到分配。而對于優(yōu)先權相同的I/O請求,則按先來先服務原則排隊分配。3.設備分配中的安全性安全分配方式

每當進程發(fā)出一個I/O請求后,便進入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。當它運行時不保持任何設備資源,打破了產生死鎖一個必要條件—“請求和保持”,所以這種分配方式是安全的。但是這種分配算法使得CPU與I/O設備串行工作,設備的利用率比較低。設備分配中的安全性-1不安全分配方式進程發(fā)出一個I/O請求后仍可以繼續(xù)運行,需要時還可以發(fā)第二個I/O請求、第三個I/O請求。只有當進程所請求的設備已被另一個進程占用時,進程才進入阻塞狀態(tài)。這種分配方式是不安全,因為它可能具備“請求和保持”條件,從而可能造成系統(tǒng)死鎖。如第二章圖所示進程P1發(fā)出第一個I/O請求,占有了資源1后,在繼續(xù)向前推進時,又要申請資源2;此時,進程P2卻占有了資源2,在繼續(xù)向前推進時,又要申請資源1,從而造成系統(tǒng)死鎖。所以,在設備分配程序中應該增加安全性檢查的功能。4.5.2獨享設備的分配程序

主機系統(tǒng)的獨享設備分配程序是負責向對系統(tǒng)提出I/O請求的進程分配設備,及其相應的控制器和通道。

(見圖)1.設備分配中數(shù)據結構數(shù)據結構有:系統(tǒng)設備表(SDT)、設備控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)。每個表的具體內容如下圖所示。在整個系統(tǒng)中,有一張系統(tǒng)設備表(SDT),用于記錄系統(tǒng)中全部設備的信息。每個設備占一個表目,其中包括設備類型、設備標識符、設備控制表指針及設備驅動程序的入口地址等表項。獨享設備分配程序-1系統(tǒng)為每一個設備都配置了一張設備控制表(DCT),用于記錄該設備的情況。表中除了有用于指示設備類型的字段和設備標識符字段外,還應有下列字段:設備隊列的隊首指針:凡因請求本設備而未得到滿足的進程,其PCB都應按照一定的策略排成一個隊列,稱為設備請求隊列或簡稱為設備隊列。其隊首指針指向隊首PCB,在有的系統(tǒng)中還設置了隊尾指針。設備狀態(tài):當設備自身處于“忙”狀態(tài)時,將設備的忙標志置“l(fā)”。若與該設備相連接的控制器或通道處于“忙”狀態(tài),而不能啟動該設備,則將設備的等待標志置“l(fā)”。獨享設備分配程序-2COCT表指針:該指針指向與該設備相連接的控制器的控制表。在具有多條通路的情況下,一個設備可與多個控制器相連接。此時,在DCT中應設置多個控制器表指針。重復執(zhí)行次數(shù):外部設備在傳送數(shù)據時,若發(fā)生信息傳送錯誤,系統(tǒng)并不立即認為傳送失敗,而是允許它重新傳送。只要在規(guī)定的重復次數(shù)或時間內恢復正常傳送,則仍認為傳送成功,否則才認為傳送失敗。P172圖4-13設備分配的數(shù)據結構

表目1……表目i……設備類型設備標識符進程標識符DCT表指針驅動程序入口地址表目1……表目i……設備類型設備標識符設備狀態(tài)(等待/不等待,忙/閑)COCT表指針重復執(zhí)行的次數(shù)或時間設備隊列的隊首指針設備隊列的隊尾指針表目1……表目i……控制器標識符控制器狀態(tài)(忙/閑)CHCT表指針控制器隊列的隊首指針控制器隊列的隊尾指針表目1……表目i……通道標識符通道狀態(tài)(忙/閑)COCT表指針通道隊列的隊首指針通道隊列的隊尾指針SDT集合SDTDCT集合DCTCOCT集合COCTCHCT集合CHCT設備分配程序-2

2.單通道的系統(tǒng)設備分配程序

對于具有單通道的系統(tǒng),則當進程提出I/O請求后,系統(tǒng)依次查找圖4-13的SDT和DCT、COCT、CHCT四個表,分別從中找出設備、相連的控制器、通道,根據相應表目狀態(tài)字可知它是否正忙(DCT表目還要看狀態(tài)字是否等待)。若忙,便將請求I/O進程的PCB掛在它的等待隊列上;否則,便將它分配給進程。只有在設備、控制器和通道三者都分配成功時,這次的設備分配才算成功。然后,便可啟動該I/O設備進行數(shù)據傳送。

單通道系統(tǒng)的設備分配流程

進程P提出所需的I/O設備根據物理設備名,從SDT中找出該設備的DCT由DCT的設備狀態(tài)字段,檢查該設備是否忙?將該進程的PCB插入到該設備的等待隊列中檢查本次設備分配是否安全性?將此設備分配給該進程從其DCT中找出與該設備連接的控制器的COCT,檢查該控制器是否忙?將該進程的PCB插入到該控制器的的等待隊列中將該控制器分配給進程從COCT中找到與該控制器連接的通道的CHCT,檢查該通道是否忙?將該進程的PCB插入到該通道的的等待隊列中將該通道分配給進程至此,設備、控制器和通道三者都已分配成功啟動I/O設備,進行具體的I/O操作不忙若忙不安全不忙忙

忙不忙設備分配程序-3

3。設備分配程序的改進為了獲得設備的獨立性,進程應用邏輯設備名請求I/O。這樣,系統(tǒng)首先從SDT中找出第一個該類設備的DCT。如忙,則查找第二個該類設備的DCT,當所有該類設備都忙時,才把進程掛在該類設備的等待隊列中。實際上,系統(tǒng)為了提高可靠性和靈活性,通常采用多通路的I/O系統(tǒng)結構(見圖)。此時對多個控制器和通道的分配,必須查找所有的控制器和通道,才能決定是否將該進程掛起。為進程P分配所需的I/O設備從SDT表查該類設備的控制表DCT由DCT檢查該設備忙否?不忙檢查分配此設備的安全性?不安全分配此設備給進程P查此設備連接的COCT忙否?不忙不忙分配此控制器給進程P查此控制器連接的CHCT忙否?最后一個DCT?分配此通道給進程P啟動I/O,進行具體的I/O操作忙進程P的PCB放入此設備的等待隊列YN忙最后一個COCT?最后一個DCT?進程P的PCB放入此控制器的等待隊列YNY忙最后一個CHCT?Y最后一個COCT?進程P的PCB放入此通道的等待隊列NYNN多通路設備分配流程示意圖4.6磁盤I/O(DiskI/O)在現(xiàn)代的計算機系統(tǒng)中,都把磁盤作為文件存儲器,因為磁盤存儲器不僅容量大(硬盤單個容量可達28GB),存取速度快(內部傳輸率達257MB/sec),而且是可以隨機存取的共享設備,是實現(xiàn)虛擬存儲器所必需的硬件。提高磁盤I/O速度,系統(tǒng)應選擇性能好的磁盤,采用好的磁盤調度算法和設置磁盤高速緩沖區(qū)。4.6.1磁盤結構

磁盤存儲器由磁盤驅動器、磁盤控制器和磁盤(片)三個部分組成。在硬盤存儲器中,將若干個盤片組合在一起,形成一個盤片組。當驅動器旋轉時,所有盤片都沿軸平面轉動,目前硬盤轉速已達每分鐘7200轉。緊靠著盤片的是傳動臂,臂的末端是讀寫頭。按磁頭的工作方式,可以分為活動頭磁盤和固定頭磁盤。

柱面扇區(qū)磁臂磁頭磁盤結構-1活動頭磁盤:

活動頭磁盤一個盤面上僅配有一個磁頭,所有磁頭都安裝在一個傳動臂上,在訪問盤面上的磁道時,傳動臂在步進電機的控制下,可在整個盤面上從外向內,或從內向外移動,這稱為尋道?;顒宇^磁盤只能進行串行讀/寫,導致I/O速度較饅,但是由于結構簡單,仍廣泛用于中、小型磁盤設備中。微機上配置的溫盤和軟盤,都采用活動磁頭結構。固定頭磁盤:

固定頭磁盤在每條磁道上都有一個讀/寫磁頭,所有的磁頭都被裝在一剛性磁臂中,通過這些磁頭可訪問所有的磁道,可以進行并行讀/寫操作,有效地提高了磁盤的I/O速度。這種結構的磁盤主要用于大容量磁盤上。4.6.2數(shù)據的組織

1.磁盤的容量磁盤設備中,一般包含一個或多個盤片,每片分兩面,每面又可分成若干條磁道(即n個同心圓)。最外邊的磁道標為0道,最里面的磁道為n-1道。磁道的個數(shù)取決于盤的大小和存儲的密度。每個磁道又被劃分為若干個扇區(qū),一般被劃分成10~100個扇區(qū)。每一個扇區(qū)是磁盤存儲信息和傳送信息的基本單位(512字節(jié)),又稱為存儲塊,或簡稱為塊。我們常用的3.5英寸的軟盤怎樣來計算的容量呢?磁盤的容量-1軟盤的容量=每扇區(qū)的字節(jié)數(shù)(512字節(jié))×(扇區(qū)數(shù)/道)×(磁道數(shù)/面)×(面數(shù)),所以3.5英寸軟盤的總量=512×18×80×2=1.44MB。一個容量較大的硬盤含有若干個盤片,每一個盤片有上下兩個盤面。如果硬盤中有4個盤片,則共有8個磁面。磁盤中處于相同磁道(同心園)位置上,但在不同盤面上的磁道的集合,稱為柱面。柱面的序號與磁道的序號相同。

磁盤的容量-2顯然,存取同一柱面上各磁道中的信息不必移動磁頭。而磁盤存取信息的大部分時間是化費在移動磁頭到相應磁道上,所以,把相關信息存儲在同一柱面上,可以使存取速度更快,更有效。那么,我們又怎樣來計算硬盤的容量呢?硬盤的容量=每扇區(qū)的字節(jié)數(shù)(512字節(jié))×(扇區(qū)數(shù)/道)×(柱面數(shù))×(磁頭數(shù))例如一個硬盤有15個磁頭,8894個柱面,每道63個扇區(qū),則它的容量=512×63×8894×15=4.3GB。DisksparametersDiskparametersfortheoriginalIBMPCfloppydiskandaWesternDigitalWD18300harddisk2.物理扇區(qū)號和邏輯扇區(qū)號

扇區(qū)是磁盤存儲和傳送信息的基本單位。要在磁盤上訪問一個扇區(qū),必須給出其磁道號(或柱面號)、盤面號(磁頭號)和扇區(qū)號,這樣才能準確地定位要訪問的扇區(qū),這稱為扇區(qū)的物理地址,即物理扇區(qū)號。由物理扇區(qū)號表示的扇區(qū)稱為絕對扇區(qū)。為了方便,操作系統(tǒng)通常將其轉變?yōu)檫壿嬌葏^(qū)號加以管理。編址方式為:在磁道上按扇區(qū)號增加,在柱面上按磁道號增加,對整個磁盤從柱面0到最后一個柱面增加。例如,每磁道扇區(qū)數(shù)為S,每個柱面的磁道數(shù)為T,那么可將柱面號i,盤面號為j,扇區(qū)號為k的物理扇號轉換為邏輯扇區(qū)號為:b=k+S*(T*i+j)。操作系統(tǒng)中,都以邏輯扇號為文件分配扇區(qū),也以邏輯扇號來調用塊設備驅動程序,進行磁盤的讀/寫操作。

4

溫馨提示

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

評論

0/150

提交評論