《操作系統(tǒng)》課件-第5章設(shè)備管理_第1頁(yè)
《操作系統(tǒng)》課件-第5章設(shè)備管理_第2頁(yè)
《操作系統(tǒng)》課件-第5章設(shè)備管理_第3頁(yè)
《操作系統(tǒng)》課件-第5章設(shè)備管理_第4頁(yè)
《操作系統(tǒng)》課件-第5章設(shè)備管理_第5頁(yè)
已閱讀5頁(yè),還剩90頁(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)介

第5章設(shè)備管理設(shè)備管理是指計(jì)算機(jī)系統(tǒng)對(duì)除CPU和內(nèi)存之外的所有輸入輸出設(shè)備的管理,是操作系統(tǒng)的主要功能之一,相應(yīng)地,完成該功能的模塊稱為設(shè)備管理子系統(tǒng)。設(shè)備管理的目的是方便用戶使用設(shè)備,實(shí)現(xiàn)某些設(shè)備的共享,提高設(shè)備的利用率;實(shí)現(xiàn)外圍設(shè)備和其他計(jì)算機(jī)部件之間的并行操作,充分發(fā)揮計(jì)算機(jī)系統(tǒng)的并行性,進(jìn)一步提高系統(tǒng)效率;防止用戶錯(cuò)誤地使用外圍設(shè)備,從而提高外圍設(shè)備和系統(tǒng)的可靠性和平安性。本章要點(diǎn):設(shè)備管理的分類;I/O控制方式;緩沖管理;設(shè)備分配;設(shè)備處理;時(shí)鐘管理;5.1設(shè)備管理的分類

5.1.1設(shè)備的分類當(dāng)前計(jì)算機(jī)系統(tǒng)所配置的外部設(shè)備種類繁多,特性多種多樣,可以按照不同的角度將他們分成不同的類別。1.按照設(shè)備的功能分類這種分類方法可以將設(shè)備分為輸入設(shè)備、輸出設(shè)備、存儲(chǔ)設(shè)備、供電設(shè)備、網(wǎng)絡(luò)聯(lián)網(wǎng)設(shè)備等,輸入設(shè)備是將數(shù)據(jù)、圖片、圖像、聲音送入計(jì)算機(jī)的設(shè)備,如鍵盤、數(shù)字化儀、掃描儀等。輸出設(shè)備是將計(jì)算機(jī)處理加工后的數(shù)據(jù)顯示、印制、再生出來(lái)的設(shè)備,如顯示器、打印機(jī)等。存儲(chǔ)設(shè)備指能夠進(jìn)行數(shù)據(jù)和信息暫時(shí)或者長(zhǎng)久性存儲(chǔ)的設(shè)備,如磁盤、磁帶、光盤等。供電設(shè)備指向計(jì)算機(jī)提供電力能源、電池后備的部件與設(shè)備,如開關(guān)電源、聯(lián)機(jī)UPS等。網(wǎng)絡(luò)聯(lián)網(wǎng)設(shè)備指進(jìn)行網(wǎng)絡(luò)互連所需的設(shè)備和能夠直接連接上網(wǎng)的設(shè)備,如路由器、調(diào)制解調(diào)器、智能集線器、交換機(jī)等。有的設(shè)備既是輸入設(shè)備又是輸出設(shè)備,如計(jì)算機(jī)終端。隨著信息處理的普及,又將上述大多數(shù)設(shè)備稱為信息設(shè)備。2.按照處理信息的方式分類這種分類方法可以將設(shè)備分為塊設(shè)備(BlockDevice)和字符設(shè)備(CharacterDevice)。塊設(shè)備是以數(shù)據(jù)塊為單位組織和傳送數(shù)據(jù),如磁盤、磁帶等。它將數(shù)據(jù)存儲(chǔ)在定長(zhǎng)塊中,每個(gè)數(shù)據(jù)塊都有自己的地址,塊的大小與設(shè)備和操作系統(tǒng)有關(guān),一般在128~1024字節(jié)之間。塊設(shè)備的根本特性是能夠單獨(dú)地讀寫每一個(gè)數(shù)據(jù)塊,所讀寫的塊與其他別的數(shù)據(jù)塊無(wú)關(guān)。字符設(shè)備是以字符為單位組織和傳送數(shù)據(jù),如顯示終端、打印機(jī)等。它傳送或接收一連串字符,數(shù)據(jù)組織不考慮塊結(jié)構(gòu),也不能單獨(dú)尋址。3.按照設(shè)備的資源屬性分類4.按照設(shè)備的管理模式分類這種分類方法可以將設(shè)備分為物理設(shè)備和邏輯設(shè)備。物理設(shè)備(PhysicalDevice)指計(jì)算機(jī)系統(tǒng)硬件配置的實(shí)際設(shè)備,這些設(shè)備在操作系統(tǒng)內(nèi)具有一個(gè)唯一的符號(hào)名稱,系統(tǒng)可以按照這個(gè)名稱對(duì)相應(yīng)的設(shè)備進(jìn)行物理操作。邏輯設(shè)備(LogicalDevice)是指一種在邏輯意義上存在的設(shè)備,在未加以定義前,它不代表任何硬件設(shè)備和實(shí)際設(shè)備。邏輯設(shè)備是系統(tǒng)提供的,它也是獨(dú)立于物理設(shè)備而進(jìn)行輸入輸出操作的一種“虛設(shè)備〞。5.1.2設(shè)備管理的任務(wù)由于設(shè)備數(shù)量眾多,類型復(fù)雜,計(jì)算機(jī)與I/O設(shè)備在速度上存在較大的差異,用戶直接使用這些設(shè)備操作復(fù)雜,使得操作系統(tǒng)必須執(zhí)行行之有效的設(shè)備管理功能。概括來(lái)說(shuō),操作系統(tǒng)設(shè)備管理的任務(wù)有以下四點(diǎn):5.2I/O控制方式

設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或CPU之間的數(shù)據(jù)傳送,為了有效地控制外圍設(shè)備,提高數(shù)據(jù)傳送效率,選擇和衡量一種控制方式需遵循這樣幾條原那么,即數(shù)據(jù)傳送速度足夠高,能滿足用戶的需要但又不喪失數(shù)據(jù);系統(tǒng)開銷小,所需的處理控制程序少;能充分發(fā)揮硬件資源的能力,使得I/O設(shè)備盡可能處于繁忙狀態(tài),而CPU等待時(shí)間少。由計(jì)算機(jī)原理得知,為了控制I/O設(shè)備和內(nèi)存之間的數(shù)據(jù)交換,每臺(tái)外圍設(shè)備都是按照一定的規(guī)律編碼的。而且,設(shè)備和內(nèi)存與CPU之間有相應(yīng)的硬件接口支持同步控制、設(shè)備選擇以及中斷控制等。因此,本節(jié)中所提的數(shù)據(jù)傳送控制方式都是基于這些硬件根底的。通常,外圍設(shè)備和內(nèi)存之間的常用數(shù)據(jù)傳送控制方式有四種,即程序I/O控制方式、中斷控制方式、DMA控制方式、通道控制方式等。下面將分別來(lái)闡述這四種數(shù)據(jù)傳送控制方式。5.2.1程序I/O控制方式程序I/O控制方式(programmedI/Ocontrol)主要應(yīng)用在早期的計(jì)算機(jī)系統(tǒng)中,由于無(wú)中斷機(jī)構(gòu),CPU對(duì)I/O設(shè)備的控制采用程序控制方式,來(lái)實(shí)現(xiàn)內(nèi)存或CPU和外圍設(shè)備之間的信息傳送。這種方式的控制者是用戶進(jìn)程。當(dāng)用戶進(jìn)程需要輸入數(shù)據(jù)時(shí),它通過(guò)CPU發(fā)出啟動(dòng)設(shè)備準(zhǔn)備數(shù)據(jù)的啟動(dòng)命令,然后,用戶進(jìn)程進(jìn)入測(cè)試等待狀態(tài)。在等待時(shí)間內(nèi),CPU循環(huán)地用一條測(cè)試指令檢查描述外圍設(shè)備的工作狀態(tài)的控制狀態(tài)存放器。而外圍設(shè)備完成數(shù)據(jù)的輸入工作之后,即將該存放器置為完成狀態(tài)。而當(dāng)CPU檢測(cè)到控制狀態(tài)存放器為完成狀態(tài)時(shí),設(shè)備開始往內(nèi)存或CPU傳送數(shù)據(jù)。反之,當(dāng)用戶進(jìn)程需要向設(shè)備輸出數(shù)據(jù)時(shí),也必須同樣發(fā)出啟動(dòng)命令,啟動(dòng)設(shè)備和等待設(shè)備準(zhǔn)備好之后才能輸出數(shù)據(jù)。程序I/O控制方式的控制流程圖如圖5-1所示。圖5-1程序I/O控制方式輸入/輸出流程外圍設(shè)備接收啟動(dòng)命令輸入數(shù)據(jù)輸入完畢?寄存器處完成態(tài)CPU取數(shù)據(jù)CPU發(fā)出啟動(dòng)命令等待完成態(tài)?輸出數(shù)據(jù)到設(shè)備YYNN程序I/O控制方式優(yōu)點(diǎn)是控制簡(jiǎn)單,同時(shí)也不需要多少硬件支持,但是,程序I/O控制方式明顯地存在以下缺點(diǎn):(1)CPU的利用率低。這是由于CPU和外圍設(shè)備只能串行工作,而CPU的處理速度又要大大高于外圍設(shè)備的數(shù)據(jù)傳送和處理速度,所以,CPU的大量時(shí)間都處于等待和空閑狀態(tài)。(2)不能實(shí)現(xiàn)設(shè)備之間的并行工作。這是由于CPU在特定的時(shí)間段內(nèi)只能和一臺(tái)外圍設(shè)備交換數(shù)據(jù)信息。(3)不能發(fā)現(xiàn)和處理由于設(shè)備或其他硬件所產(chǎn)生的錯(cuò)誤。這是由于程序I/O控制方式依靠測(cè)試設(shè)備標(biāo)志觸發(fā)器的狀態(tài)位來(lái)控制數(shù)據(jù)傳送。通常,程序I/O控制方式只適用于那些管理簡(jiǎn)單,對(duì)硬件要求不高的場(chǎng)合,比方CPU執(zhí)行速度較慢,而且外圍設(shè)備較少的系統(tǒng)。5.2.2中斷控制方式中斷控制(interruptcontrol)方式廣泛應(yīng)用于現(xiàn)代計(jì)算機(jī)系統(tǒng)中,它可以克服程序I/O控制方式中CPU等待時(shí)間長(zhǎng)以及系統(tǒng)串行工作的缺點(diǎn),實(shí)現(xiàn)并行工作,完成外圍設(shè)備和內(nèi)存與CPU之間的數(shù)據(jù)傳送。這種方式要求CPU與設(shè)備(或控制器)之間有相應(yīng)的中斷請(qǐng)求線,而且在設(shè)備控制器的控制狀態(tài)存放器的相應(yīng)的中斷允許位。從而,數(shù)據(jù)的輸入過(guò)程可按如下步驟操作。(1)首先,進(jìn)程需要輸入數(shù)據(jù)時(shí),通過(guò)CPU發(fā)出指令啟動(dòng)外圍設(shè)備準(zhǔn)備數(shù)據(jù)。該指令同時(shí)還將控制狀態(tài)存放器中的中斷允許位翻開,以便在需要時(shí),中斷程序可以被調(diào)用執(zhí)行。(2)在進(jìn)程發(fā)出指令啟動(dòng)設(shè)備之后,該進(jìn)程放棄處理機(jī),等待輸入完成。從而,進(jìn)程調(diào)度程序調(diào)度其他就緒進(jìn)程占據(jù)處理機(jī)。(3)當(dāng)輸入完成時(shí),I/O控制器通過(guò)中斷請(qǐng)求線向CPU發(fā)出中斷信號(hào)。CPU在接收到中斷信號(hào)之后,轉(zhuǎn)向預(yù)先設(shè)計(jì)好的中斷處理程序?qū)?shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理。(4)在以后的某個(gè)時(shí)刻,進(jìn)程調(diào)度程序選中提出請(qǐng)求并得到了數(shù)據(jù)的進(jìn)程,該進(jìn)程從指定的內(nèi)存特定單元中取出數(shù)據(jù)繼續(xù)工作。從以上數(shù)據(jù)的輸入過(guò)程可以看出,當(dāng)CPU發(fā)出啟動(dòng)設(shè)備和允許中斷指令之后,它沒(méi)有像程序I/O控制方式那樣循環(huán)地測(cè)試狀態(tài)控制存放器的狀態(tài)是否已處于完成狀態(tài)而使本身處于等待狀態(tài),相反,CPU已被調(diào)度程序分配給其他進(jìn)程執(zhí)行。當(dāng)設(shè)備將數(shù)據(jù)送入緩沖存放器并發(fā)出中斷信號(hào)之后,CPU接收中斷信號(hào)進(jìn)行中斷處理。當(dāng)然,CPU在其他的進(jìn)程執(zhí)行過(guò)程中,也可以發(fā)出啟動(dòng)不同設(shè)備的啟動(dòng)指令和允許中斷指令,從而做到設(shè)備與設(shè)備間的并行操作以及設(shè)備和CPU間的并行操作。類似地,數(shù)據(jù)的輸出過(guò)程也可以實(shí)現(xiàn)設(shè)備與設(shè)備間的并行操作以及設(shè)備和CPU間的并行操作。盡管與程序I/O控制方式相比,中斷控制方式使CPU的利用率大大提高且能支持多道程序和設(shè)備的并行操作,但仍然存在著一些缺點(diǎn),下面分兩點(diǎn)來(lái)闡述該控制方式的缺點(diǎn)?!?〕發(fā)生中斷次數(shù)較多。這是由于在I/O控制器的數(shù)據(jù)緩沖存放器裝滿數(shù)據(jù)之后將會(huì)發(fā)生中斷,而且數(shù)據(jù)緩沖存放通常較小,在一次數(shù)據(jù)傳送過(guò)程中必然會(huì)發(fā)生屢次中斷,這將耗去大量的CPU處理時(shí)間。〔2〕可能出現(xiàn)數(shù)據(jù)喪失現(xiàn)象。這是由于現(xiàn)代計(jì)算機(jī)系統(tǒng)通常配置有各種各樣的外圍設(shè)備,如果這些設(shè)備通過(guò)中斷處理方式進(jìn)行并行操作,那么由于中斷次數(shù)的急劇增加而造成CPU無(wú)法響應(yīng)中斷。另外,在中斷控制方式下,我們有這樣的假定:即外圍設(shè)備的速度非常低,而CPU處理速度非常高。也就是說(shuō),當(dāng)設(shè)備把數(shù)據(jù)放入數(shù)據(jù)緩沖存放器并發(fā)出中斷信號(hào)之后,CPU有足夠的時(shí)間在下一個(gè)(組)數(shù)據(jù)進(jìn)入數(shù)據(jù)緩沖存放器之前取走這些數(shù)據(jù)。如果外圍設(shè)備的速度也非常高,那么可能造成數(shù)據(jù)緩沖存放器的數(shù)據(jù)由于CPU來(lái)不及取走而喪失。為了克服以上缺點(diǎn),操作系統(tǒng)中引入了DMA控制方式和通道方式。5.2.3DMA控制方式DMA(DirectMemoryAccess)控制方式又稱直接存取方式。其根本思想是在外圍設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路。在DMA控制方式中,I/O控制器具有比中斷控制方式和程序I/O控制方式更強(qiáng)的功能。另外,除了控制狀態(tài)存放器和數(shù)據(jù)緩沖存放器之外,DMA控制器中還包括傳送字節(jié)計(jì)數(shù)器、內(nèi)存地址存放器等。這是由于DMA控制方式竊取或挪用CPU的一個(gè)工作周期把數(shù)據(jù)緩沖存放器中的數(shù)據(jù)直接送到內(nèi)存地址存放器所指向的內(nèi)存區(qū)域中的緣故。DMA控制器功能的增強(qiáng)具體表達(dá)在,可用它來(lái)代替CPU控制內(nèi)存和設(shè)備之間進(jìn)行成批的數(shù)據(jù)交換。批量數(shù)據(jù)(通常又叫數(shù)據(jù)塊)的傳送由計(jì)數(shù)器逐個(gè)計(jì)數(shù),并由內(nèi)存地址存放器確定內(nèi)存地址。除了在數(shù)據(jù)塊傳送開始時(shí),需要CPU的啟動(dòng)指令,在整個(gè)數(shù)據(jù)塊傳送結(jié)束時(shí),需發(fā)出中斷通知CPU進(jìn)行中斷處理之外,不再像中斷控制方式那樣需要CPU的頻繁干預(yù)。DMA控制存取方式的結(jié)構(gòu)如圖圖5-2所示。圖5-2DMA控制存取方式的結(jié)構(gòu)圖DMA控制器內(nèi)存CPUI/O設(shè)備啟動(dòng)中斷DMA控制方式的數(shù)據(jù)輸入處理過(guò)程可按如下步驟操作。(1)當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送給DMA控制器中的內(nèi)存地址存放器和傳送字節(jié)計(jì)數(shù)器;另外,還把控制狀態(tài)存放器中的中斷允許位和啟動(dòng)位置1,從而啟動(dòng)設(shè)備開始數(shù)據(jù)的輸入。(2)將要求輸入數(shù)據(jù)的進(jìn)程置等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程進(jìn)入CPU運(yùn)行。(3)在DMA控制器的直接控制下,將數(shù)據(jù)緩沖存放器中的數(shù)據(jù)連續(xù)不斷地傳送到內(nèi)存中,直到所要求的整個(gè)數(shù)據(jù)塊傳送完畢為止。(4)DMA控制器在傳送字節(jié)數(shù)完成時(shí)通過(guò)中斷請(qǐng)求線發(fā)出中斷信號(hào),CPU在接收到中斷信號(hào)后轉(zhuǎn)入中斷處理程序。中斷處理結(jié)束后再返回被中斷進(jìn)程,繼續(xù)執(zhí)行。具體的傳送過(guò)程如圖5-3所示圖5-3DMA控制器直接控制的數(shù)據(jù)傳送

內(nèi)存地址寄存器傳送字節(jié)計(jì)數(shù)器控制狀態(tài)寄存器數(shù)據(jù)緩沖寄存器DMA控制器內(nèi)存盡管DMA控制方式與中斷控制方式相比,極大提高了CPU的利用率,但是,它仍存在著一定的缺點(diǎn)?!?〕DMA控制方式對(duì)外圍設(shè)備的管理和某些操作仍由CPU控制。在一個(gè)數(shù)據(jù)塊的傳送開始和傳送結(jié)束時(shí)需要CPU的干預(yù)?!?〕一次需要傳送多個(gè)數(shù)據(jù)塊時(shí),需要CPU發(fā)出多條啟動(dòng)指令并進(jìn)行屢次中斷處理?!?〕多臺(tái)外圍設(shè)備需要多個(gè)DMA控制器,但同時(shí)使用多個(gè)DMA控制器,顯然會(huì)引起內(nèi)存地址的沖突并使得控制過(guò)程進(jìn)一步復(fù)雜化,并且多個(gè)DMA控制器的同時(shí)使用也是不經(jīng)濟(jì)的。因此,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,除了設(shè)置DMA控制器之外,還設(shè)置專門的硬件裝置——通道。5.2.4通道控制方式通道控制(ChannelControl)方式與DMA控制方式相類似,它也是一種以內(nèi)存為中心,實(shí)現(xiàn)設(shè)備和內(nèi)存直接交換數(shù)據(jù)的一種控制方式。與DMA控制方式所不同的有兩點(diǎn),第一,在DMA控制方式中,數(shù)據(jù)的傳送方向,存放數(shù)據(jù)的內(nèi)存起始地址以及傳送的數(shù)據(jù)塊長(zhǎng)度等都由CPU控制。而在通道控制方式中,這些都是由專門的輸入輸出硬件,即“通道〞來(lái)進(jìn)行控制。第二,與DMA控制方式時(shí)每臺(tái)設(shè)備至少一個(gè)DMA控制器相比,通道控制方式可以做到一個(gè)通道控制多臺(tái)設(shè)備與內(nèi)存進(jìn)行數(shù)據(jù)交換。因此,通道控制方式進(jìn)一步減輕了CPU的工作負(fù)擔(dān)和提高了計(jì)算機(jī)系統(tǒng)的并行工作程度。所謂通道(Channel),它是一個(gè)獨(dú)立于CPU的專門的輸入輸出控制的處理機(jī),它控制設(shè)備與內(nèi)存直接進(jìn)行數(shù)據(jù)交換。它有自己的通道指令,這些通道指令接受CPU啟動(dòng),并在操作結(jié)束時(shí)向CPU發(fā)出中斷信號(hào)。下面簡(jiǎn)單說(shuō)明通道命令和通道程序、通道的類型、多通路I/O系統(tǒng)、通道與CPU之間的通信。1.通道指令和通道程序通道是通過(guò)執(zhí)行通道程序來(lái)實(shí)現(xiàn)對(duì)I/O設(shè)備進(jìn)行控制的。通道程序規(guī)定了被交換的信息在主存中的位置、信息傳輸?shù)姆较?、傳輸信息的?shù)量以及控制I/O設(shè)備所需要的信息。由于通道只有少量的存放器,所以一般都將通道程序放在主存中,當(dāng)執(zhí)行通道程序時(shí)同時(shí)向主存索取通道指令。通道指令又稱為通道命令或控制字,其格式與一般的機(jī)器指令不同,如圖5-4所示。圖5-4通道指令格式OPPCA在圖5-4中,OP是操作碼,表示當(dāng)前指令是一個(gè)讀指令,還是一個(gè)寫指令,或是一個(gè)控制指令;P是通道程序結(jié)束標(biāo)志,P=1時(shí),表示通道程序已經(jīng)結(jié)束,P=0,表示通道程序尚未結(jié)束;C是計(jì)數(shù)器,記錄內(nèi)存與外設(shè)交換信息的數(shù)量;A是信息存儲(chǔ)的起始地址。3.多通路I/O系統(tǒng)由于通道的本錢高,所以通道的數(shù)量遠(yuǎn)比設(shè)備少。這樣,會(huì)因通道數(shù)量缺乏而產(chǎn)生一種“瓶頸〞現(xiàn)象,影響整個(gè)系統(tǒng)的處理能力。為了使設(shè)備能得到充分利用,在通道、控制器和設(shè)備的連接上,采用一個(gè)I/O設(shè)備與多個(gè)控制器相連,一個(gè)控制器與多個(gè)通道相連。這樣,既實(shí)現(xiàn)了多通路I/O系統(tǒng),提高了設(shè)備利用的靈活性,也提高了系統(tǒng)的可靠性。設(shè)備處理程序通過(guò)對(duì)所有通路上狀態(tài)信息的管理,找出一條能用的通路來(lái)使用所請(qǐng)求的設(shè)備。4.通道與CPU之間的通信在通道控制方式中,通道接受CPU的委托,獨(dú)立地執(zhí)行自己的通道程序,實(shí)現(xiàn)內(nèi)存到外圍設(shè)備之間的信息傳輸。當(dāng)CPU要啟動(dòng)I/O設(shè)備進(jìn)行信息傳輸時(shí),CPU只發(fā)出一條I/O指令給通道,指出它應(yīng)該執(zhí)行的I/O操作和訪問(wèn)的I/O設(shè)備。通道接到指令后,向主存索取相應(yīng)的通道程序來(lái)完成對(duì)I/O設(shè)備的控制和管理。當(dāng)通道完成了CPU委托的I/O任務(wù)后,通道向CPU發(fā)出中斷信號(hào),請(qǐng)求CPU做下一步處理。通道與CPU之間的通信方式如圖5-5所示。圖5-5通道與CPU之間的通信方式

CPU通道設(shè)備控制設(shè)備啟動(dòng)中斷5.通道控制方式的數(shù)據(jù)輸入處理過(guò)程通道控制方式的數(shù)據(jù)輸入處理過(guò)程可簡(jiǎn)單描述如下:(1)當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU即發(fā)出啟動(dòng)指令,指明I/O操作、設(shè)備號(hào)和對(duì)應(yīng)的通道。(2)當(dāng)對(duì)應(yīng)的通道接收到CPU發(fā)來(lái)的啟動(dòng)指令之后,把存放在內(nèi)存中的通道指令程序讀出,設(shè)置對(duì)應(yīng)設(shè)備的I/O控制器中的控制狀態(tài)存放器。(3)然后設(shè)備根據(jù)通道指令的要求,把數(shù)據(jù)送往內(nèi)存中指定區(qū)域。(4)假設(shè)數(shù)據(jù)傳送結(jié)束,I/O控制器通過(guò)中斷請(qǐng)求線,發(fā)出中斷信號(hào)請(qǐng)求CPU做中斷處理。第5步與DMA控制方式時(shí)相同,即中斷處理結(jié)束后CPU返回被中斷進(jìn)程處繼續(xù)執(zhí)行。注意,在第〔1〕步,要求數(shù)據(jù)的進(jìn)程只有在調(diào)度程序選中它之后,才能對(duì)所得到的數(shù)據(jù)進(jìn)行加工處理。5.3緩沖管理緩沖管理的根本思想是在CPU和外圍設(shè)備之間建立緩沖區(qū),用于暫存CPU和外圍設(shè)備之間交換的數(shù)據(jù),從而緩和CPU和外圍設(shè)備速度不匹配所產(chǎn)生的矛盾。同時(shí),緩沖區(qū)的使用使得一次輸入的信息能夠?qū)掖问褂谩?.3.1緩沖的引入5.3.2單緩沖與雙緩沖對(duì)于塊設(shè)備,采用單緩沖輸出的過(guò)程可簡(jiǎn)單描述為:當(dāng)需要將數(shù)據(jù)塊寫出時(shí),首先將數(shù)據(jù)塊從用戶工作空間復(fù)制到系統(tǒng)緩沖區(qū),這時(shí)可以繼續(xù)執(zhí)行用戶進(jìn)程,并可在需要時(shí)換出主存。操作系統(tǒng)最終會(huì)將系統(tǒng)緩沖區(qū)的內(nèi)容輸出到設(shè)備上,這通常稱為延遲寫。對(duì)于字符設(shè)備,單緩沖的使用可以有兩種方式:一種是一次一行的方式;另一種是一次一個(gè)字節(jié)的方式。前一種方式適用于滾屏終端,因?yàn)樵谶@種方式下,用戶的輸入是按行進(jìn)行的,并以回車標(biāo)志作為一行的結(jié)束,對(duì)終端的輸出也是一次一行。行式打印機(jī)是這種設(shè)備的一個(gè)典型。采用一次一行方式時(shí),緩沖區(qū)用來(lái)保存一行。輸入時(shí),用戶進(jìn)程阻塞至整行內(nèi)容全部進(jìn)入才被換醒。輸出時(shí),用戶進(jìn)程將要輸出的一行信息送人緩沖區(qū)后才可繼續(xù)運(yùn)行,不必阻塞。但是,假設(shè)緩沖區(qū)非空,用戶進(jìn)程又需要將新的一行送入緩沖區(qū),此時(shí),用戶進(jìn)程需要掛起等待緩沖區(qū)為空。采用一次一個(gè)字節(jié)的方式時(shí),用戶進(jìn)程與操作系統(tǒng)之間的交互方式遵循生產(chǎn)者與消費(fèi)者的模式。5.3.3環(huán)形緩沖從以上分析知道,引入雙緩沖雖然能夠?qū)崿F(xiàn)CPU和I/O設(shè)備之間的并行操作,但是效果并不十分理想,為了更有效地解決多個(gè)設(shè)備的并行工作問(wèn)題,可以通過(guò)增加系統(tǒng)緩沖區(qū)的數(shù)目來(lái)到達(dá)更高程度的并行。一般情況下都采用有限數(shù)目的緩沖區(qū)循環(huán)使用,以到達(dá)無(wú)限個(gè)緩沖區(qū)的效果,這就是環(huán)形緩沖。假設(shè)輸入操作指針pf指示程序或進(jìn)程下一次可用的已經(jīng)裝滿數(shù)據(jù)的緩沖區(qū)CF;指針pb指示輸入設(shè)備下一次可用的空的緩沖區(qū)CB;current指針指示程序或進(jìn)程正在使用的當(dāng)前緩沖區(qū)CC。此時(shí),計(jì)算進(jìn)程和I/O進(jìn)程并行執(zhí)行,并且以各自的速度獨(dú)立地向前推進(jìn),指針pf和指針pb不斷地沿順時(shí)針?lè)较蛞苿?dòng)。對(duì)于輸入操作,環(huán)形緩沖區(qū)的工作情況如圖5-6所示。圖5-6環(huán)形緩沖區(qū)的工作情況

CBCBCFCBCCCFpfpbcurrent1.指針移動(dòng)在圖5-6中,實(shí)現(xiàn)指針的移動(dòng)一般是通過(guò)求余進(jìn)行的。對(duì)于環(huán)形緩沖區(qū)中的假設(shè)干個(gè)緩沖區(qū),其順序編號(hào)為0、1、2、……、n-1。指針移動(dòng)移動(dòng)過(guò)程可簡(jiǎn)單描述如下:〔1〕初始時(shí),環(huán)形緩沖區(qū)整個(gè)為空,I/O進(jìn)程啟動(dòng),指針pb指向編號(hào)為0的緩沖區(qū),開始從外圍設(shè)備向該緩沖區(qū)放入數(shù)據(jù)。當(dāng)0緩沖區(qū)數(shù)據(jù)滿時(shí),將指針pf指向該緩沖區(qū),轉(zhuǎn)向〔2〕?!?〕當(dāng)指針pb所指向的當(dāng)前編號(hào)為i的緩沖區(qū)裝滿數(shù)據(jù),且指針pf和指針current所指向的緩沖區(qū)位置不是[(i+1)modn],那么將指針pb指向該位置的緩沖區(qū),否那么,I/O進(jìn)程進(jìn)入等待狀態(tài)?!?〕當(dāng)計(jì)算進(jìn)程啟動(dòng)時(shí),將指針current指向指針pf所指向環(huán)形緩沖區(qū)中的當(dāng)前第i個(gè)緩沖區(qū),假設(shè)指針pb所指向的緩沖區(qū)位置不是[(i+1)modn],將指針pf指向該位置。2.指針移動(dòng)出現(xiàn)情況隨著指針在環(huán)形緩沖區(qū)中不斷的移動(dòng),指針pf和指針pb所指示的位置會(huì)出現(xiàn)以下兩種情況:(1)指針pf追上指針pb。這說(shuō)明輸入數(shù)據(jù)的速度小于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,使所有的緩沖區(qū)都已抽空,這時(shí),應(yīng)該讓計(jì)算進(jìn)程等待,直至有滿緩沖為止,系統(tǒng)受I/O制約。(2)指針pb追上指針pf。這說(shuō)明輸入進(jìn)程輸入數(shù)據(jù)的速度大于計(jì)算進(jìn)程處理數(shù)據(jù)的速度而使全部緩沖區(qū)都滿,那么輸入進(jìn)程應(yīng)該等待,直到有空緩沖區(qū)為止,系統(tǒng)受計(jì)算的制約。上述情況說(shuō)明在設(shè)備管理子系統(tǒng)中,引入緩沖可有效地改善CPU與I/O設(shè)備之間速度不匹配的矛盾。在多道程序環(huán)境中,當(dāng)系統(tǒng)中有多個(gè)I/O設(shè)備和多個(gè)進(jìn)程同時(shí)活潑時(shí),緩沖區(qū)是提高系統(tǒng)性能、改善進(jìn)程運(yùn)行時(shí)間的有效工具之一。然而,當(dāng)系統(tǒng)中用戶進(jìn)程的平均I/O需求超過(guò)了I/O設(shè)備的處理能力且用戶不重復(fù)訪問(wèn)相同數(shù)據(jù)時(shí),無(wú)論開辟多少個(gè)緩沖區(qū),都無(wú)法使I/O操作的速度跟得上進(jìn)程的運(yùn)行速度,緩沖區(qū)的作用會(huì)隨即減弱,進(jìn)程將不得不在處理完一批數(shù)據(jù)后,等待I/O設(shè)備。5.3.4緩沖池前面所介紹的無(wú)論是單緩沖、雙緩沖還是環(huán)形緩沖,它們都是輸入緩沖,僅適用于輸入情況;輸出緩沖僅用于輸出情況。緩沖池的引入是為了進(jìn)一步提高資源的利用率,將輸入和輸出多緩沖區(qū)結(jié)合起來(lái)形成的,它既能用于輸入緩沖,也能用于輸出緩沖。1.緩沖池的結(jié)構(gòu)(1)緩沖池中緩沖區(qū)的結(jié)構(gòu)為了能夠深入討論緩沖池的管理,先來(lái)了解緩沖池的結(jié)構(gòu)。通常緩沖池包含多個(gè)緩沖區(qū),而每一個(gè)緩沖區(qū)又由兩局部組成,一局部是緩沖首部,它用來(lái)標(biāo)識(shí)該緩沖器和用于管理,而另一局部是緩沖體,它用于存放數(shù)據(jù),且這兩局部存在一一對(duì)應(yīng)的映射關(guān)系。對(duì)緩沖池的管理是通過(guò)對(duì)每一個(gè)緩沖器的緩沖首部進(jìn)行操作來(lái)實(shí)現(xiàn)的。緩沖池中緩沖區(qū)的結(jié)構(gòu)如圖5-7所示,其中緩沖首部包括設(shè)備號(hào)、設(shè)備上的數(shù)據(jù)塊號(hào)〔對(duì)于塊設(shè)備而言〕、互斥標(biāo)識(shí)位以及緩沖隊(duì)列連接指針和緩沖器號(hào)等。圖5-7緩沖池中緩沖區(qū)的結(jié)構(gòu)設(shè)備號(hào)數(shù)據(jù)塊號(hào)互斥標(biāo)識(shí)位連接指針緩沖器號(hào)緩沖體(2)緩沖池的緩沖區(qū)隊(duì)列緩沖池中有3種類型的緩沖區(qū),即空白緩沖區(qū)(empty)、裝滿輸人數(shù)據(jù)的緩沖區(qū)(in)、裝滿輸出數(shù)據(jù)的緩沖區(qū)(out)。根據(jù)這3種類型緩沖區(qū)被分別建立在3種不同的緩沖區(qū)隊(duì)列:①空白緩沖隊(duì)列em,其隊(duì)首指針為F(em),隊(duì)尾指針為T(em);②裝滿輸入數(shù)據(jù)的輸入緩沖隊(duì)列in,其隊(duì)首指針為F(in),隊(duì)尾指針為T(in);③裝滿輸出數(shù)據(jù)的輸出緩沖隊(duì)列out,其隊(duì)首指針為F(out),隊(duì)尾指針為T(out)。其隊(duì)列構(gòu)成如圖5-8所示。圖5-8緩沖區(qū)隊(duì)列F(em)F(em)F(em)T(em)T(in)T(out)35012689(3)緩沖池的工作緩沖區(qū)除了三種緩沖隊(duì)列之外,系統(tǒng)(或用戶進(jìn)程)從這三種隊(duì)列中申請(qǐng)和取出緩沖區(qū),并用得到的緩沖區(qū)進(jìn)行存數(shù)、取數(shù)操作,在存數(shù)、取數(shù)操作結(jié)束后,再將緩沖區(qū)放入相應(yīng)的隊(duì)列。通常,這些緩沖區(qū)被稱為工作緩沖區(qū)。因此,在緩沖池中,有4種類型的工作緩沖區(qū),即:①用于收容設(shè)備輸入數(shù)據(jù)的收容輸入緩沖區(qū)(hin〕。輸入進(jìn)程要想輸人數(shù)據(jù)時(shí),從空緩沖隊(duì)列中摘取一個(gè)空的緩沖區(qū),作為收容輸入工作緩沖區(qū),提供給輸入進(jìn)程往里裝入輸入的數(shù)據(jù),裝滿后插入到裝滿輸人數(shù)據(jù)的緩沖區(qū)隊(duì)供計(jì)算進(jìn)程消耗。②用于提取設(shè)備輸入數(shù)據(jù)的提取輸入緩沖區(qū)(sin〕。計(jì)算進(jìn)程需要數(shù)據(jù)時(shí),從裝滿輸入數(shù)據(jù)的緩沖隊(duì)列中摘取一個(gè)緩沖區(qū),作為提取輸入工作緩沖區(qū),將此緩沖區(qū)的數(shù)據(jù)提取完后,它變成了空緩沖區(qū),然后將其插入到空緩沖隊(duì)中。③用于收容CPU輸出數(shù)據(jù)的收容輸出緩沖區(qū)(hout〕。當(dāng)計(jì)算進(jìn)程需要將計(jì)算結(jié)果輸出時(shí),從空緩沖隊(duì)列中摘取一個(gè)空緩沖區(qū),作為收容輸出緩沖區(qū),計(jì)算進(jìn)程將計(jì)算結(jié)果放入其中,裝滿后將其插入裝滿輸出數(shù)據(jù)的緩沖隊(duì)中。④用于提取CPU輸出數(shù)據(jù)的提取輸出緩沖區(qū)(sout)。當(dāng)輸出進(jìn)程要想輸出數(shù)據(jù)時(shí),從裝滿輸出數(shù)據(jù)的緩沖區(qū)隊(duì)列中摘取一個(gè)裝滿輸出數(shù)據(jù)的緩沖區(qū),輸出進(jìn)程從中輸出數(shù)據(jù),輸出結(jié)束后,將其插入到空緩沖隊(duì)列中。緩沖池緩沖區(qū)(hin〕緩沖區(qū)(sout)緩沖區(qū)(sin〕緩沖區(qū)(hout〕收容輸入提取輸入收容輸出提取輸出外圍設(shè)備CPU緩沖池的工作緩沖區(qū)如圖5-9所示。圖5-9緩沖池的工作緩沖區(qū)緩沖池緩沖區(qū)(hin)緩沖區(qū)(sout)緩沖區(qū)(sin)緩沖區(qū)(hout)收容輸入提取輸入收容輸出提取輸出外圍設(shè)備CPU2.緩沖池管理對(duì)緩沖池的管理主要包含如下四個(gè)操作步驟:(1)把緩沖區(qū)按一定的選取規(guī)那么,插入相應(yīng)的緩沖區(qū)隊(duì)列的過(guò)程add_buf(type,number);(2)從三種緩沖區(qū)隊(duì)列中按一定的選取規(guī)那么,取出一個(gè)緩沖區(qū)的過(guò)程take_buf(type);(3)供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊(duì)列的過(guò)程put_buf(type,work_buf)。(4)供進(jìn)程申請(qǐng)緩沖區(qū)用的過(guò)程get_buf(type,number);其中,參數(shù)type表示緩沖隊(duì)列類型,number為緩沖區(qū)號(hào),而work_buf那么表示工作緩沖區(qū)類型。應(yīng)用這四個(gè)操作過(guò)程,可將緩沖池的工作過(guò)程簡(jiǎn)單描述如下:首先,輸入進(jìn)程調(diào)用get_buf(em,number)過(guò)程從空白緩沖區(qū)隊(duì)列中取出一個(gè)緩沖號(hào)為number的空白緩沖區(qū),將其作為收容輸入緩沖區(qū)hin,當(dāng)hin中裝滿了由輸入設(shè)備輸入的數(shù)據(jù)之后,系統(tǒng)調(diào)用過(guò)程put_buf(in,hin)將該緩沖區(qū)插入輸入緩沖區(qū)隊(duì)列in中。其次,當(dāng)進(jìn)程需要輸出數(shù)據(jù)時(shí),輸出進(jìn)程經(jīng)過(guò)緩沖管理程序調(diào)用過(guò)程get_buf(em,number)從空白緩沖區(qū)隊(duì)列中取出一個(gè)空白緩沖區(qū)number作為收容輸出緩沖區(qū)hout,待hout中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調(diào)用過(guò)程put_buf(out,hout)將該緩沖區(qū)插入輸出緩沖區(qū)隊(duì)列out。對(duì)緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是通過(guò)get_buf()和put_buf()兩個(gè)過(guò)程來(lái)實(shí)現(xiàn)的。get_buf(out,number)從輸出緩沖隊(duì)列中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)number,將其作為sout。當(dāng)sout中數(shù)據(jù)輸出完畢時(shí),系統(tǒng)調(diào)用過(guò)程put_buf(em,sout)將該緩沖區(qū)插入空白緩沖隊(duì)列。而get_buf(in,number)那么從輸入緩沖隊(duì)列中取出一個(gè)裝滿輸入數(shù)據(jù)的緩沖區(qū)number作為輸入緩沖區(qū)sin,當(dāng)CPU從中提取完所需數(shù)據(jù)之后,系統(tǒng)調(diào)用過(guò)程put_buf(em,sin)將該緩沖區(qū)釋放并插入空白緩沖隊(duì)列em中。5.4設(shè)備分配

5.4.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)設(shè)備的分配和管理主要依據(jù)的數(shù)據(jù)結(jié)構(gòu)有設(shè)備控制表、控制器控制表、通道控制表、系統(tǒng)設(shè)備表以及資源信號(hào)量。1.設(shè)備控制表設(shè)備控制表(DeviceControlTable,DCT)是用來(lái)反映設(shè)備的特性、設(shè)備和I/O控制器的連接情況,在設(shè)備控制表中主要包括設(shè)備標(biāo)識(shí)、設(shè)備類型、設(shè)備狀態(tài)和等待使用該設(shè)備的進(jìn)程隊(duì)列等。系統(tǒng)中每個(gè)設(shè)備都必須有一張DCT,且在系統(tǒng)生成時(shí)或在該設(shè)備和系統(tǒng)連接時(shí)創(chuàng)立,但表中的內(nèi)容那么根據(jù)系統(tǒng)執(zhí)行情況而被動(dòng)態(tài)地修改。具體來(lái)說(shuō),設(shè)備控制表主要包括以下內(nèi)容:(1)設(shè)備地址或設(shè)備號(hào),由計(jì)算機(jī)原理課可以知道,每個(gè)設(shè)備都有相應(yīng)的地址或設(shè)備號(hào)。這個(gè)地址既可以是和內(nèi)存統(tǒng)一編址的,也可以是單獨(dú)編址的。(2)設(shè)備標(biāo)識(shí)符,設(shè)備標(biāo)識(shí)符用來(lái)區(qū)別設(shè)備。(3)設(shè)備類型,反映設(shè)備的特性,例如表示是終端設(shè)備、塊設(shè)備或字符設(shè)備等。(4)設(shè)備狀態(tài),指設(shè)備是處于忙狀態(tài),還是空閑狀態(tài)。(5)I/O控制器指針,該指針指向該設(shè)備相連接的I/O控制器。如果設(shè)備與內(nèi)存之間只有一個(gè)通道,那么設(shè)備只連接一個(gè)控制器,在該表中填寫與此設(shè)備相連的控制器控制表的首地址,如果設(shè)備與內(nèi)存之間有多個(gè)通道,那么設(shè)備可連接多個(gè)控制器,在該表上填寫的是相應(yīng)的多個(gè)控制器控制表的首地址。(6)等待隊(duì)列指針,但凡請(qǐng)求該設(shè)備不能滿足的進(jìn)程,將進(jìn)程控制塊(PCB)按照一定的策略組成等待隊(duì)列,稱為設(shè)備請(qǐng)求隊(duì)列,其隊(duì)首和隊(duì)尾指針存放在DCT中。2.控制器控制表控制器控制表(ControllerControlTable,COCT)是用來(lái)反映I/O控制器的使用狀態(tài)以及和通道的連接情況等(在DMA控制方式時(shí),該項(xiàng)是沒(méi)有的),系統(tǒng)中每個(gè)控制器都有一張COCT表。3.通道控制表通道控制表(ChannelControlTable,CHCT)只在通道控制方式的系統(tǒng)中存在,也是每個(gè)通道一張表。CHCT包括通道標(biāo)識(shí)符、通道忙或閑的標(biāo)識(shí)、等待獲得該通道的進(jìn)程等待隊(duì)列的隊(duì)首指針與隊(duì)尾指針等。4.系統(tǒng)設(shè)備表整個(gè)系統(tǒng)只有一張系統(tǒng)設(shè)備表(SystemDeviceTable,SDT),它用來(lái)記錄已被連接到系統(tǒng)中的全部物理設(shè)備的信息,每一個(gè)設(shè)備在此表中都有一個(gè)表項(xiàng),而每個(gè)表項(xiàng)應(yīng)包括以下3項(xiàng)內(nèi)容:(1)DCT指針,該指針指向相應(yīng)設(shè)備的設(shè)備控制表。(2)進(jìn)程標(biāo)識(shí)符。當(dāng)此設(shè)備分配給了某個(gè)正在執(zhí)行的進(jìn)程時(shí),需在系統(tǒng)設(shè)備表的該設(shè)備所對(duì)應(yīng)的表項(xiàng)上填寫進(jìn)程標(biāo)識(shí)符。(3)設(shè)備類型和設(shè)備標(biāo)識(shí)符,該項(xiàng)的意義與DCT中的相同。應(yīng)用SDT表的主要作用在于準(zhǔn)確反映系統(tǒng)中所有設(shè)備資源的狀態(tài),也即系統(tǒng)中有多少設(shè)備,其中有多少是空閑的,沒(méi)有被分配,而又有多少已經(jīng)分配給了哪些進(jìn)程使用。5.資源信號(hào)量在系統(tǒng)中,為了描述某一類資源而引人了資源信號(hào)量(resourcesemaphore,RS)的概念。資源信號(hào)量可以用來(lái)描述I/O設(shè)備和存儲(chǔ)設(shè)備的數(shù)量。信號(hào)量包括:可用資源隊(duì)列指針和資源信號(hào)量等待隊(duì)列的指針。一個(gè)系統(tǒng)中可能包含假設(shè)干個(gè)同樣類型的物理資源,將其鏈成一個(gè)隊(duì)列,稱為該資源信號(hào)量的可用資源隊(duì)列。系統(tǒng)中但凡因?yàn)檎?qǐng)求該類資源未得到滿足而被阻塞的進(jìn)程,按一定的策略將其進(jìn)程控制塊排成隊(duì)列,稱為資源信號(hào)量的等待隊(duì)列。5.4.2設(shè)備分配思想設(shè)備的分配思想主要是當(dāng)設(shè)備資源出現(xiàn)共享競(jìng)爭(zhēng)時(shí),按照設(shè)備的資源屬性,即設(shè)備的獨(dú)占、共享和虛擬來(lái)制定分配策略。具體實(shí)現(xiàn)是由操作系統(tǒng)中的設(shè)備分配程序負(fù)責(zé)對(duì)提出設(shè)備請(qǐng)求的進(jìn)程分配設(shè)備。這種分配還應(yīng)包括對(duì)設(shè)備支持部件,如控制器、通道等的分配,以保證分配的完整性和合理性。設(shè)備分配與進(jìn)程調(diào)度也很類似,同樣可以采用諸如先來(lái)先效勞、最高優(yōu)先級(jí)優(yōu)先等分配算法。設(shè)備分配可以采用靜態(tài)分配和動(dòng)態(tài)分配兩種方法。靜態(tài)分配又稱一次性分配,是在進(jìn)程建立或進(jìn)程執(zhí)行前將它需要的設(shè)備,一次分配給進(jìn)程。進(jìn)程一旦獲得設(shè)備,一直保持到它不再使用時(shí)才釋放。這種分配方式簡(jiǎn)單,不會(huì)引起死鎖,但設(shè)備利用率不高。動(dòng)態(tài)分配是對(duì)每次單獨(dú)的請(qǐng)求做出響應(yīng)。進(jìn)程在執(zhí)行過(guò)程中需要設(shè)備時(shí),動(dòng)態(tài)提出申請(qǐng),系統(tǒng)根據(jù)當(dāng)時(shí)的情況,采取一定的算法進(jìn)行分配。進(jìn)程使用設(shè)備后,動(dòng)態(tài)提出釋放請(qǐng)求,由系統(tǒng)收回供其他進(jìn)程使用。如還需要某設(shè)備,可再次提出申請(qǐng)。這種方式靈活,設(shè)備利用率高。但由于設(shè)備的資源屬性不同導(dǎo)致分配方式也不同。例如,對(duì)于獨(dú)享設(shè)備,就不能采取共享分配方式。這種設(shè)備不能在一個(gè)進(jìn)程使用期間同時(shí)讓另一進(jìn)程使用,至少在一個(gè)特定的時(shí)間內(nèi)不允許另外的進(jìn)程使用,只能以獨(dú)享方式分配,即以設(shè)備為單位進(jìn)行分配。分配給一個(gè)進(jìn)程后,在它未釋放之前不能分配給另外的進(jìn)程。因此,為了有序地分配設(shè)備,必須具有一個(gè)合理的設(shè)備分配原那么。設(shè)備分配原那么主要取決于如下4個(gè)因素。5.4.3設(shè)備分配程序設(shè)備分配思想是通過(guò)設(shè)備分配程序加以實(shí)現(xiàn)的,下面就從設(shè)備分配的過(guò)程和設(shè)備分配算法兩個(gè)角度來(lái)分別闡述。1.設(shè)備分配的過(guò)程當(dāng)系統(tǒng)具備了上述數(shù)據(jù)結(jié)構(gòu),并且確定了一定的分配原那么時(shí),如果某個(gè)進(jìn)程提出了I/O請(qǐng)求,那么設(shè)備分配程序即按照如下步驟進(jìn)行設(shè)備的分配,如圖5-10所示。(1)根據(jù)進(jìn)程提出的物理設(shè)備名檢索系統(tǒng)設(shè)備表SDT,從中找到該物理設(shè)備的設(shè)備控制表DCT。(2)檢查DCT中的狀態(tài)信息字段,了解該設(shè)備是否處于“忙〞狀態(tài)。假設(shè)是,那么將該進(jìn)程插入到該設(shè)備的等待隊(duì)列中等待;假設(shè)該設(shè)備空閑,系統(tǒng)按照一定的算法計(jì)算分配設(shè)備的平安性;如果分配不會(huì)產(chǎn)生死鎖,那么調(diào)用分配子程序分配該設(shè)備給進(jìn)程,否那么,仍將該進(jìn)程插入到等待隊(duì)列中。(3)當(dāng)設(shè)備分配給請(qǐng)求I/O的進(jìn)程后,可從該設(shè)備的設(shè)備控制表(DCT)中的與該設(shè)備相連的控制器表指針一欄找到與此設(shè)備相連的控制器控制表(COCT)。(4)檢查COCT中的狀態(tài)信息字段,從而判斷控制器是否處于“忙〞狀態(tài)。假設(shè)是,那么把請(qǐng)求I/O的進(jìn)程插入到該控制器的等待隊(duì)列上;否那么,分配控制器給進(jìn)程。(5)通過(guò)COCT中的通道表指針,檢查與此控制器相連的通道的狀態(tài)。假設(shè)通道處于“忙〞狀態(tài),那么將請(qǐng)求I/O的進(jìn)程插入到該通道的等待隊(duì)列上等待;假設(shè)不忙,那么分配通道給進(jìn)程。至此,如果某個(gè)進(jìn)程在經(jīng)過(guò)上述過(guò)程處理后,獲得了設(shè)備、控制器和通道,那么可在設(shè)備處理程序〔將在5.5節(jié)介紹〕的控制下,啟動(dòng)I/O設(shè)備,開始進(jìn)行信息的傳送了。多通路I/O系統(tǒng)中的設(shè)備分配程序的分配過(guò)程大體上和上述過(guò)程一致,只是一臺(tái)I/O設(shè)備可連接幾個(gè)控制器;一個(gè)控制器又可連接幾個(gè)通道。考慮用戶程序與設(shè)備的無(wú)關(guān)性,系統(tǒng)可選取該類設(shè)備中的任意一個(gè)設(shè)備分配給進(jìn)程。因此,只有此類設(shè)備中的所有設(shè)備都忙,才將進(jìn)程插入到該設(shè)備的等待隊(duì)列中。2.設(shè)備分配的算法與進(jìn)程調(diào)度相似,設(shè)備分配中的動(dòng)態(tài)分配也是基于一定的分配算法的。常用的分配算法有先請(qǐng)求先分配、高優(yōu)先級(jí)優(yōu)先分配算法等。圖5-10設(shè)備分配過(guò)程進(jìn)程提出設(shè)備使用請(qǐng)求根據(jù)SDT查找該設(shè)備的DCT根據(jù)DCT確定設(shè)備忙否?將進(jìn)程插入此設(shè)備等待隊(duì)列分配設(shè)備給進(jìn)程查對(duì)應(yīng)的設(shè)備控制器忙否?將進(jìn)程插入此控制器等待隊(duì)列分配控制器給進(jìn)程查對(duì)應(yīng)的設(shè)備通道忙否?將進(jìn)程插入此通道等待隊(duì)列分配通道給進(jìn)程設(shè)備分配完畢,轉(zhuǎn)到設(shè)備處理程序YYYNNN(1)先請(qǐng)求先分配當(dāng)有多個(gè)進(jìn)程對(duì)某一設(shè)備提出I/O請(qǐng)求時(shí),或者是在同一設(shè)備上進(jìn)行屢次I/O操作時(shí),系統(tǒng)按提出I/O請(qǐng)求的先后順序,將進(jìn)程發(fā)出的I/O請(qǐng)求命令排成隊(duì)列,其隊(duì)首指向被請(qǐng)求設(shè)備的DCT。當(dāng)該設(shè)備空閑時(shí),系統(tǒng)從該設(shè)備的請(qǐng)求隊(duì)列的隊(duì)首取下一個(gè)I/O請(qǐng)求消息,將設(shè)備分配給發(fā)出這個(gè)請(qǐng)求消息的進(jìn)程。(2)高優(yōu)先級(jí)優(yōu)先分配高優(yōu)先級(jí)是指發(fā)出I/O請(qǐng)求命令的某個(gè)進(jìn)程本身的優(yōu)先級(jí)別高。這種分配算法和進(jìn)程調(diào)度的優(yōu)先數(shù)法是一致的,即進(jìn)程的優(yōu)先級(jí)高,它的I/O請(qǐng)求也優(yōu)先予以滿足。對(duì)于相同優(yōu)先級(jí)的進(jìn)程來(lái)說(shuō),那么按先請(qǐng)求先分配算法分配。因此,優(yōu)先級(jí)高者先分配算法把請(qǐng)求某設(shè)備的I/O請(qǐng)求命令按進(jìn)程的優(yōu)先級(jí)組成隊(duì)列,從而保證在該設(shè)備空閑時(shí),系統(tǒng)能從I/O請(qǐng)求隊(duì)列隊(duì)首取下一個(gè)具有最高優(yōu)先級(jí)進(jìn)程發(fā)來(lái)的I/O請(qǐng)求命令,并將設(shè)備分配給發(fā)出該命令的進(jìn)程。所有的字符設(shè)備都是獨(dú)占設(shè)備并且屬于慢速設(shè)備,本質(zhì)上屬于順序存取設(shè)備。因此,如果一個(gè)進(jìn)程需要某臺(tái)字符設(shè)備與內(nèi)存進(jìn)行數(shù)據(jù)交換時(shí),由于字符設(shè)備傳送數(shù)據(jù)速度慢,進(jìn)程常常要等待較長(zhǎng)時(shí)間,并且在該數(shù)據(jù)交換完成之前,其他進(jìn)程是不能在同一時(shí)刻訪問(wèn)這臺(tái)設(shè)備的,即使設(shè)備利用率較高的動(dòng)態(tài)分配也不能真正提高這類設(shè)備的利用率。如果一個(gè)進(jìn)程正在使用這類設(shè)備進(jìn)行大量的數(shù)據(jù)交換,其他需要同時(shí)訪問(wèn)該設(shè)備的進(jìn)程就需要等待較長(zhǎng)的時(shí)間后,才能進(jìn)行輸入或輸出的數(shù)據(jù)交換,顯然,這降低了整個(gè)系統(tǒng)的并行處理能力。圖5-11假脫機(jī)示意圖進(jìn)程A進(jìn)程B進(jìn)程CSPOOLING技術(shù)外圍設(shè)備實(shí)際I/O端虛擬I/O端圖5-12SPOOLING系統(tǒng)的組成輸入進(jìn)程輸入設(shè)備輸出設(shè)備輸出進(jìn)程輸出緩沖區(qū)輸入緩沖區(qū)輸入井輸出井內(nèi)存外存儲(chǔ)器5.5設(shè)備處理

設(shè)備處理是指在系統(tǒng)為請(qǐng)求的進(jìn)程分配了設(shè)備及相應(yīng)的數(shù)據(jù)通路之后,啟動(dòng)設(shè)備去進(jìn)行實(shí)際的I/O操作,它通常由設(shè)備驅(qū)動(dòng)程序和I/O中斷效勞程序配合完成。1.設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序是進(jìn)程與設(shè)備控制器之間的通信程序,它接收來(lái)自上層軟件的、抽象的I/O命令,再把它轉(zhuǎn)換成具體要求后,發(fā)送給設(shè)備控制器,從而啟動(dòng)設(shè)備進(jìn)行數(shù)據(jù)傳送。它通常由一組子程序組成,包括該設(shè)備的輸入/輸出操作子程序、中斷處理子程序、設(shè)備初始化子程序、設(shè)備配置子程序等。下面從設(shè)備驅(qū)動(dòng)程序具備的特點(diǎn)及其處理過(guò)程兩個(gè)方面來(lái)了解設(shè)備驅(qū)動(dòng)程序。(1)設(shè)備驅(qū)動(dòng)程序的特點(diǎn)設(shè)備驅(qū)動(dòng)程序的特點(diǎn)表現(xiàn)在設(shè)備驅(qū)動(dòng)程序與一般的應(yīng)用程序或系統(tǒng)程序之間,存在以下的明顯差異:1)驅(qū)動(dòng)程序主要是在請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之間的一個(gè)通信程序。它將進(jìn)程的I/O請(qǐng)求傳送給控制器,而把設(shè)備控制器中所記錄的設(shè)備狀態(tài)、I/O操作完成情況,反映給請(qǐng)求I/O的進(jìn)程。2)驅(qū)動(dòng)程序與I/O設(shè)備的特性緊密相關(guān)。因此,對(duì)于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動(dòng)程序。例如,可以為相同的多個(gè)終端設(shè)置一個(gè)終端驅(qū)動(dòng)程序,即使是同一類型的設(shè)備,由于生產(chǎn)廠家不同而并不完全兼容,因而也需分別為它們配置不同的驅(qū)動(dòng)程序。3)驅(qū)動(dòng)程序與I/O控制方式緊密相關(guān)。常用的設(shè)備控制方式是中斷驅(qū)動(dòng)和DMA控制方式。這兩種方式的驅(qū)動(dòng)程序明顯不同,因?yàn)榍罢邞?yīng)按數(shù)組方式啟動(dòng)設(shè)備并進(jìn)行中斷處理,后者是以成批數(shù)據(jù)分段處理。4)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一局部程序必須用匯編語(yǔ)言書寫,目前有很多驅(qū)動(dòng)程序,其根本局部已經(jīng)固化,放在ROM中,例如,DOS中的BIOS。(2)設(shè)備驅(qū)動(dòng)程序的處理過(guò)程1)將抽象要求轉(zhuǎn)換成具體要求。操作系統(tǒng)對(duì)用戶屏蔽了有關(guān)物理設(shè)備的具體細(xì)節(jié),并提供給用戶一個(gè)統(tǒng)一的I/O接口。因此,用戶進(jìn)程或上層軟件發(fā)出的I/O請(qǐng)求通常只能是一些抽象的命令,驅(qū)動(dòng)程序必須將這些命令按設(shè)備控制器所要求的格式轉(zhuǎn)換成具體的命令,如將read命令中磁盤的塊號(hào)按地址存放器的格式轉(zhuǎn)換成盤面、磁道以及扇區(qū)號(hào)。2)檢查I/O請(qǐng)求的合法性。每種設(shè)備都只能完成一組特定的功能,設(shè)備驅(qū)動(dòng)程序必須檢查用戶提出的I/O請(qǐng)求,假設(shè)該設(shè)備不支持這次I/O請(qǐng)求,那么認(rèn)為這次I/O請(qǐng)求非法。對(duì)某些設(shè)備,如對(duì)于磁盤上的文件操作,假設(shè)它們當(dāng)前的翻開方式是讀,那么用戶的寫請(qǐng)求也必然被拒絕。3)讀出和檢查設(shè)備的狀態(tài)。在啟動(dòng)設(shè)備之前,驅(qū)動(dòng)程序要從設(shè)備控制器的狀態(tài)存放器中讀出設(shè)備的狀態(tài),僅當(dāng)它處于空閑狀態(tài)時(shí),才能啟動(dòng)其設(shè)備控制器,否那么只能將相應(yīng)的I/O請(qǐng)求插入請(qǐng)求I/O的隊(duì)列。4)傳送必要的參數(shù)。對(duì)帶有參數(shù)的I/O命令,驅(qū)動(dòng)程序必須將這些參數(shù)(如讀盤時(shí)的磁盤地址、內(nèi)存地址、本次要傳送的字節(jié)數(shù)等)傳送到設(shè)備控制器的相應(yīng)存放器中。對(duì)于字符設(shè)備,假設(shè)發(fā)出的是寫命令,驅(qū)動(dòng)程序還必須把輸出數(shù)據(jù)寫入控制器的數(shù)據(jù)存放器。5)工作方式的設(shè)置。有些設(shè)備可具有多種工作方式,典型的情況是利用RS-232接口進(jìn)行異步通信。在啟動(dòng)該接口之前,應(yīng)先按通信規(guī)程設(shè)定下述參數(shù):波特率、奇偶校驗(yàn)方式、停止位數(shù)及數(shù)據(jù)字節(jié)長(zhǎng)度等。6)啟動(dòng)I/O設(shè)備。在完成上述各項(xiàng)準(zhǔn)備工作后,驅(qū)動(dòng)程序可以向控制器的命令存放器傳送相應(yīng)的命令,啟動(dòng)I/O設(shè)備開始I/O操作。驅(qū)動(dòng)程序發(fā)出I/O命令后,根本的I/O操作是在設(shè)備控制器的控制下進(jìn)行的。通常I/O操作所要完成的工作較多,需要一定的時(shí)間。因此,執(zhí)行驅(qū)動(dòng)程序的進(jìn)程把自己阻塞起來(lái),直到I/O中斷到來(lái)時(shí)才被喚醒。2.I/O中斷處理程序I/O設(shè)備在完成I/O操作后,設(shè)備控制器便向CPU發(fā)送I/O中斷請(qǐng)求。CPU響應(yīng)中斷后,先保護(hù)被中斷進(jìn)程的CPU現(xiàn)場(chǎng),然后分析中斷原因,轉(zhuǎn)去執(zhí)行相應(yīng)的I/O中斷處理程序。I/O中斷處理程序的工作過(guò)程簡(jiǎn)單描述如下:(1)檢查本次I/O的執(zhí)行結(jié)果。中斷處理程序通過(guò)讀設(shè)備控制器的狀態(tài)存放器來(lái)檢查本次I/O操作的完成情況。假設(shè)本次操作成功,那么進(jìn)行結(jié)束處理,否那么,根據(jù)發(fā)生異常的原因做出相應(yīng)的處理。在允許時(shí),還可按重復(fù)次數(shù)調(diào)用設(shè)備驅(qū)動(dòng)程序重新傳送數(shù)據(jù)。最終的I/O執(zhí)行情況將由中斷處理程序向上層軟件匯報(bào)。(2)喚醒被阻塞的相應(yīng)進(jìn)程。I/O中斷處理程序還必須喚醒等待本次I/O完成的相應(yīng)進(jìn)程,以使它能繼續(xù)向前推進(jìn)。假設(shè)請(qǐng)求I/O的隊(duì)列中還有I/O請(qǐng)求等待處理,那么可調(diào)用設(shè)備驅(qū)動(dòng)程序進(jìn)行新一輪的數(shù)據(jù)傳送。當(dāng)中斷處理完成以后,便恢復(fù)被中斷進(jìn)程的現(xiàn)場(chǎng),并通過(guò)執(zhí)行中斷返回指令,返回到斷點(diǎn)繼續(xù)執(zhí)行被中斷的程序。5.6時(shí)鐘管理

時(shí)鐘管理是操作系統(tǒng)的另一個(gè)重要任務(wù)。時(shí)鐘是用來(lái)計(jì)量時(shí)間的硬件或軟件系統(tǒng),分別稱為硬件時(shí)鐘和軟件時(shí)鐘,在操作系統(tǒng)中一般把它作為一種計(jì)量時(shí)間的有形設(shè)備。時(shí)鐘對(duì)幾乎所有操作系統(tǒng)都是必不可少的,在計(jì)算機(jī)系統(tǒng)中一般有三類時(shí)鐘:即系統(tǒng)時(shí)鐘(SystemClock)、日歷時(shí)鐘(TimeofDayClock)和實(shí)時(shí)時(shí)鐘(RealTimeClock)。本節(jié)主要討論時(shí)鐘與操作系統(tǒng)的關(guān)系。5.6.1時(shí)鐘的概念

時(shí)鐘本身是由硬件產(chǎn)生的脈沖序列,這些脈沖序列經(jīng)過(guò)整形和分頻形成具有特定周期的脈沖信號(hào),提供給計(jì)數(shù)器和定時(shí)器記時(shí),計(jì)時(shí)到達(dá)那么產(chǎn)生定時(shí)中斷,這類時(shí)鐘稱為硬件時(shí)鐘。軟件也可以模擬時(shí)鐘,它可以在程序中用存放器計(jì)數(shù)實(shí)現(xiàn),以一個(gè)固定的周期做加(減)法,直到到達(dá)某個(gè)定值(或零),從而產(chǎn)生中斷,被稱為軟件時(shí)鐘。在操作系統(tǒng)中,把兩類時(shí)鐘都看作是一種獨(dú)特的設(shè)備,無(wú)論把它設(shè)置成塊設(shè)備還是字符設(shè)備,都不會(huì)從外界傳送任何數(shù)據(jù)到計(jì)算機(jī),其作用僅作為提供記錄時(shí)間間隔的手段。尤其對(duì)分時(shí)操作系統(tǒng),由它引起周期性間隔和時(shí)間片,時(shí)鐘產(chǎn)生的中斷取決于時(shí)間間隔周期。時(shí)鐘“設(shè)備〞雖然不同于其他設(shè)備,但對(duì)其控制仍可通過(guò)標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)程序提供。系統(tǒng)時(shí)鐘主要用于控制系統(tǒng)處理器執(zhí)行指令的速率。日歷時(shí)鐘產(chǎn)生一個(gè)精確的時(shí)間計(jì)數(shù),程序?qū)Υ诉M(jìn)行轉(zhuǎn)換,給出與日歷相符的日期和時(shí)間,即時(shí)、分、秒,它與處理器是否工作和停止無(wú)關(guān)。實(shí)時(shí)時(shí)鐘與日歷無(wú)關(guān),它每秒提供假設(shè)干個(gè)脈沖信號(hào),每個(gè)脈沖信號(hào)產(chǎn)生一個(gè)中斷,稱為時(shí)鐘中斷,時(shí)鐘中斷提醒處理器有重要的事情要做,需要暫停當(dāng)前操作。可見,日歷時(shí)鐘和實(shí)時(shí)時(shí)鐘的關(guān)鍵區(qū)別有兩個(gè)方面:〔1〕日歷時(shí)鐘是處理器來(lái)讀取時(shí)鐘,對(duì)時(shí)鐘進(jìn)行轉(zhuǎn)換,而實(shí)時(shí)時(shí)鐘那么是時(shí)鐘來(lái)鼓勵(lì)和控制處理器。〔2〕實(shí)時(shí)時(shí)鐘不記錄脈沖數(shù),也不計(jì)算中斷次數(shù)。如果需要獲得當(dāng)前時(shí)間和日期,處理器將讀取日歷時(shí)鐘;而當(dāng)實(shí)時(shí)時(shí)鐘發(fā)生時(shí),它迫使處理器去處理一個(gè)中斷。在硬件時(shí)鐘的根底上可建立多功能虛擬時(shí)鐘或軟件時(shí)鐘,代表時(shí)鐘的數(shù)據(jù)存放在主存儲(chǔ)器中,或者專門的CMOS芯片中的存儲(chǔ)單元里,這些數(shù)據(jù)不停地由硬件時(shí)鐘傳來(lái)的信號(hào)動(dòng)態(tài)地更新。時(shí)鐘“設(shè)備〞產(chǎn)生的中斷取決于時(shí)間定時(shí)間隔,無(wú)論日歷時(shí)鐘還是軟件時(shí)鐘都具有時(shí)間分段信號(hào),這些信號(hào)可以用來(lái)更新時(shí)鐘值,或經(jīng)過(guò)計(jì)數(shù)器轉(zhuǎn)換成日期和時(shí)間,并產(chǎn)生連續(xù)的時(shí)鐘串和時(shí)間片。操作系統(tǒng)利用時(shí)鐘產(chǎn)生時(shí)間片定時(shí),對(duì)作業(yè)和進(jìn)程的運(yùn)行記時(shí),定期地產(chǎn)生系統(tǒng)查詢和鼓勵(lì)信號(hào),完成I/O設(shè)備的控制和管理。時(shí)鐘中斷處理程序比較簡(jiǎn)單,它引導(dǎo)時(shí)間系統(tǒng)、建立時(shí)鐘基準(zhǔn)值、設(shè)定時(shí)間分段信號(hào)、跟蹤時(shí)間分段信號(hào)、進(jìn)行時(shí)鐘計(jì)數(shù)值與時(shí)間值的轉(zhuǎn)換、在特定條件下輸出時(shí)鐘信號(hào)等。由于實(shí)時(shí)時(shí)鐘每秒信號(hào)固定,要求處理器對(duì)實(shí)時(shí)時(shí)鐘中斷的處理時(shí)間不能太長(zhǎng),也不能關(guān)閉中斷時(shí)間太長(zhǎng),否那么將喪失中斷。因此,系統(tǒng)對(duì)時(shí)鐘中斷迅速響應(yīng)效勞,時(shí)鐘中斷也具有最高優(yōu)先級(jí)。為防止系統(tǒng)忙于時(shí)鐘中斷,在操作系統(tǒng)中通常采用時(shí)鐘中斷程序?qū)⑺D(zhuǎn)換為較低的時(shí)鐘率。5.6.2時(shí)鐘管理

操作系統(tǒng)的時(shí)鐘管理包括對(duì)系統(tǒng)和用戶的效勞,如提供日期和時(shí)間(實(shí)時(shí))、為系統(tǒng)進(jìn)程或事件提供定時(shí)和記時(shí)、按照時(shí)間片周期性地啟動(dòng)或中止進(jìn)程(或任務(wù))、取消時(shí)鐘請(qǐng)求、提供時(shí)鐘效勞等。在多任務(wù)操作系統(tǒng)中,系統(tǒng)或進(jìn)程具有多種時(shí)鐘效勞請(qǐng)求,需要提供時(shí)序管理,此時(shí),可建立時(shí)鐘等待隊(duì)列。時(shí)鐘效勞包括保持正確時(shí)間、監(jiān)視系統(tǒng)進(jìn)程、建立超時(shí)時(shí)限(如設(shè)備讀寫超時(shí))、延遲或者中止特定時(shí)限的進(jìn)程、在特定時(shí)間啟動(dòng)進(jìn)程、進(jìn)行事件記時(shí)、調(diào)用超時(shí)進(jìn)程、廢除時(shí)鐘等待隊(duì)列中的某個(gè)時(shí)鐘請(qǐng)求。操作系統(tǒng)均通過(guò)對(duì)進(jìn)程控制塊(PCB)狀態(tài)的改變來(lái)實(shí)施進(jìn)程控制。時(shí)鐘中斷處理的時(shí)間依賴于操作系統(tǒng)內(nèi)部計(jì)時(shí)設(shè)備的精確度。實(shí)時(shí)系統(tǒng)要求時(shí)鐘操作和設(shè)備驅(qū)動(dòng)程序的執(zhí)行時(shí)間有特定的限制。時(shí)鐘中斷一般具有最高優(yōu)先級(jí),它可以阻塞其他中斷。雖然時(shí)鐘中斷能夠預(yù)知何時(shí)出現(xiàn),但它類似于I/O完成中斷,也可在一定條件下被阻塞,使它們不在預(yù)定時(shí)間準(zhǔn)確出現(xiàn)。當(dāng)某個(gè)用戶進(jìn)程請(qǐng)求時(shí)間延遲時(shí),操作系統(tǒng)將把它從運(yùn)行狀態(tài)撤下,讓其進(jìn)入睡眠(sleep)狀態(tài),當(dāng)延遲時(shí)間到達(dá)時(shí),再喚醒(wakeup)該進(jìn)程投入運(yùn)行。如果有多個(gè)進(jìn)程請(qǐng)求時(shí)間延遲,那么它們將排成一個(gè)等待隊(duì)列,每當(dāng)時(shí)鐘中斷發(fā)生,中斷處理程序都會(huì)去檢測(cè)等待隊(duì)列中的進(jìn)程,將延時(shí)到期的進(jìn)程移出,進(jìn)入就緒等待隊(duì)列,此時(shí),進(jìn)程的狀態(tài)也就從睡眠狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。具體的狀態(tài)轉(zhuǎn)換圖如圖5-13所示。圖5-13進(jìn)程時(shí)間等待的狀態(tài)轉(zhuǎn)換圖時(shí)鐘中斷發(fā)生且延時(shí)到期時(shí)間延遲時(shí)間片到進(jìn)程調(diào)度運(yùn)行就緒睡眠5.7實(shí)例解析

【例5-1】在某計(jì)算機(jī)系統(tǒng)中,從磁盤將一塊數(shù)據(jù)輸入到緩沖區(qū)需要花費(fèi)的時(shí)間為T,CPU對(duì)一塊數(shù)據(jù)進(jìn)行處理的時(shí)間為C,將緩沖區(qū)的數(shù)據(jù)傳送到用戶區(qū)所花時(shí)間為M,那么在單緩沖和雙緩沖情況下,系統(tǒng)處理大量數(shù)據(jù)時(shí),一塊數(shù)據(jù)的處理時(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)論