《計算機操作系統(tǒng)》湯小丹_第1頁
《計算機操作系統(tǒng)》湯小丹_第2頁
《計算機操作系統(tǒng)》湯小丹_第3頁
《計算機操作系統(tǒng)》湯小丹_第4頁
《計算機操作系統(tǒng)》湯小丹_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

湘潭大學第7章

輸入/輸出系統(tǒng)7.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)管理的主要對象是I/O設備和相應的設備控制器。主要任務是完成用戶提出的I/O請求,提高I/O速率,以及提高設備利用率,并能為更高層的進程方便地使用這些設備提供手段。7.1.1I/O系統(tǒng)的基本功能I/O系統(tǒng)應具有的基本功能:隱藏物理設備的細節(jié)。與設備的無關性。提供處理機和I/O設備的利用率。對I/O設備進行控制。能確保對設備的正確共享。錯誤處理。7.1.2I/O系統(tǒng)的層次結構和模型I/O軟件的層次結構用戶層軟件產(chǎn)生I/O請求,格式化I/O,SPOOLing設備獨立性軟件映射、保護、分塊、緩沖、分配設備驅動程序設置設備寄存器;檢查狀態(tài)中斷處理程序硬件執(zhí)行I/O操作I/O系統(tǒng)中各種模塊之間的層次視圖應用軟件設備管理驅動程序中斷處理程序控制器設備I/O系統(tǒng)接口軟硬件接口設備獨立性軟件7.1.3I/O系統(tǒng)接口塊設備接口塊設備:數(shù)據(jù)的存儲和傳輸以數(shù)據(jù)塊為單位的設備,典型的塊設備是磁盤,可尋址,I/O常采用DMA方式。塊設備接口是塊設備管理程序與高層之間的接口,反映了大部分磁盤存儲器和光盤存儲器的本質特征。流設備接口流設備又稱字符設備接口是流設備管理程序與高層之間的接口,用于控制字符設備的I/O。字符設備:數(shù)據(jù)的存取和傳輸是以字符為單位的設備,不可尋址,I/O常采用中斷驅動方式。網(wǎng)絡通信接口7.2I/O設備和設備控制器I/O設備(1)I/O設備的類型按使用特性分類:存儲設備。也稱外存、輔存,是存儲信息的主要設備。I/O設備。又可分為輸入設備,輸出設備和交互式設備。按傳輸速率分類:可分為低速(1~102字節(jié))、中速(103~105)、高速(105~109)三類。(2)設備與控制器之間的接口通常設備并不是直接與CPU進行通信,而是與設備控制器通信。因此在設備與設備控制器之間應有一接口。在該接口中有三種類型的信號,各對應一條信號線:(1)數(shù)據(jù)信號線。傳送數(shù)據(jù)信號,對輸入而言,是由設備發(fā)送給設備控制器的;對輸出而言,是由設備控制器所接收的比特流。(2)控制信號線。作為設備控制器向I/O設備發(fā)送控制信號的通路。由設備控制器發(fā)送給設備,用于規(guī)定設備操作的信號。(3)狀態(tài)信號線。用于傳送指示設備的當前狀態(tài)的信號。設備控制器設備控制器是CPU與I/O設備之間的接口,其用途是接收從CPU發(fā)來的命令,并去控制I/O設備工作。設備控制器是一個可編址設備。依其復雜性可分成兩大類:一類是用于控制字符設備的控制器;另一類是用于控制塊設備的控制器。(1)設備控制器的基本功能接收和識別命令:接收和譯碼,需要控制寄存器和命令譯碼器。數(shù)據(jù)交換:實現(xiàn)CPU控制器;控制器設備的數(shù)據(jù)交換,需要數(shù)據(jù)寄存器。標識和報告設備狀態(tài):需要狀態(tài)寄存器。地址識別:設備、寄存器有地址,需要配置地址譯碼器。數(shù)據(jù)緩沖區(qū)。差錯控制。(2)設備控制器的組成:大多數(shù)控制器都由三部分組成:設備控制器與處理機的接口、設備控制器與設備的接口、I/O邏輯。設備控制器的組成圖示I/O邏輯控制器與設備接口1控制器與設備接口i…數(shù)據(jù)寄存器控制/狀態(tài)寄存器CPU與控制器接口控制器與設備接口數(shù)據(jù)線地址線控制線數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制…用于實現(xiàn)對設備的控制。主要任務是:對處理機發(fā)送給控制器的I/O命令進行譯碼;對發(fā)送給控制器的地址進行譯碼,根據(jù)所譯出的命令對作選設備進行控制。內存映像I/O驅動程序將抽象命令轉換出一系列具體命令、參數(shù)等數(shù)據(jù),裝入設備控制器的相應寄存器,由控制器來執(zhí)行這些命令,具體實施對I/O設備的控制,這一工作可用兩種方法來完成。利用特定的I/O指令:訪問內存和訪問設備需要兩種不同的指令。內存映像I/O:該方式統(tǒng)一了對內存和對控制器的訪問的方法,簡化了I/O編程?;咀龇ㄊ?,在編址上不再區(qū)分內存單元地址和設備控制器地址,都采用k。當0≤k≤n-1時,認為是內存地址,當k≥n時,認為是某個控制器的寄存器地址。7.3中斷機構和中斷處理程序中斷簡介中斷和陷入中斷向量表和中斷優(yōu)先級對多中斷源的處理方式屏蔽(禁止)中斷嵌套中斷142、中斷處理程序中斷處理流程:喚醒被阻塞的驅動程序進程中斷請求信號保護被中斷進程的CPU環(huán)境分析中斷原因,轉入相應的中斷處理程序終端中斷處理程序打印機中斷處理程序…恢復被中斷進程的CPU現(xiàn)場返回被中斷的進程,繼續(xù)執(zhí)行7.4設備處理程序7.5.1設備驅動程序概述設備驅動程序的功能接收由與設備無關的軟件發(fā)來的命令和參數(shù),將命令中的抽象要求轉換為與設備相關的低層操作序列。檢查用戶I/O請求的合法性,了解I/O設備的狀態(tài),傳遞有關參數(shù),設置設備的工作方式。發(fā)出I/O命令,若設備空閑,便立即啟動I/O設備,完成指定的I/O操作;若設備忙,則將請求者的請求塊,掛在設備隊列上等待。及時響應由控制器或通道發(fā)來的中斷請求,并根據(jù)中斷類型調用相應的中斷處理程序進行處理。設備驅動程序的特點驅動程序是實現(xiàn)在與設備無關的軟件和設備控制器之間通信和轉換的程序。驅動程序與設備控制器和I/O設備的硬件特性緊密相關。對于不同類型的設備,應配置不同的驅動程序。驅動程序與I/O設備所采用的I/O控制方式緊密相關。驅動程序中的一部分程序必須用匯編語言書寫,目前有很多驅動程序,其基本部分已固化。驅動程序應運行可重入。設備處理方式根據(jù)在設備處理時是否設置進程及設置什么樣的進程,其方式可分為三類:為每一類設備設置一個進程,該進程專門執(zhí)行這類設備的I/O操作。在整個系統(tǒng)中設置一個I/O進程,專門負責對系統(tǒng)中所有各類設備的I/O操作。也可以設置一個輸入進程和一個輸出進程。不設置專門的設備處理進程,而是為各類設備設置相應的設備處理程序,供用戶進程或系統(tǒng)進程調用。7.4.2設備處理程序的處理過程設備驅動程序的主要任務是啟動指定設備。但在啟動之前還必須完成必要的準備工作,在完成所有的準備工作后,才向設備控制器發(fā)送一條啟動命令。其處理過程是:將抽象要求轉換為具體要求;對服務請求進行校驗;檢查設備的狀態(tài);傳送必要的參數(shù);啟動I/O設備。驅動程序發(fā)出I/O命令后,基本的I/O是在設備控制器的控制下進行的。通常,I/O操作所要完成的工作較多,需要一定的時間,此時驅動程序進程把自己阻塞起來,直至中斷到來時才將它喚醒。7.4.3對I/O設備的控制方式在I/O控制的整個發(fā)展過程中,都始終貫穿著的宗旨是:盡量減少主機對I/O控制的干預,把主機從繁雜的I/O控制事務中解脫出來,以便主機更多地去完成數(shù)據(jù)處理任務。I/O控制的發(fā)展經(jīng)歷了使用輪詢的可編程I/O方式、使用中斷的可編程I/O控制方式、DMA控制方式。201、使用輪詢的可編程I/O方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)未就緒就緒CPU→I/OI/O→CPU向存儲器中寫字從I/O控制器中讀入字檢查狀態(tài)?傳送完成?I/O→CPUCPU→內存出錯NY下條指令212、使用中斷的可編程I/O控制方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)就緒CPU→I/OI/O→CPU向內存中寫字從I/O控制器中讀字檢查狀態(tài)?傳送完成?I/O→CPUCPU→內存出錯NY下條指令CPU做其他事中斷3、直接存儲器訪問(DMA)方式一、DMA控制方式的引入:前述的兩種I/O方式是以字(節(jié))為單位進行I/O的,每完成一個字的I/O,控制器便要向CPU請求一次中斷。這種方式用于塊設備的I/O,其效率是極低的。為進一步減少CPU對I/O的干預,而引入DMA方式,其特點有:1、數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊;2、所傳送的數(shù)據(jù)是從設備直接送入內存,或相反;3、僅在傳送一個或多個數(shù)據(jù)塊的開始和結束時,才需CPU干預,整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。23

直接存儲器訪問DMA控制方式二、DMA控制器的組成I/O控制邏輯DRMARDCCRCPUcountDMA控制器內存系統(tǒng)總線命令DMA控制器的三個組成部分:(1)主機與DMA控制器的接口.(2)DMA控制器與塊設備的接口.(3)I/O控制邏輯.命令/狀態(tài)寄存器:用于接受從CPU發(fā)來的I/O命令或有關控制信息,或設備的狀態(tài)。主機—控制器接口控制器與塊設備接口數(shù)據(jù)寄存器:暫存從設備到內存或從內存到設備的數(shù)據(jù).數(shù)據(jù)計數(shù)器:用于存放本次CPU要讀或寫的字(節(jié))數(shù)。內存地址寄存器:用于存放數(shù)據(jù)從設備傳送到內存的目標地址,或由內存到設備的內存源地址。24直接存儲器訪問DMA控制方式設置MAR和DC初值啟動DMA傳送命令挪用存儲器周期傳送數(shù)據(jù)字存儲器地址增1字計數(shù)寄存器減1DC=0?請求中斷在繼續(xù)執(zhí)行用戶程序的同時,準備一次傳送YN工作過程:7.5與設備無關的I/O軟件設備獨立性也稱設備無關性。其基本含義是:應用程序獨立于具體使用的物理設備,使用邏輯設備名來請求某類設備,系統(tǒng)在執(zhí)行時,則使用該類設備的物理設備名。驅動程序是一個與硬件(或設備)緊密相關的軟件,為實現(xiàn)設備獨立性,必須再在驅動程序之上設置一層設備獨立性軟件。7.5.1基本概念以物理設備名使用設備早期的OS,應用程序使用I/O設備時,都使用設備的物理設備名稱,使應用程序與系統(tǒng)中的物理設備直接相關。這種方式導致應用程序不靈活,給用戶帶來不便,不利于提高設備利用率。引入邏輯設備名為了實現(xiàn)與設備的無關性,引入了邏輯設備和物理設備兩個概念。邏輯設備是抽象的設備名。在應用程序中使用邏輯設備名來使用設備。好處是:設備分配時的靈活性。易于實現(xiàn)I/O重定向:所謂I/O重定向是指用于I/O操作的設備可以更換,而不必修改應用程序。邏輯設備名到物理設備名的轉換7.5.2實現(xiàn)與設備無關性的軟件實現(xiàn)與設備無關性的軟件是I/O系統(tǒng)高層軟件,其下是設備驅動程序。在與設備無關的軟件中,包括了執(zhí)行所有設備公有操作的軟件:設備驅動程序的統(tǒng)一接口,將邏輯設備名映射為物理設備名,進一步可找到相應物理設備的驅動程序,對設備進行保護,禁止用戶直接訪問設備;緩沖管理;差錯控制。獨占設備的分配與回收;提供獨立于設備的邏輯數(shù)據(jù)塊。7.5.3設備分配在多道程序環(huán)境下,系統(tǒng)中的設備不允許用戶自行使用,而必須由系統(tǒng)分配。7.4.1設備分配中的數(shù)據(jù)結構進行設備分配時,通常借助于一些表格的幫助。表格中記錄了相應設備或控制器的狀態(tài)以及對設備或控制器進行控制所需的信息。在進行設備分配時所需的數(shù)據(jù)結構表格有設備控制表、控制器控制表、通道控制表、系統(tǒng)設備表等。291、設備分配中的數(shù)據(jù)結構(1)一、設備控制表DCT:系統(tǒng)為每一個設備都設置一張設備控制表,用于記錄本設備的情況。設備控制表集合DCT1DCT2DCTn設備類型type設備標始符deviceID設備狀態(tài):等待/不等待,忙/閑指向控制器表的指針重復執(zhí)行次數(shù)或時間設備隊列的隊首指針因請求本設備而未得到滿足的進程,其PCB按照一定的策略排成一隊列,該隊列簡稱設備隊列。其隊首指針指向隊首PCB。當設備本身正處于使用狀態(tài)時,應將設備的忙標志置1。若與該設備相連接的控制器或通道正忙,不能啟動該設備,此時將設備的等待標志置1指向該設備所連接的控制器的控制表。在具有多條通路的情況下,一個設備將與多個控制器連接。此時在DCT中還應設置多個控制器表指針。若發(fā)生傳送錯誤,并不立即認為傳送失敗,而是重新傳送,并由系統(tǒng)規(guī)定設備在工作中發(fā)生錯誤時,應重復執(zhí)行的次數(shù)。重復執(zhí)行時,若能恢復正常,則仍認為傳送成功。當屢次失敗而使重復執(zhí)行次數(shù)達到規(guī)定值其傳送還不成功時,才認為傳送失敗。30設備分配中的數(shù)據(jù)結構(2)二、控制器控制表、通道表和系統(tǒng)設備表1、控制器控制表COCT:系統(tǒng)為每一個控制器都設置一張用于記錄本控制器情況的控制器控制表。(P214圖7-15(a))2、通道控制表CHCT:每個通道都配置一張通道控制表。(P214圖7-15(a))3、系統(tǒng)設備表SDT:這是系統(tǒng)范圍的數(shù)據(jù)結構,其中記錄了系統(tǒng)中全部設備的情況。每個設備占一個表目。(見圖)表目1…表目i…設備類型設備標識符DCT驅動程序入口2、設備分配時應考慮的因素一、考慮設備的固有屬性:設備的固有屬性可分成兩類:1、獨占,這類設備在一段時間內,只允許一個進程獨占。對其采用的分配策略是獨享分配,但這種分配方式使設備利用不充分,且會引起死鎖。2、共享,指一個設備允許多個進程同時共享。對這類設備可同時分配給多個進程使用,但對這些進程的訪問應合理調度。此外,還有虛擬設備,這是對獨占設備經(jīng)虛擬技術改造后的設備,已屬可共享設備。二、設備分配算法:對設備的分配算法通常有兩種,即先來先服務算法和優(yōu)先級高者優(yōu)先算法。三、設備分配中的安全性:1、安全分配方式:每當進程發(fā)出I/O請求后,便進入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。這種方式已摒棄了造成死鎖的四個必要條件之一的“請求和保持”條件,因而是安全的。其缺點是進程進展緩慢,即CPU與I/O設備是串行工作的。2、不安全工作方式:進程發(fā)出I/O請求后仍繼續(xù)運行,需要時又可發(fā)出第二、第三個I/O請求。僅當進程所需要的設備已被另一進程占用時,該進程才進入阻塞狀態(tài)。這種方式可能造成死鎖,應進行是否會發(fā)生死鎖的安全性計算。3、獨占設備的分配程序一、基本的設備分配程序:對于具有I/O通道的系統(tǒng),在進程提出I/O請求后,系統(tǒng)的設備分配程序可按下述步驟進行設備分配:1、分配設備;2、分配控制器;3、分配通道。二、設備分配程序的改進:上述程序中進程是以物理設備名來提出I/O請求的,另外采用的是單通路的I/O系統(tǒng)結構,易產(chǎn)生“瓶頸”現(xiàn)象。為此需加以改進,可從兩方面入手:1、增加設備的獨立性;2、考慮多通路情況。347.5.4邏輯設備名到物理設備名映射的實現(xiàn)1、邏輯設備表LUT:其格式是

2、LUT的設置問題:可采取兩種方式,一種是整個系統(tǒng)設置一張LUT,一種是為每個用戶設置一張LUT。邏輯設備名物理設備名驅動程序入口地址/dev/tty31024/dev/print52046………整個系統(tǒng)設置一張LUT,可采用這種格式。由于系統(tǒng)中所有進程的設備分配情況都記錄在同一張LUT中,因此不允許表中有相同的邏輯設備名,即要求所有用戶不使用相同的邏輯設備名。在多用戶環(huán)境下難以做到,主要用于單用戶系統(tǒng)。邏輯設備名系統(tǒng)設備表指針/dev/tty3/dev/print5……為每個用戶設置一張LUT,可采用這種格式。當用戶登錄時,便為用戶建立一個進程,同時為之建立一張LUT,并將其放入進程PCB中。由于在多用戶系統(tǒng)中都配置了系統(tǒng)設備表,故LUT可采用以上格式。7.6用戶層的I/O軟件7.6.1系統(tǒng)調用與庫函數(shù)系統(tǒng)調用應用程序通過系統(tǒng)調用,間接調用OS中的I/O過程,對I/O設備進行操作。庫函數(shù)用戶程序通過調用對應的庫函數(shù)來使用系統(tǒng)調用,這些庫函數(shù)與系統(tǒng)調用連接在一起,被嵌入在運行時裝入內存的二進制程序中。系統(tǒng)調用執(zhí)行過程系統(tǒng)調用命令用戶態(tài)系統(tǒng)態(tài)系統(tǒng)調用調用返回7.6.2假脫機系統(tǒng)一、什么是SPOOLing:在多道程序系統(tǒng)中,利用一道程序來模擬脫機輸入時的外圍控制機的功能,把低速I/O設備上的數(shù)據(jù)傳送到高速磁盤上;再利用另一道程序模擬脫機輸出時外圍控制機的功能,把數(shù)據(jù)從磁盤傳送到低速輸出設備上。這樣,在主機的直接控制下,實現(xiàn)脫機輸入輸出功能。此時的外圍操作與CPU對數(shù)據(jù)的處理同時進行,把這種在聯(lián)機情況下實現(xiàn)的同時外圍操作稱為SPOOLing,或稱為假脫機操作。其特點有三:一是提高了I/O速度;二是將獨占設備改造為共享設備;三是實現(xiàn)了虛擬設備功能。二、SPOOLing系統(tǒng)的組成:SPOOLing系統(tǒng)由三部分組成,由于是對脫機輸入輸出工作的模擬,故必須有高速隨機外存的支持,通常采用磁盤。1、輸入井和輸出井:是磁盤上開辟的兩個大存儲空間。輸入井用于收容I/O設備輸入的數(shù)據(jù)。輸出井用于收容用戶程序的輸出數(shù)據(jù)。2、輸入緩沖區(qū)和輸出緩沖區(qū):內存中開辟的兩個緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設備送來的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設備。3、輸入進程SPi和輸出進程SP0:SPi模擬脫機輸入時的外圍控制機,將用戶要求的數(shù)據(jù)從輸入機通過輸入緩沖區(qū)再送到輸入井。CPU需要輸入的數(shù)據(jù)時,直接從輸入井讀入內存。SP0模擬脫機輸出時的外圍控制機。4、請求打印隊列:由若干張請求打印表形成的隊列,系統(tǒng)為每個請求打印的進程建立一張請求打印表。三、共享打印機:打印機屬于獨享設備。通過SPOOLing技術可將其改造為共享設備。當用戶進程請求打印輸出時,SPOOLing系統(tǒng)表示同意,但并不真正將打印機分配給該用戶進程,只是為他做兩件事:(1)由SP0在輸出井中為之申請一空閑盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;(2)SP0為用戶進程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。若打印機空閑,SP0

從請求打印隊列的對首取出一張請求打印表,根據(jù)表中的要求將要打印的數(shù)據(jù)從輸出井傳送到內存緩沖區(qū),再送打印機打印。直到請求打印隊列空為止,SP0才將自己阻塞,到下次再有打印請求時才被喚醒。7.6.3守護進程對假脫機系統(tǒng)實現(xiàn)打印機共享這一方案進行修改,為打印機建立一個守護進程。守護進程是允許使用打印機的唯一進程,所有需要使用打印機的進程,都需將一份要求打印的文件放在假脫機文件隊列(目錄)中。如果守護進程睡眠,便將它喚醒,由它按照目錄中的說明進行打印,直到全部文件打印完畢,守護進程無事可做,又去睡眠,等待用戶進程再次發(fā)出打印請求。7.7緩沖區(qū)管理要提高I/O速度和設備利用率,在很大程度上要借助緩沖技術來實現(xiàn)。緩沖管理的主要功能是組織好這些緩沖區(qū),并提供獲得和釋放緩沖區(qū)的手段。7.7.1緩沖的引入在OS中,引入緩沖的主要原因可歸結為以下幾點:緩和CPU與I/O設備間速度不匹配的矛盾。減少對CPU的中斷頻率,放寬對中斷響應時間的限制。解決數(shù)據(jù)粒度不匹配的問題提高CPU和I/O設備之間的并行性。7.7.2單緩沖區(qū)和雙緩沖區(qū)單緩沖區(qū)每當一用戶進程發(fā)出一I/O請求時,OS便在主存中為之分配一緩沖區(qū)。在塊設備輸入時,先從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū),再由OS將緩沖區(qū)的數(shù)據(jù)送用戶區(qū),然后便是CPU對這一塊數(shù)據(jù)進行計算。在字符設備輸入時,緩沖區(qū)用于暫存用戶輸入的一行數(shù)據(jù)。輸入期間,用戶進程被掛起以等待一行數(shù)據(jù)輸入完畢;輸出時,用戶進程將一行數(shù)據(jù)送入緩沖區(qū)后,繼續(xù)執(zhí)行計算。當用戶進程已有第二行數(shù)據(jù)輸出時,若第一行數(shù)據(jù)尚未提取完畢,用戶進程應阻塞。雙緩沖區(qū)雙緩沖工作方式也稱緩沖對換方式。塊設備輸入時,先將數(shù)據(jù)輸入第一個緩沖區(qū),裝滿后便轉向第二個緩沖區(qū),此時OS可將第一緩沖區(qū)中的數(shù)據(jù)送用戶進程區(qū),接著由CPU對數(shù)據(jù)進行計算。設一塊數(shù)據(jù)從磁盤輸入到緩沖區(qū)所費時間為T,CPU對這塊數(shù)據(jù)的計算時間為C,雙緩沖時,系統(tǒng)處理一塊數(shù)據(jù)的時間可粗略記為max(C,T)。若C<T,可使塊設備連續(xù)輸入;若C>T,可使CPU不必等待設備輸入。對于字符設備,若采用行輸入方式,則在雙緩沖工作方式中,通常用戶進程不會被阻塞,即用戶在輸完一行后,在CPU執(zhí)行第一行中的命令時,用戶可繼續(xù)向第二緩沖區(qū)輸入下一行數(shù)據(jù)。447.7.3環(huán)形緩沖區(qū)一、循環(huán)緩沖的組成1、多個緩沖區(qū):在循環(huán)緩沖中含有多個緩沖區(qū),每個緩沖區(qū)的大小相同。緩沖區(qū)可分成三種類型:(1)空緩沖區(qū)R.用于存放輸入數(shù)據(jù)。(2)已滿緩沖區(qū)G。其中的數(shù)據(jù)提供給計算進程使用。(3)現(xiàn)行工作緩沖區(qū)C。計算進程正在使用的緩沖區(qū)。2、多個指針:對用于輸入的多緩沖,設置三個指針:(1)Nextg。指示計算進程下一個可用的緩沖區(qū)G;(2)Nexti。指示輸入進程下次可用的空緩沖區(qū)R;(3)Current。指示計算進程正在使用的緩沖區(qū)單元。45多個緩沖區(qū)示意圖GGCRGR165423GNextgCNextgCurrentNextiNexti返回26G46GGCRGR165423多個指針示意圖CurrentNextiNextg477.3.4循環(huán)緩沖(2)二、緩沖區(qū)的使用:計算進程和輸入進程可利用下述兩個過程來使用循環(huán)緩沖區(qū)。1、Getbuf過程:每當計算進程要使用緩沖區(qū)的數(shù)據(jù)時,可調用該過程。類似地,每當輸入進程要使用空緩沖來裝入數(shù)據(jù)時,也可調用該過程。2、Releasebuf過程:當計算進程把G緩沖區(qū)中的數(shù)據(jù)提完時,便可調用該過程將緩沖區(qū)釋放。此時把緩沖區(qū)由C改為R。類似地,當輸入進程將緩沖區(qū)裝滿時,也調用該過程,將該緩沖區(qū)釋放,并改為G緩沖區(qū)。如圖487.3.4循環(huán)緩沖(3)三、進程同步:使用輸入緩沖可使輸入進程和計算進程并行執(zhí)行。這時指針Nexti和Nextg不斷地沿順時鐘方向移動,這樣就可能出現(xiàn)下述兩種情況。1、Nexti追趕上Nextg:這意味著全部緩沖區(qū)已滿,此時輸入進程應被阻塞,直至計算進程把某個緩沖區(qū)中數(shù)據(jù)全部提完,使之成為空緩沖R,并調用Releasebuf過程將其釋放,才將輸入進程喚醒。這種情況稱為系統(tǒng)受計算限制。2、Nextg追趕上Nexti:意味著全部緩沖區(qū)已空。此時計算進程只能阻塞,直至輸入進程又裝滿某緩沖區(qū),并調用Releasebuf過程將它釋放,才去喚醒計算進程。這種情況稱為系統(tǒng)受I/O限制。7.7.4緩沖池循環(huán)緩沖區(qū)僅適用某特定的I/O進程和計算進程,屬專用緩沖區(qū)。目前廣泛流行公用緩沖池,池中的緩沖區(qū)可供多個進程共享。一、緩沖池的組成:對于既可用于輸入又可用于輸出的公用緩沖池,其中至少應含有三種類型的緩沖區(qū),(1)空緩沖區(qū);(2)裝滿輸入數(shù)據(jù)的緩沖區(qū);(3)裝滿輸出數(shù)據(jù)的緩沖區(qū)??蓪⑾嗤愋偷木彌_區(qū)鏈成一個隊列,于是可形成三個隊列:(1)空緩沖隊列emq,由空緩沖區(qū)所鏈成.其對首指針F(emq)和隊尾指針L(emq)分別指向隊列的首緩沖區(qū)和尾緩沖區(qū).(2)輸入隊列inq,由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成的隊列。其對首指針F(inq)和隊尾指針L(inq)分別指向隊列的首、尾緩沖區(qū)。(3)輸出隊列outq,由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈成的隊列。其對首指針F(outq)和隊尾指針L(outq)分別指向隊列的首、尾緩沖區(qū)。此外,還應具有四種工作緩沖區(qū):(1)用于收容輸入數(shù)據(jù)的工作緩沖區(qū);(2)用于提取數(shù)據(jù)的工作緩沖區(qū);(3)收容輸出數(shù)據(jù)的工作緩沖區(qū);(4)提取輸出數(shù)據(jù)的工作緩沖區(qū)。51

二、Getbuf過程和Putbuf過程SProcedureGetbuf(type)beginwait(RS(type));wait(MS(type));B(number):=

Takebuf(type);Signal(MS(type));endProcedure

Putbuf(type,number)beginwait(MS(type));Addbuf(type,number);Signal(MS(type));Signal(RS(type));end此過程是由Takebuf(type)過程改造后而形成,原因是隊列本身是臨界資源,多個進程訪問同一個隊列時應互斥且需要同步。Takebuf(type)用于從type所指定的隊列的隊首,摘下一緩沖區(qū)?;コ庑盘柫?,為每個隊列設置一個,使得諸進程能互斥地訪問緩沖區(qū)隊列。資源信號量,每個緩沖隊列設置一個,以保證同步地使用緩沖區(qū)。由Addbuf(type,number)改造而成。Addbuf(type,number)的作用是將由參數(shù)number所指示的緩沖區(qū),掛在type隊列上。52緩沖池(4)三、緩沖區(qū)的工作方式hinsinhoutsout用戶程序收容輸入提取輸出提取輸入收容輸出緩沖池輸入進程需要輸入時,調用Getbuf(emq),從emq隊列的隊首摘下一空緩沖區(qū),作為收容輸入工作緩沖區(qū)。然后把數(shù)據(jù)輸入其中,裝滿后再調用Putbuf(inq,hin),將該緩沖區(qū)掛在輸入隊列inq的隊尾。計算進程需要輸入數(shù)據(jù)時,調用Getbuf(inq),從輸入隊列取得一緩沖區(qū)作為提取輸入工作區(qū)sin,計算進程從中提取數(shù)據(jù)。計算進程用完該數(shù)據(jù)后,調用Putbuf(emq,sin),將該緩沖區(qū)掛到空緩沖隊列emq上計算進程需要輸出時調用Getbuf(emq),從空緩沖隊列emq的隊首取得一空緩沖區(qū),作為收容輸出工作區(qū)hout。當其中裝滿輸出數(shù)據(jù)后,又調用Putbuf(outq,hout),將該緩沖區(qū)掛在輸出隊列outq末尾。當要輸出時,由輸出進程調用Getbuf(outq),從輸出隊列的隊首取得一裝

溫馨提示

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

評論

0/150

提交評論