




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)設(shè)備管理1第第9章章 設(shè)備管理設(shè)備管理操作系統(tǒng)設(shè)備管理2設(shè)備管理是操作系統(tǒng)的重要組成部設(shè)備管理是操作系統(tǒng)的重要組成部分之一。本章主要討論設(shè)備管理的分之一。本章主要討論設(shè)備管理的基本概念,包括中斷、緩沖、設(shè)備基本概念,包括中斷、緩沖、設(shè)備分配和控制等。分配和控制等。操作系統(tǒng)操作系統(tǒng)設(shè)備管理39.2 數(shù)據(jù)傳送控制方式數(shù)據(jù)傳送控制方式9.3 中斷技術(shù)中斷技術(shù)9.4 緩沖技術(shù)緩沖技術(shù)9.5 設(shè)備分配設(shè)備分配9.6 I/O進(jìn)程控制進(jìn)程控制9.7 設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序本章小結(jié)本章小結(jié)習(xí)題習(xí)題操作系統(tǒng)操作系統(tǒng)設(shè)備管理49.1.1 設(shè)備的類別設(shè)備的類別9.1.2 設(shè)備管理的功能和任務(wù)設(shè)備管理的功能
2、和任務(wù)9.1 引引 言言操作系統(tǒng)操作系統(tǒng)設(shè)備管理59.1.1 設(shè)備的類別設(shè)備的類別在計(jì)算機(jī)系統(tǒng)中,除了在計(jì)算機(jī)系統(tǒng)中,除了CPU和內(nèi)存之外,和內(nèi)存之外,其他的大部分硬設(shè)備稱為外部設(shè)備。它包其他的大部分硬設(shè)備稱為外部設(shè)備。它包括常用的輸入輸出設(shè)備、外存設(shè)備以及終括常用的輸入輸出設(shè)備、外存設(shè)備以及終端設(shè)備等。本節(jié)先從系統(tǒng)管理的角度將各端設(shè)備等。本節(jié)先從系統(tǒng)管理的角度將各種設(shè)備進(jìn)行簡單的分類,然后再介紹設(shè)備種設(shè)備進(jìn)行簡單的分類,然后再介紹設(shè)備管理的主要功能與任務(wù)。管理的主要功能與任務(wù)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理6n 設(shè)備的分類設(shè)備的分類 按設(shè)備的使用特性分,可分為存儲設(shè)按設(shè)備的使用特性分,可分為存儲設(shè)
3、備、輸入輸出設(shè)備、終端設(shè)備以及脫機(jī)設(shè)備、輸入輸出設(shè)備、終端設(shè)備以及脫機(jī)設(shè)備等,如圖備等,如圖9.1所示。所示。操作系統(tǒng)設(shè)備管理7圖圖9.1 按使用特性對外部設(shè)備的分類按使用特性對外部設(shè)備的分類操作系統(tǒng)操作系統(tǒng)設(shè)備管理8 按設(shè)備的從屬關(guān)系,可把設(shè)備畫分為按設(shè)備的從屬關(guān)系,可把設(shè)備畫分為系統(tǒng)設(shè)備和用戶設(shè)備。系統(tǒng)設(shè)備和用戶設(shè)備。n 系統(tǒng)設(shè)備系統(tǒng)設(shè)備是指那些在操作系統(tǒng)生成時(shí)就是指那些在操作系統(tǒng)生成時(shí)就已配置好的各種標(biāo)準(zhǔn)設(shè)備。例如,鍵盤、已配置好的各種標(biāo)準(zhǔn)設(shè)備。例如,鍵盤、打印機(jī)以及文件存儲設(shè)備等。打印機(jī)以及文件存儲設(shè)備等。 用戶設(shè)備用戶設(shè)備則是那些在系統(tǒng)生成時(shí)沒有配則是那些在系統(tǒng)生成時(shí)沒有配置,而由用
4、戶自己安裝配置后由操作系統(tǒng)置,而由用戶自己安裝配置后由操作系統(tǒng)統(tǒng)一管理的設(shè)備。例如,網(wǎng)絡(luò)系統(tǒng)中的各統(tǒng)一管理的設(shè)備。例如,網(wǎng)絡(luò)系統(tǒng)中的各種網(wǎng)卡、圖像處理系統(tǒng)的圖像設(shè)備等。種網(wǎng)卡、圖像處理系統(tǒng)的圖像設(shè)備等。操作系統(tǒng)操作系統(tǒng)設(shè)備管理9 除了上述分類方法之外,在有的系統(tǒng)除了上述分類方法之外,在有的系統(tǒng)中還按中還按信息組織方式信息組織方式來畫分設(shè)備。來畫分設(shè)備。 例如,例如,UNIXUNIX系統(tǒng)就把外部設(shè)備畫分為系統(tǒng)就把外部設(shè)備畫分為字符設(shè)備和塊設(shè)備字符設(shè)備和塊設(shè)備。鍵盤、終端、打印機(jī)。鍵盤、終端、打印機(jī)等以字符為單位組織和處理信息的設(shè)備被等以字符為單位組織和處理信息的設(shè)備被稱為字符設(shè)備;而磁盤、磁帶等
5、以字符塊稱為字符設(shè)備;而磁盤、磁帶等以字符塊為單位組織和處理信息的設(shè)備被稱為塊設(shè)為單位組織和處理信息的設(shè)備被稱為塊設(shè)備。備。操作系統(tǒng)操作系統(tǒng)設(shè)備管理109.1.2 設(shè)備管理的功能和任務(wù)設(shè)備管理的功能和任務(wù) 設(shè)備管理是對計(jì)算機(jī)輸入輸出系統(tǒng)的管設(shè)備管理是對計(jì)算機(jī)輸入輸出系統(tǒng)的管理,是操作系統(tǒng)中最具多樣性和復(fù)雜性的部理,是操作系統(tǒng)中最具多樣性和復(fù)雜性的部分。其主要任務(wù)是:分。其主要任務(wù)是:n 選擇和分配輸入輸出設(shè)備以進(jìn)行數(shù)據(jù)傳選擇和分配輸入輸出設(shè)備以進(jìn)行數(shù)據(jù)傳輸操作;輸操作; 控制輸入輸出設(shè)備和控制輸入輸出設(shè)備和CPU(或內(nèi)存)之(或內(nèi)存)之間交換數(shù)據(jù);間交換數(shù)據(jù);操作系統(tǒng)操作系統(tǒng)設(shè)備管理11n為用
6、戶提供友好的透明接口,把用戶和設(shè)為用戶提供友好的透明接口,把用戶和設(shè)備硬件特性分開,使得用戶在編制應(yīng)用程序備硬件特性分開,使得用戶在編制應(yīng)用程序時(shí)不必涉及具體設(shè)備,系統(tǒng)按用戶要求控制時(shí)不必涉及具體設(shè)備,系統(tǒng)按用戶要求控制設(shè)備工作。設(shè)備工作。n提高設(shè)備和設(shè)備之間、提高設(shè)備和設(shè)備之間、CPUCPU和設(shè)備之間,以和設(shè)備之間,以及進(jìn)程和進(jìn)程之間的并行操作度,以使操作及進(jìn)程和進(jìn)程之間的并行操作度,以使操作系統(tǒng)獲得最佳效率。系統(tǒng)獲得最佳效率。操作系統(tǒng)操作系統(tǒng)設(shè)備管理12 為了完成上述主要任務(wù),設(shè)備管理程序?yàn)榱送瓿缮鲜鲋饕蝿?wù),設(shè)備管理程序一般要提供下述功能:一般要提供下述功能:(1) (1) 提供和進(jìn)程管
7、理系統(tǒng)的接口。提供和進(jìn)程管理系統(tǒng)的接口。 (2) (2) 進(jìn)行設(shè)備分配。進(jìn)行設(shè)備分配。(3) (3) 實(shí)現(xiàn)設(shè)備和設(shè)備、設(shè)備和實(shí)現(xiàn)設(shè)備和設(shè)備、設(shè)備和CPUCPU等之間等之間的并行操作。的并行操作。(4) (4) 進(jìn)行緩沖區(qū)管理。進(jìn)行緩沖區(qū)管理。操作系統(tǒng)操作系統(tǒng)設(shè)備管理139.2 數(shù)據(jù)傳送控制方式數(shù)據(jù)傳送控制方式 設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或存或CPU之間的數(shù)據(jù)傳送,本節(jié)介紹常用數(shù)之間的數(shù)據(jù)傳送,本節(jié)介紹常用數(shù)據(jù)傳送控制方式。據(jù)傳送控制方式。操作系統(tǒng)操作系統(tǒng)設(shè)備管理14選擇和衡量控制方式有如下幾條原則:選擇和衡量控制方式有如下幾條原則:(1)數(shù)據(jù)傳送
8、速度足夠高,能滿足用戶的需數(shù)據(jù)傳送速度足夠高,能滿足用戶的需要但又不丟失數(shù)據(jù);要但又不丟失數(shù)據(jù);(2)系統(tǒng)開銷小,所需的處理控制程序少;系統(tǒng)開銷小,所需的處理控制程序少;(3)能充分發(fā)揮硬件資源的能力,使得能充分發(fā)揮硬件資源的能力,使得I/O設(shè)設(shè)備盡量忙,而備盡量忙,而CPU等待時(shí)間少。等待時(shí)間少。操作系統(tǒng)操作系統(tǒng)設(shè)備管理15外圍設(shè)備和內(nèi)存之間的常用數(shù)據(jù)傳送控制方外圍設(shè)備和內(nèi)存之間的常用數(shù)據(jù)傳送控制方式有式有4種。種。 (1) 程序直接控制方式;程序直接控制方式; (2) 中斷控制方式;中斷控制方式; (3) DMA方式;方式; (4) 通道方式。通道方式。操作系統(tǒng)操作系統(tǒng)設(shè)備管理169.2.
9、1 程序直接控制方式程序直接控制方式9.2.2 中斷方式中斷方式9.2.3 DMA方式(直接存取方式)方式(直接存取方式)9.2.4 通道控制方式通道控制方式(channel control)操作系統(tǒng)操作系統(tǒng)設(shè)備管理179.2.1 程序直接控制方式程序直接控制方式 就是由用戶進(jìn)程來直接控制內(nèi)存或就是由用戶進(jìn)程來直接控制內(nèi)存或CPU和外圍設(shè)和外圍設(shè)備之間的信息傳送。備之間的信息傳送。 這種方式的控制者是用戶進(jìn)程。這種方式的控制者是用戶進(jìn)程。 操作系統(tǒng)操作系統(tǒng)設(shè)備管理18I/OI/O控制器中的寄存器控制器中的寄存器1.1.控制狀態(tài)寄存器控制狀態(tài)寄存器2.2.數(shù)據(jù)緩沖寄存器數(shù)據(jù)緩沖寄存器程序直接控制
10、方式的控制流程如圖程序直接控制方式的控制流程如圖9.29.2。操作系統(tǒng)設(shè)備管理19操作系統(tǒng)操作系統(tǒng)設(shè)備管理20n程序直接控制方式的缺點(diǎn):程序直接控制方式的缺點(diǎn):(1) CPU(1) CPU和外圍設(shè)備只能串行工作。和外圍設(shè)備只能串行工作。(2) CPU(2) CPU在一段時(shí)間內(nèi)只能和一臺外圍設(shè)備在一段時(shí)間內(nèi)只能和一臺外圍設(shè)備交換數(shù)據(jù)信息,從而不能實(shí)現(xiàn)設(shè)備之間的并交換數(shù)據(jù)信息,從而不能實(shí)現(xiàn)設(shè)備之間的并行工作;行工作;操作系統(tǒng)操作系統(tǒng)設(shè)備管理21(3) (3) 由于程序直接控制方式依靠測試設(shè)備標(biāo)由于程序直接控制方式依靠測試設(shè)備標(biāo)志觸發(fā)器的狀態(tài)位來控制數(shù)據(jù)傳送,因此志觸發(fā)器的狀態(tài)位來控制數(shù)據(jù)傳送,因此
11、無法發(fā)現(xiàn)和處理由于設(shè)備或其他硬件所產(chǎn)無法發(fā)現(xiàn)和處理由于設(shè)備或其他硬件所產(chǎn)生的錯(cuò)誤。生的錯(cuò)誤。 程序直接控制方式只適用于那些程序直接控制方式只適用于那些CPUCPU執(zhí)行速度較慢,而且外圍設(shè)備較少的系統(tǒng)。執(zhí)行速度較慢,而且外圍設(shè)備較少的系統(tǒng)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理229.2.2 中斷方式中斷方式 這種方式要求這種方式要求CPU與設(shè)備與設(shè)備(或控制器或控制器)之之間有相應(yīng)的中斷請求線,而且在設(shè)備控制器間有相應(yīng)的中斷請求線,而且在設(shè)備控制器的控制狀態(tài)寄存器的相應(yīng)的中斷允許位。中的控制狀態(tài)寄存器的相應(yīng)的中斷允許位。中斷方式的傳送結(jié)構(gòu)如圖斷方式的傳送結(jié)構(gòu)如圖9.3所示。從而,數(shù)據(jù)所示。從而,數(shù)據(jù)的輸入可
12、按如下步驟操作。的輸入可按如下步驟操作。操作系統(tǒng)設(shè)備管理23操作系統(tǒng)操作系統(tǒng)設(shè)備管理24 (1) 首先,首先,CPU發(fā)出發(fā)出“Start”指令啟動外指令啟動外圍設(shè)備準(zhǔn)備數(shù)據(jù)。該指令同時(shí)還將控制狀態(tài)圍設(shè)備準(zhǔn)備數(shù)據(jù)。該指令同時(shí)還將控制狀態(tài)寄存器中的中斷允許位打開,以便在需要時(shí),寄存器中的中斷允許位打開,以便在需要時(shí),中斷程序可以被調(diào)用執(zhí)行。中斷程序可以被調(diào)用執(zhí)行。 (2) 在進(jìn)程發(fā)出指令啟動設(shè)備之后,該在進(jìn)程發(fā)出指令啟動設(shè)備之后,該進(jìn)程放棄處理機(jī),等待輸入完成。進(jìn)程放棄處理機(jī),等待輸入完成。操作系統(tǒng)操作系統(tǒng)設(shè)備管理25(3) 當(dāng)輸入完成時(shí),當(dāng)輸入完成時(shí),I/O控制器通過中斷請求線向控制器通過中斷請
13、求線向CPU發(fā)出中斷信號。發(fā)出中斷信號。(4) 在以后的某個(gè)時(shí)刻,進(jìn)程調(diào)度程序選中提出請?jiān)谝院蟮哪硞€(gè)時(shí)刻,進(jìn)程調(diào)度程序選中提出請求并得到了數(shù)據(jù)的進(jìn)程,該進(jìn)程從約定的內(nèi)存特定求并得到了數(shù)據(jù)的進(jìn)程,該進(jìn)程從約定的內(nèi)存特定單元中取出數(shù)據(jù)繼續(xù)工作。單元中取出數(shù)據(jù)繼續(xù)工作。中斷控制方式的處理過程可由圖中斷控制方式的處理過程可由圖9.4表示。表示。操作系統(tǒng)設(shè)備管理26圖圖9.4 中斷控制方式的處理過程中斷控制方式的處理過程操作系統(tǒng)操作系統(tǒng)設(shè)備管理27中斷方式的缺點(diǎn):中斷方式的缺點(diǎn): 在一次數(shù)據(jù)傳送過程中,發(fā)生中斷次在一次數(shù)據(jù)傳送過程中,發(fā)生中斷次數(shù)較多。這將耗去大量的數(shù)較多。這將耗去大量的CPU處理時(shí)間。
14、處理時(shí)間。 如果外圍設(shè)備的速度也非常高,則可能如果外圍設(shè)備的速度也非常高,則可能造成數(shù)據(jù)緩沖寄存器的數(shù)據(jù)由于造成數(shù)據(jù)緩沖寄存器的數(shù)據(jù)由于CPU來不及來不及取走而丟失。取走而丟失。操作系統(tǒng)操作系統(tǒng)設(shè)備管理289.2.3 DMA方式(直接存取方式)方式(直接存取方式)n基本思想是在外圍設(shè)備和內(nèi)存之間開辟直基本思想是在外圍設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路。接的數(shù)據(jù)交換通路。n在在DMA方式中,方式中,I/O控制除了控制狀態(tài)寄存控制除了控制狀態(tài)寄存器和數(shù)據(jù)緩沖寄存器之外,器和數(shù)據(jù)緩沖寄存器之外,DMA控制器中控制器中還包括傳送字節(jié)計(jì)數(shù)器、內(nèi)存地址寄存器還包括傳送字節(jié)計(jì)數(shù)器、內(nèi)存地址寄存器等。等。n
15、DMA方式竊取或挪用方式竊取或挪用CPU的一個(gè)工作周期的一個(gè)工作周期把數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)直接送到內(nèi)存把數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)直接送到內(nèi)存地址寄存器所指向的內(nèi)存區(qū)域。地址寄存器所指向的內(nèi)存區(qū)域。操作系統(tǒng)操作系統(tǒng)設(shè)備管理29 DMA控制器可用來代替控制器可用來代替CPU控制內(nèi)控制內(nèi)存和設(shè)備之間進(jìn)行成批的數(shù)據(jù)交換。批量存和設(shè)備之間進(jìn)行成批的數(shù)據(jù)交換。批量數(shù)據(jù)數(shù)據(jù)(數(shù)據(jù)塊數(shù)據(jù)塊)的傳送由計(jì)數(shù)器逐個(gè)計(jì)數(shù),的傳送由計(jì)數(shù)器逐個(gè)計(jì)數(shù),并由內(nèi)存地址寄存器確定內(nèi)存地址。并由內(nèi)存地址寄存器確定內(nèi)存地址。 DMA存取方式的結(jié)構(gòu)如圖存取方式的結(jié)構(gòu)如圖9.5所示。所示。操作系統(tǒng)設(shè)備管理30圖圖9.5 DMA方式的傳送
16、結(jié)構(gòu)方式的傳送結(jié)構(gòu)操作系統(tǒng)操作系統(tǒng)設(shè)備管理31DMA方式的數(shù)據(jù)輸入處理過程如下方式的數(shù)據(jù)輸入處理過程如下: ( (1) CPU1) CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存始址把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存始址以及要傳送的字節(jié)數(shù)分別送入以及要傳送的字節(jié)數(shù)分別送入DMADMA控制器控制器中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)器中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)器; ; 另外,還把控制狀態(tài)寄存器中的中斷允另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動位置許位和啟動位置1; 1; 從而啟動設(shè)備開始進(jìn)從而啟動設(shè)備開始進(jìn)行數(shù)據(jù)輸入。行數(shù)據(jù)輸入。操作系統(tǒng)操作系統(tǒng)設(shè)備管理32(2) 發(fā)出數(shù)據(jù)要求的進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程發(fā)出數(shù)據(jù)要求的
17、進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程占據(jù)調(diào)度程序調(diào)度其他進(jìn)程占據(jù)CPU。(3) 輸入設(shè)備不斷地挪用輸入設(shè)備不斷地挪用CPU工作周期,將數(shù)工作周期,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直到所要求的字節(jié)全部傳送完畢。到所要求的字節(jié)全部傳送完畢。操作系統(tǒng)操作系統(tǒng)設(shè)備管理33(4) DMA控制器在傳送字節(jié)數(shù)完成時(shí)通過中控制器在傳送字節(jié)數(shù)完成時(shí)通過中斷請求線發(fā)出中斷信號,斷請求線發(fā)出中斷信號,CPU在接收到中在接收到中斷信號后轉(zhuǎn)中斷處理程序進(jìn)行善后處理。斷信號后轉(zhuǎn)中斷處理程序進(jìn)行善后處理。(5) 中斷處理結(jié)束時(shí),中斷處理結(jié)束時(shí),CPU返回被中斷進(jìn)程
18、處返回被中斷進(jìn)程處執(zhí)行或被調(diào)度到新的進(jìn)程上下文環(huán)境中執(zhí)執(zhí)行或被調(diào)度到新的進(jìn)程上下文環(huán)境中執(zhí)行。行。操作系統(tǒng)設(shè)備管理34圖圖9.6 DMA方式的數(shù)據(jù)傳送處理過程方式的數(shù)據(jù)傳送處理過程操作系統(tǒng)操作系統(tǒng)設(shè)備管理35DMA方式與中斷方式的主要區(qū)別:方式與中斷方式的主要區(qū)別:中斷方式時(shí)是在數(shù)據(jù)緩沖寄存器滿之后發(fā)中中斷方式時(shí)是在數(shù)據(jù)緩沖寄存器滿之后發(fā)中斷要求斷要求CPU進(jìn)行中斷處理,而進(jìn)行中斷處理,而DMA方式則是在方式則是在所要求轉(zhuǎn)送的數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求所要求轉(zhuǎn)送的數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求CPU進(jìn)行中斷處理。這就大大減少了進(jìn)行中斷處理。這就大大減少了CPU進(jìn)行中斷進(jìn)行中斷處理的次數(shù)。處理的次數(shù)。中
19、斷方式的數(shù)據(jù)傳送是在中斷處理時(shí)由中斷方式的數(shù)據(jù)傳送是在中斷處理時(shí)由CPU控制完成的,而控制完成的,而DMA方式是在方式是在DMA控制器的控控制器的控制下不經(jīng)過制下不經(jīng)過CPU控制完成的。控制完成的。操作系統(tǒng)操作系統(tǒng)設(shè)備管理36DMA方式的缺點(diǎn):方式的缺點(diǎn): DMA方式對外圍設(shè)備的管理和某些操作仍由方式對外圍設(shè)備的管理和某些操作仍由CPU控制??刂啤?在大中型計(jì)算機(jī)中,系統(tǒng)所配置的外設(shè)種類在大中型計(jì)算機(jī)中,系統(tǒng)所配置的外設(shè)種類越來越多,數(shù)量也越來越大,因而,對外圍設(shè)備越來越多,數(shù)量也越來越大,因而,對外圍設(shè)備的管理的控制也就愈來愈復(fù)雜。的管理的控制也就愈來愈復(fù)雜。操作系統(tǒng)操作系統(tǒng)設(shè)備管理379.
20、2.4 通道控制方式通道控制方式(channel control)通道控制方式與通道控制方式與DMA方式相類似,也是一方式相類似,也是一種以內(nèi)存為中心,實(shí)現(xiàn)設(shè)備和內(nèi)存直接交種以內(nèi)存為中心,實(shí)現(xiàn)設(shè)備和內(nèi)存直接交換數(shù)據(jù)的控制方式。換數(shù)據(jù)的控制方式。操作系統(tǒng)操作系統(tǒng)設(shè)備管理38n與與DMADMA方式不同的是:方式不同的是:在在DMADMA方式中,數(shù)據(jù)的傳送方向、存放數(shù)方式中,數(shù)據(jù)的傳送方向、存放數(shù)據(jù)的內(nèi)存始址以及傳送的數(shù)據(jù)塊長度等都據(jù)的內(nèi)存始址以及傳送的數(shù)據(jù)塊長度等都由由CPUCPU控制,而在通道方式中,這些都由控制,而在通道方式中,這些都由專管輸入輸出的硬件專管輸入輸出的硬件通道來進(jìn)行控制。通道來
21、進(jìn)行控制。DMADMA方式時(shí)每臺設(shè)備至少一個(gè)方式時(shí)每臺設(shè)備至少一個(gè)DMADMA控制器相控制器相比,通道控制方式可以做到一個(gè)通道控制比,通道控制方式可以做到一個(gè)通道控制多臺設(shè)備與內(nèi)存進(jìn)行數(shù)據(jù)交換,從而,通多臺設(shè)備與內(nèi)存進(jìn)行數(shù)據(jù)交換,從而,通道方式進(jìn)一步減輕了道方式進(jìn)一步減輕了CPUCPU的工作負(fù)擔(dān)和增的工作負(fù)擔(dān)和增加了計(jì)算機(jī)系統(tǒng)的并行工作程度。加了計(jì)算機(jī)系統(tǒng)的并行工作程度。操作系統(tǒng)操作系統(tǒng)設(shè)備管理39 由于通道是一個(gè)專管輸入輸出操作控制的由于通道是一個(gè)專管輸入輸出操作控制的硬件,有必要更進(jìn)一步完整地描述一下通道的硬件,有必要更進(jìn)一步完整地描述一下通道的定義:定義:通道是一個(gè)獨(dú)立于通道是一個(gè)獨(dú)立于
22、CPU的專管輸入輸出的專管輸入輸出控制的處理機(jī),它控制設(shè)備與內(nèi)存直接進(jìn)行數(shù)控制的處理機(jī),它控制設(shè)備與內(nèi)存直接進(jìn)行數(shù)據(jù)交換。它有自己的通道指令,這些通道指令據(jù)交換。它有自己的通道指令,這些通道指令受受CPU啟動,并在操作結(jié)束時(shí)向啟動,并在操作結(jié)束時(shí)向CPU發(fā)中斷信發(fā)中斷信號。號。操作系統(tǒng)操作系統(tǒng)設(shè)備管理40 通道指令一般包含有被交換數(shù)據(jù)在內(nèi)存中通道指令一般包含有被交換數(shù)據(jù)在內(nèi)存中應(yīng)占據(jù)的位置、傳送方向、數(shù)據(jù)塊長度以及被應(yīng)占據(jù)的位置、傳送方向、數(shù)據(jù)塊長度以及被控制的控制的I/O設(shè)備的地址信息、特征信息等,通道設(shè)備的地址信息、特征信息等,通道指令在通道中沒有存儲部件時(shí)存放在內(nèi)存中。指令在通道中沒有存
23、儲部件時(shí)存放在內(nèi)存中。操作系統(tǒng)操作系統(tǒng)設(shè)備管理41 通道指令的格式一般由操作碼、讀、寫或通道指令的格式一般由操作碼、讀、寫或控制、計(jì)數(shù)段控制、計(jì)數(shù)段( (數(shù)據(jù)塊長度數(shù)據(jù)塊長度) )以及內(nèi)存地址段以及內(nèi)存地址段和結(jié)束標(biāo)志等組成。通道指令在進(jìn)程要求數(shù)和結(jié)束標(biāo)志等組成。通道指令在進(jìn)程要求數(shù)據(jù)時(shí)由系統(tǒng)自動生成。據(jù)時(shí)由系統(tǒng)自動生成。 write 0 0 250 1950write 0 0 250 1950 write 1 1 250 720 write 1 1 250 720是兩條把一個(gè)記錄的是兩條把一個(gè)記錄的500500個(gè)字符分別寫入從內(nèi)個(gè)字符分別寫入從內(nèi)存地址存地址19501950開始的開始的250
24、250個(gè)單元和從內(nèi)存地址個(gè)單元和從內(nèi)存地址720720開始的開始的250250個(gè)單元中。其中假定個(gè)單元中。其中假定writewrite操作操作碼后的碼后的“1”1”是通道指令結(jié)束標(biāo)志,而另一個(gè)是通道指令結(jié)束標(biāo)志,而另一個(gè)“1”1”則是記錄結(jié)束標(biāo)志。該指令中省略了設(shè)則是記錄結(jié)束標(biāo)志。該指令中省略了設(shè)備號和設(shè)備特征。備號和設(shè)備特征。操作系統(tǒng)操作系統(tǒng)設(shè)備管理42 一個(gè)通道可以以分時(shí)方式同時(shí)執(zhí)行幾個(gè)一個(gè)通道可以以分時(shí)方式同時(shí)執(zhí)行幾個(gè)通道指令程序。按照信息交換方式不同,一個(gè)通道指令程序。按照信息交換方式不同,一個(gè)系統(tǒng)中可設(shè)立系統(tǒng)中可設(shè)立三種類型的通道,即字節(jié)多路通三種類型的通道,即字節(jié)多路通道、數(shù)組多路
25、通道和選擇通道。道、數(shù)組多路通道和選擇通道。由這三種通道由這三種通道組成的數(shù)據(jù)傳送控制結(jié)構(gòu)如圖組成的數(shù)據(jù)傳送控制結(jié)構(gòu)如圖9.7所示。所示。操作系統(tǒng)設(shè)備管理43圖圖9.7 通道方式的數(shù)據(jù)傳送結(jié)構(gòu)通道方式的數(shù)據(jù)傳送結(jié)構(gòu)操作系統(tǒng)操作系統(tǒng)設(shè)備管理44字節(jié)多路通道以字節(jié)為單位傳送數(shù)據(jù),字節(jié)多路通道以字節(jié)為單位傳送數(shù)據(jù),它主要用來連接大量的低速設(shè)備,如終它主要用來連接大量的低速設(shè)備,如終端、打印機(jī)等。端、打印機(jī)等。數(shù)組多路通道以塊為單位傳送數(shù)據(jù),它數(shù)組多路通道以塊為單位傳送數(shù)據(jù),它具有傳送速率高和能分時(shí)操作不同的設(shè)具有傳送速率高和能分時(shí)操作不同的設(shè)備等優(yōu)點(diǎn)。數(shù)組多路通道主要用來連接備等優(yōu)點(diǎn)。數(shù)組多路通道主
26、要用來連接中速塊設(shè)備,如磁帶機(jī)等。中速塊設(shè)備,如磁帶機(jī)等。操作系統(tǒng)操作系統(tǒng)設(shè)備管理45 數(shù)組多路通道和字節(jié)多路通道都可以數(shù)組多路通道和字節(jié)多路通道都可以分時(shí)執(zhí)行不同的通道指令程序。但是,選分時(shí)執(zhí)行不同的通道指令程序。但是,選擇通道一次只能執(zhí)行一個(gè)通道指令程序。擇通道一次只能執(zhí)行一個(gè)通道指令程序。所以,選擇通道一次只能控制一臺設(shè)備進(jìn)所以,選擇通道一次只能控制一臺設(shè)備進(jìn)行行 I/O操作。不過,選擇通道具有傳送速操作。不過,選擇通道具有傳送速度高的特點(diǎn),因而它被用來連接高速外部度高的特點(diǎn),因而它被用來連接高速外部設(shè)備,并以塊為單位成批傳送數(shù)據(jù)。受選設(shè)備,并以塊為單位成批傳送數(shù)據(jù)。受選擇通道控制的外設(shè)
27、有磁盤機(jī)等。擇通道控制的外設(shè)有磁盤機(jī)等。操作系統(tǒng)操作系統(tǒng)設(shè)備管理46通道控制方式的數(shù)據(jù)輸入處理過程可描述通道控制方式的數(shù)據(jù)輸入處理過程可描述如下如下: (1)當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU發(fā)發(fā)Start指令指明指令指明I/O操作、設(shè)備號和對應(yīng)通道。操作、設(shè)備號和對應(yīng)通道。(2)對應(yīng)通道接收到對應(yīng)通道接收到CPU發(fā)來的啟動指令發(fā)來的啟動指令Start之后,把存放在內(nèi)存中的通道指令程序之后,把存放在內(nèi)存中的通道指令程序讀出,設(shè)置對應(yīng)設(shè)備的讀出,設(shè)置對應(yīng)設(shè)備的I/O控制器中的控制狀控制器中的控制狀態(tài)寄存器。態(tài)寄存器。(3) 設(shè)備根據(jù)通道指令的要求,把數(shù)據(jù)設(shè)備根據(jù)通道指令的
28、要求,把數(shù)據(jù)送往內(nèi)存中指定區(qū)域。送往內(nèi)存中指定區(qū)域。操作系統(tǒng)操作系統(tǒng)設(shè)備管理47(4) 若數(shù)據(jù)傳送結(jié)束,若數(shù)據(jù)傳送結(jié)束,I/O控制器通過中斷請控制器通過中斷請求線發(fā)中斷信號請求求線發(fā)中斷信號請求CPU做中斷處理。做中斷處理。(5) 中斷處理結(jié)束后中斷處理結(jié)束后CPU返回被中斷進(jìn)程處返回被中斷進(jìn)程處繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。在在(1)中要求數(shù)據(jù)的進(jìn)程只有在調(diào)度程序選中要求數(shù)據(jù)的進(jìn)程只有在調(diào)度程序選中它之后,才能對所得到的數(shù)據(jù)進(jìn)行加工處中它之后,才能對所得到的數(shù)據(jù)進(jìn)行加工處理。理。 操作系統(tǒng)操作系統(tǒng)設(shè)備管理48Channel control procedure:repeatIRMpcpc pc+1exe
29、cute(IR)if require accessing with I/O Devicethen Command(I/O operation,Address of I/O device,channel) fiif I/O Done Interruptthen Call Interrupt processing control fiuntil machine haltInterrupt processing control procedure操作系統(tǒng)操作系統(tǒng)設(shè)備管理49n其中,其中,IR代表指令寄存器,代表指令寄存器,pc代表程序計(jì)代表程序計(jì)數(shù)器,而數(shù)器,而fi則表示則表示if.then.條件語
30、句的結(jié)束。條件語句的結(jié)束。操作系統(tǒng)操作系統(tǒng)設(shè)備管理509.3 中中 斷斷 技技 術(shù)術(shù)9.3.1 中斷的基本概念中斷的基本概念9.3.2 中斷的分類與優(yōu)先級中斷的分類與優(yōu)先級9.3.3 軟中斷軟中斷9.3.4 中斷處理過程中斷處理過程操作系統(tǒng)操作系統(tǒng)設(shè)備管理519.3.1 中斷的基本概念中斷的基本概念 中斷中斷(Interrupt)是指計(jì)算機(jī)在執(zhí)行期間,是指計(jì)算機(jī)在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,使得處理事件,使得CPU暫時(shí)中斷當(dāng)前正在執(zhí)暫時(shí)中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理
31、完畢后又返回原來被中斷處繼續(xù)執(zhí)待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新的進(jìn)程執(zhí)行的過程。行或調(diào)度新的進(jìn)程執(zhí)行的過程。操作系統(tǒng)操作系統(tǒng)設(shè)備管理52 引起中斷發(fā)生的事件被稱為中斷源。中斷引起中斷發(fā)生的事件被稱為中斷源。中斷源向源向CPU發(fā)出的請求中斷處理信號稱為中發(fā)出的請求中斷處理信號稱為中斷請求,而斷請求,而CPU收到中斷請求后轉(zhuǎn)相應(yīng)的收到中斷請求后轉(zhuǎn)相應(yīng)的事件處理程序稱為中斷響應(yīng)。事件處理程序稱為中斷響應(yīng)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理53禁止中斷禁止中斷:在有些情況下,盡管產(chǎn)生了中:在有些情況下,盡管產(chǎn)生了中斷源和發(fā)出了中斷請求,但斷源和發(fā)出了中斷請求,但CPU內(nèi)部的處理內(nèi)部的處理機(jī)狀態(tài)字機(jī)
32、狀態(tài)字PSW的中斷允許位已被清除,從的中斷允許位已被清除,從而不允許而不允許CPU響應(yīng)中斷。響應(yīng)中斷。CPU禁止中斷后禁止中斷后只有等到只有等到PSW的中斷允許位被重新設(shè)置后的中斷允許位被重新設(shè)置后才能接收中斷。才能接收中斷。 禁止中斷也稱為關(guān)中斷,禁止中斷也稱為關(guān)中斷,PSW的中斷允的中斷允許位的設(shè)置也被稱為開中斷。中斷請求、關(guān)許位的設(shè)置也被稱為開中斷。中斷請求、關(guān)中斷、開中斷等都由硬件實(shí)現(xiàn)。開中斷和關(guān)中斷、開中斷等都由硬件實(shí)現(xiàn)。開中斷和關(guān)中斷是為了保證某些程序執(zhí)行的原子性。中斷是為了保證某些程序執(zhí)行的原子性。操作系統(tǒng)操作系統(tǒng)設(shè)備管理54中斷屏蔽中斷屏蔽:中斷屏蔽是指在中斷請:中斷屏蔽是指在
33、中斷請求產(chǎn)生之后,系統(tǒng)用軟件方式有選擇求產(chǎn)生之后,系統(tǒng)用軟件方式有選擇地封鎖部分中斷而允許其余部分的中地封鎖部分中斷而允許其余部分的中斷仍能得到響應(yīng)。斷仍能得到響應(yīng)。 中斷屏蔽是通過每一類中斷源設(shè)置一個(gè)中斷中斷屏蔽是通過每一類中斷源設(shè)置一個(gè)中斷屏蔽觸發(fā)器來屏蔽它們的中斷請求而實(shí)現(xiàn)的。屏蔽觸發(fā)器來屏蔽它們的中斷請求而實(shí)現(xiàn)的。不過,有些中斷請求是不能屏蔽甚至不能禁止不過,有些中斷請求是不能屏蔽甚至不能禁止的,也就是說,這些中斷具有最高優(yōu)先級。不的,也就是說,這些中斷具有最高優(yōu)先級。不管管CPU是否是關(guān)中斷的,只要這些中斷請求一是否是關(guān)中斷的,只要這些中斷請求一旦提出,旦提出,CPU必須立即響應(yīng)。必
34、須立即響應(yīng)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理559.3.2 中斷的分類與優(yōu)先級中斷的分類與優(yōu)先級n根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一般對中斷進(jìn)行分類并對不同的中斷賦予不般對中斷進(jìn)行分類并對不同的中斷賦予不同的處理優(yōu)先級,以便在不同的中斷同時(shí)同的處理優(yōu)先級,以便在不同的中斷同時(shí)發(fā)生時(shí),按輕重緩急進(jìn)行處理。發(fā)生時(shí),按輕重緩急進(jìn)行處理。操作系統(tǒng)操作系統(tǒng)設(shè)備管理56 根據(jù)中斷源產(chǎn)生的條件,可把中斷分根據(jù)中斷源產(chǎn)生的條件,可把中斷分為外中斷和內(nèi)中斷。為外中斷和內(nèi)中斷。 外中斷外中斷時(shí)指來自處理機(jī)和內(nèi)存外部的時(shí)指來自處理機(jī)和內(nèi)存外部的中斷,包括中斷,包括I/O設(shè)備發(fā)出的設(shè)備發(fā)
35、出的I/O中斷、外部信中斷、外部信號中斷號中斷(例如用戶鍵入例如用戶鍵入ESC鍵鍵)、各種定時(shí)器、各種定時(shí)器引起的時(shí)鐘中斷以及調(diào)試程序中設(shè)置的斷引起的時(shí)鐘中斷以及調(diào)試程序中設(shè)置的斷點(diǎn)等引起的調(diào)試中斷等。外中斷在狹義上點(diǎn)等引起的調(diào)試中斷等。外中斷在狹義上一般被稱為中斷。一般被稱為中斷。操作系統(tǒng)操作系統(tǒng)設(shè)備管理57 內(nèi)中斷內(nèi)中斷主要指在處理機(jī)和內(nèi)存內(nèi)部產(chǎn)主要指在處理機(jī)和內(nèi)存內(nèi)部產(chǎn)生的中斷。內(nèi)中斷一般稱為陷阱生的中斷。內(nèi)中斷一般稱為陷阱(trap)。它包括程序運(yùn)算引起的各種錯(cuò)誤,如地址它包括程序運(yùn)算引起的各種錯(cuò)誤,如地址非法、校驗(yàn)錯(cuò)、頁面失效、存取訪問控制非法、校驗(yàn)錯(cuò)、頁面失效、存取訪問控制錯(cuò)、算術(shù)
36、操作溢出、數(shù)據(jù)格式非法、除數(shù)錯(cuò)、算術(shù)操作溢出、數(shù)據(jù)格式非法、除數(shù)為零、非法指令、用戶程序執(zhí)行特權(quán)指令、為零、非法指令、用戶程序執(zhí)行特權(quán)指令、分時(shí)系統(tǒng)中的時(shí)間片中斷以及從用戶態(tài)到分時(shí)系統(tǒng)中的時(shí)間片中斷以及從用戶態(tài)到核心態(tài)的切換等都是陷阱的例子。核心態(tài)的切換等都是陷阱的例子。操作系統(tǒng)操作系統(tǒng)設(shè)備管理58 為了按中斷源的輕重緩急處理響應(yīng)中斷,為了按中斷源的輕重緩急處理響應(yīng)中斷,操作系統(tǒng)對不同的中斷賦予不同的優(yōu)先級。操作系統(tǒng)對不同的中斷賦予不同的優(yōu)先級。 為了禁止中斷或屏蔽中斷,為了禁止中斷或屏蔽中斷,CPU的處理的處理機(jī)狀態(tài)字機(jī)狀態(tài)字PSW中也設(shè)置有相應(yīng)的優(yōu)先級。中也設(shè)置有相應(yīng)的優(yōu)先級。如果中斷源的
37、優(yōu)先級高于如果中斷源的優(yōu)先級高于PSW的優(yōu)先級,的優(yōu)先級,則則CPU響應(yīng)該中斷源的中斷請求,反之,響應(yīng)該中斷源的中斷請求,反之,CPU屏蔽該中斷源的中斷請求。屏蔽該中斷源的中斷請求。操作系統(tǒng)操作系統(tǒng)設(shè)備管理59中斷和陷阱還有如下主要區(qū)別中斷和陷阱還有如下主要區(qū)別: (1) 陷阱通常由處理機(jī)正在執(zhí)行的現(xiàn)行指令引起,陷阱通常由處理機(jī)正在執(zhí)行的現(xiàn)行指令引起,而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起的。而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起的。(2) 陷阱處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,陷阱處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,而中斷處理程序提供的服務(wù)則不是為了當(dāng)前進(jìn)程的。而中斷處理程序提供的服務(wù)則不是為
38、了當(dāng)前進(jìn)程的。(3) CPU在執(zhí)行完一條指令之后,下一條指令開在執(zhí)行完一條指令之后,下一條指令開始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)陷阱。陷阱。操作系統(tǒng)操作系統(tǒng)設(shè)備管理609.3.3 軟中斷軟中斷 軟中斷是通信進(jìn)程之間用來模擬硬中斷軟中斷是通信進(jìn)程之間用來模擬硬中斷的一種信號通信方式。的一種信號通信方式。操作系統(tǒng)操作系統(tǒng)設(shè)備管理61 軟中斷與硬中斷相同的地方是:其中斷源軟中斷與硬中斷相同的地方是:其中斷源發(fā)中斷請求或軟中斷信號后,發(fā)中斷請求或軟中斷信號后,CPUCPU或接收進(jìn)或接收進(jìn)程在適當(dāng)?shù)臅r(shí)機(jī)自動進(jìn)行中斷處理或完成軟程在適當(dāng)?shù)臅r(shí)機(jī)自動進(jìn)行
39、中斷處理或完成軟中斷信號所對應(yīng)的功能。中斷信號所對應(yīng)的功能。 軟中斷軟中斷的概念主要來源于的概念主要來源于UNIX系統(tǒng)。系統(tǒng)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理629.3.4 中斷處理過程中斷處理過程一旦一旦CPU響應(yīng)中斷,轉(zhuǎn)入中斷處理程序,響應(yīng)中斷,轉(zhuǎn)入中斷處理程序,系統(tǒng)就開始進(jìn)行中斷處理。下面說明中斷處系統(tǒng)就開始進(jìn)行中斷處理。下面說明中斷處理過程理過程: (1) 首先,首先,CPU檢查響應(yīng)中斷的條件是否滿檢查響應(yīng)中斷的條件是否滿足。足。CPU響應(yīng)中斷的條件是響應(yīng)中斷的條件是: 有來自于中斷有來自于中斷源的中斷請求、源的中斷請求、CPU允許中斷。允許中斷。(2) 如果如果CPU響應(yīng)中斷,則響應(yīng)中斷,則
40、CPU關(guān)中斷,使關(guān)中斷,使其進(jìn)入不可再次響應(yīng)中斷的狀態(tài)。其進(jìn)入不可再次響應(yīng)中斷的狀態(tài)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理63 (3) 保存被中斷進(jìn)程現(xiàn)場。這些值一般保保存被中斷進(jìn)程現(xiàn)場。這些值一般保存在特定堆棧或硬件寄存器中。存在特定堆?;蛴布拇嫫髦?。 (4) 分析中斷原因,調(diào)用中斷處理子程序。分析中斷原因,調(diào)用中斷處理子程序。在多個(gè)中斷請求同時(shí)發(fā)生時(shí),處理優(yōu)先級最在多個(gè)中斷請求同時(shí)發(fā)生時(shí),處理優(yōu)先級最高的。在系統(tǒng)中,為了處理上的方便,通常高的。在系統(tǒng)中,為了處理上的方便,通常都是針對不同的中斷源編制有不同的中斷處都是針對不同的中斷源編制有不同的中斷處理子程序理子程序(陷阱處理子程序陷阱處理子程序)。
41、這些子程序的。這些子程序的入口地址入口地址(或陷阱指令的入口地址或陷阱指令的入口地址)存放在內(nèi)存放在內(nèi)存的特定單元中。存的特定單元中。 操作系統(tǒng)操作系統(tǒng)設(shè)備管理64(5) 執(zhí)行中斷處理子程序。對陷阱來說,在執(zhí)行中斷處理子程序。對陷阱來說,在有些系統(tǒng)中則是通過陷阱指令向當(dāng)前執(zhí)行進(jìn)有些系統(tǒng)中則是通過陷阱指令向當(dāng)前執(zhí)行進(jìn)程發(fā)軟中斷信號后調(diào)用對應(yīng)的處理子程序執(zhí)程發(fā)軟中斷信號后調(diào)用對應(yīng)的處理子程序執(zhí)行。行。 (6) 退出中斷,恢復(fù)被中斷進(jìn)程的現(xiàn)場或調(diào)退出中斷,恢復(fù)被中斷進(jìn)程的現(xiàn)場或調(diào)度新進(jìn)程占據(jù)處理機(jī)。度新進(jìn)程占據(jù)處理機(jī)。(7) 開中斷,開中斷,CPU繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。 操作系統(tǒng)設(shè)備管理65圖圖9.9
42、 中斷處理過程中斷處理過程操作系統(tǒng)操作系統(tǒng)設(shè)備管理66I/O Interrupt processing control:beginunusable I/O Interrupt flagsave status of interrupt programif Input Device i Readythen Call Input Device i Control fiif Output Device i Readythen Call Output Device i Control fiif Data Deliver Donethen Call Data Deliver Done Control fi
43、restore CPU statusreset I/O Interrupt flagendInput Device i Control:Output Device i Control: Data Deliver Done Control: 操作系統(tǒng)操作系統(tǒng)設(shè)備管理679.4 緩緩 沖沖 技技 術(shù)術(shù)9.4.1 緩沖的引入緩沖的引入9.4.2 緩沖的種類緩沖的種類9.4.3 緩沖池的管理緩沖池的管理操作系統(tǒng)操作系統(tǒng)設(shè)備管理689.4.1 緩沖的引入緩沖的引入n外圍設(shè)備和外圍設(shè)備和CPU的處理速度不匹配的問題是的處理速度不匹配的問題是客觀存在的。這限制了和處理機(jī)連接的外設(shè)客觀存在的。這限制了和處理機(jī)
44、連接的外設(shè)臺數(shù),且在中斷方式時(shí)造成數(shù)據(jù)丟失。臺數(shù),且在中斷方式時(shí)造成數(shù)據(jù)丟失。n外圍設(shè)備和外圍設(shè)備和CPU處理速度不匹配的問題極大處理速度不匹配的問題極大地制約了計(jì)算機(jī)系統(tǒng)性能的進(jìn)一步提高和限地制約了計(jì)算機(jī)系統(tǒng)性能的進(jìn)一步提高和限制了系統(tǒng)的應(yīng)用范圍。制了系統(tǒng)的應(yīng)用范圍。操作系統(tǒng)操作系統(tǒng)設(shè)備管理69有效降低中斷次數(shù)。有效降低中斷次數(shù)。使用使用DMADMA方式或通道方式控制數(shù)據(jù)傳送時(shí),如果方式或通道方式控制數(shù)據(jù)傳送時(shí),如果不畫分專用的內(nèi)存區(qū)或?qū)S镁彌_器來存放數(shù)據(jù)的話,不畫分專用的內(nèi)存區(qū)或?qū)S镁彌_器來存放數(shù)據(jù)的話,也會因?yàn)橐髷?shù)據(jù)的進(jìn)程所擁有的內(nèi)存區(qū)不夠或存也會因?yàn)橐髷?shù)據(jù)的進(jìn)程所擁有的內(nèi)存區(qū)不夠或
45、存放數(shù)據(jù)的內(nèi)存始址計(jì)算困難等原因而造成某個(gè)進(jìn)程放數(shù)據(jù)的內(nèi)存始址計(jì)算困難等原因而造成某個(gè)進(jìn)程長期占有通道或長期占有通道或DMADMA控制器及設(shè)備,從而產(chǎn)生所謂瓶控制器及設(shè)備,從而產(chǎn)生所謂瓶頸問題。頸問題。操作系統(tǒng)操作系統(tǒng)設(shè)備管理70 為了匹配外設(shè)與為了匹配外設(shè)與CPU之間的處理速度,為之間的處理速度,為了減少中斷次數(shù)和了減少中斷次數(shù)和CPU的中斷處理時(shí)間,同的中斷處理時(shí)間,同時(shí)也是為了解決時(shí)也是為了解決DMA或通道方式時(shí)的瓶頸問或通道方式時(shí)的瓶頸問題,在設(shè)備管理中引入了用來暫存數(shù)據(jù)的緩沖題,在設(shè)備管理中引入了用來暫存數(shù)據(jù)的緩沖技術(shù)。技術(shù)。 根據(jù)根據(jù)I/O控制方式,緩沖的實(shí)現(xiàn)方法有兩控制方式,緩沖
46、的實(shí)現(xiàn)方法有兩種,一種是采用專用種,一種是采用專用硬件緩沖器硬件緩沖器,例如,例如I/O控控制器中的數(shù)據(jù)緩沖寄存器。另一種方法是在內(nèi)制器中的數(shù)據(jù)緩沖寄存器。另一種方法是在內(nèi)存畫出一個(gè)具有存畫出一個(gè)具有n個(gè)單元的專用緩沖區(qū),以便個(gè)單元的專用緩沖區(qū),以便存放輸入輸出的數(shù)據(jù)。內(nèi)存緩沖區(qū)又稱存放輸入輸出的數(shù)據(jù)。內(nèi)存緩沖區(qū)又稱軟件緩軟件緩沖。沖。操作系統(tǒng)操作系統(tǒng)設(shè)備管理719.4.2 緩沖的種類緩沖的種類 根據(jù)系統(tǒng)設(shè)置的緩沖器的個(gè)數(shù),可把緩沖根據(jù)系統(tǒng)設(shè)置的緩沖器的個(gè)數(shù),可把緩沖技術(shù)分為技術(shù)分為單緩沖、雙緩沖和多緩沖以及緩沖單緩沖、雙緩沖和多緩沖以及緩沖池幾種。池幾種。 單緩沖是在設(shè)備和處理機(jī)之間設(shè)置一個(gè)
47、緩單緩沖是在設(shè)備和處理機(jī)之間設(shè)置一個(gè)緩沖器。設(shè)備和設(shè)備之間不能通過單緩沖達(dá)到?jīng)_器。設(shè)備和設(shè)備之間不能通過單緩沖達(dá)到并行操作。并行操作。操作系統(tǒng)操作系統(tǒng)設(shè)備管理72 解決兩臺外設(shè)、打印機(jī)和終端之間的解決兩臺外設(shè)、打印機(jī)和終端之間的并行操作問題的辦法是設(shè)置雙緩沖。有了并行操作問題的辦法是設(shè)置雙緩沖。有了兩個(gè)緩沖器之后,兩個(gè)緩沖器之后,CPU可把輸出到打印機(jī)可把輸出到打印機(jī)的數(shù)據(jù)放入其中一個(gè)緩沖器的數(shù)據(jù)放入其中一個(gè)緩沖器(區(qū)區(qū)),讓打印,讓打印機(jī)慢慢打印機(jī)慢慢打印; 然后,它又可以從另一個(gè)為然后,它又可以從另一個(gè)為終端設(shè)置的緩沖器終端設(shè)置的緩沖器(區(qū)區(qū))中讀取所需要的輸中讀取所需要的輸入數(shù)據(jù)。入數(shù)據(jù)
48、。操作系統(tǒng)操作系統(tǒng)設(shè)備管理73 雙緩沖只是一種說明設(shè)備和設(shè)備、雙緩沖只是一種說明設(shè)備和設(shè)備、CPU和設(shè)備并行操作的簡單模型,并不能和設(shè)備并行操作的簡單模型,并不能用于實(shí)際系統(tǒng)中的并行操作。這是因?yàn)橛?jì)用于實(shí)際系統(tǒng)中的并行操作。這是因?yàn)橛?jì)算機(jī)系統(tǒng)中的外圍設(shè)備較多,另外算機(jī)系統(tǒng)中的外圍設(shè)備較多,另外,雙緩雙緩沖也很難匹配設(shè)備和處理機(jī)的處理速度。沖也很難匹配設(shè)備和處理機(jī)的處理速度。因此,現(xiàn)代計(jì)算機(jī)系統(tǒng)中一般使用多緩沖因此,現(xiàn)代計(jì)算機(jī)系統(tǒng)中一般使用多緩沖或緩沖池結(jié)構(gòu)。或緩沖池結(jié)構(gòu)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理74 多緩沖是把多個(gè)緩沖區(qū)連接起來組成多緩沖是把多個(gè)緩沖區(qū)連接起來組成兩部分,一部分專門用于輸入,另
49、一部分兩部分,一部分專門用于輸入,另一部分專門用于輸出的緩沖結(jié)構(gòu)。緩沖池則是把專門用于輸出的緩沖結(jié)構(gòu)。緩沖池則是把多個(gè)緩沖區(qū)連接起來統(tǒng)一管理,既可用于多個(gè)緩沖區(qū)連接起來統(tǒng)一管理,既可用于輸入又可用于輸出的緩沖結(jié)構(gòu)。輸入又可用于輸出的緩沖結(jié)構(gòu)。 無論是多緩沖,還是緩沖池,由于緩無論是多緩沖,還是緩沖池,由于緩沖器是臨界資源,在使用緩沖區(qū)時(shí)都有一沖器是臨界資源,在使用緩沖區(qū)時(shí)都有一個(gè)申請、釋放和互斥的問題。個(gè)申請、釋放和互斥的問題。操作系統(tǒng)操作系統(tǒng)設(shè)備管理759.4.3 緩沖池的管理緩沖池的管理1. 緩沖池的結(jié)構(gòu)緩沖池的結(jié)構(gòu) 緩沖池由多個(gè)緩沖區(qū)組成。而一個(gè)緩沖緩沖池由多個(gè)緩沖區(qū)組成。而一個(gè)緩沖區(qū)由
50、兩部分組成區(qū)由兩部分組成: 一部分是用來標(biāo)識該緩沖器一部分是用來標(biāo)識該緩沖器和用于管理的緩沖首部,另一部分是用于存和用于管理的緩沖首部,另一部分是用于存放數(shù)據(jù)的緩沖體。放數(shù)據(jù)的緩沖體。對緩沖池的管理是通過對每一個(gè)緩沖器的對緩沖池的管理是通過對每一個(gè)緩沖器的緩沖首部進(jìn)行操作實(shí)現(xiàn)的。緩沖首部進(jìn)行操作實(shí)現(xiàn)的。操作系統(tǒng)操作系統(tǒng)設(shè)備管理76 緩沖首部如圖緩沖首部如圖9.9所示,它包括設(shè)備號、所示,它包括設(shè)備號、設(shè)備上的數(shù)據(jù)塊號設(shè)備上的數(shù)據(jù)塊號(塊設(shè)備時(shí)塊設(shè)備時(shí))、互斥標(biāo)識位、互斥標(biāo)識位以及緩沖隊(duì)列連接指針和緩沖器號等。以及緩沖隊(duì)列連接指針和緩沖器號等。系統(tǒng)把各緩沖區(qū)按其使用狀況連成三種隊(duì)列系統(tǒng)把各緩沖區(qū)
51、按其使用狀況連成三種隊(duì)列:(1) 空白緩沖隊(duì)列空白緩沖隊(duì)列em,其隊(duì)首指針為,其隊(duì)首指針為F(em),隊(duì)尾指針為,隊(duì)尾指針為L(em); (2) 裝滿輸入數(shù)據(jù)的輸入緩沖隊(duì)列裝滿輸入數(shù)據(jù)的輸入緩沖隊(duì)列in,其,其隊(duì)首指針為隊(duì)首指針為F(in),隊(duì)尾指針為,隊(duì)尾指針為L(in); (3) 裝滿輸出數(shù)據(jù)的輸出緩沖隊(duì)列裝滿輸出數(shù)據(jù)的輸出緩沖隊(duì)列out,其隊(duì)首指針為其隊(duì)首指針為F(out),隊(duì)尾指針為,隊(duì)尾指針為L(out)。操作系統(tǒng)操作系統(tǒng)設(shè)備管理77圖圖9.9 緩沖首部緩沖首部操作系統(tǒng)設(shè)備管理78圖圖9.10 緩沖區(qū)隊(duì)列緩沖區(qū)隊(duì)列操作系統(tǒng)操作系統(tǒng)設(shè)備管理79除了三種緩沖隊(duì)列之外,系統(tǒng)除了三種緩沖隊(duì)列
52、之外,系統(tǒng)( (或用戶進(jìn)或用戶進(jìn)程程) )從這三種隊(duì)列中申請和取出緩沖區(qū),并用從這三種隊(duì)列中申請和取出緩沖區(qū),并用得到的緩沖區(qū)進(jìn)行存數(shù)、取數(shù)操作,在存數(shù)、得到的緩沖區(qū)進(jìn)行存數(shù)、取數(shù)操作,在存數(shù)、取數(shù)操作結(jié)束后,再將緩沖區(qū)放入相應(yīng)的隊(duì)取數(shù)操作結(jié)束后,再將緩沖區(qū)放入相應(yīng)的隊(duì)列。這些緩沖區(qū)被稱為工作緩沖區(qū)。在緩沖列。這些緩沖區(qū)被稱為工作緩沖區(qū)。在緩沖池中,有池中,有4 4種工作緩沖區(qū)種工作緩沖區(qū), ,即即: :操作系統(tǒng)操作系統(tǒng)設(shè)備管理80(1) (1) 用于收容設(shè)備輸入數(shù)據(jù)的收容輸用于收容設(shè)備輸入數(shù)據(jù)的收容輸入緩沖區(qū)入緩沖區(qū)hin;hin;(2) (2) 用于提取設(shè)備輸入數(shù)據(jù)的提取輸用于提取設(shè)備輸入
53、數(shù)據(jù)的提取輸入緩沖區(qū)入緩沖區(qū)sin;sin;(3) (3) 用于收容用于收容CPUCPU輸出數(shù)據(jù)的收容輸出輸出數(shù)據(jù)的收容輸出緩沖區(qū)緩沖區(qū)hout;hout;(4) (4) 用于提取用于提取CPUCPU輸出數(shù)據(jù)的提取輸出輸出數(shù)據(jù)的提取輸出緩沖區(qū)緩沖區(qū)soutsout。操作系統(tǒng)設(shè)備管理81圖圖9.11 緩沖池的工作緩沖區(qū)緩沖池的工作緩沖區(qū)操作系統(tǒng)操作系統(tǒng)設(shè)備管理822. 緩沖池管理緩沖池管理對緩沖池的管理由如下幾個(gè)操作組成對緩沖池的管理由如下幾個(gè)操作組成: (1) 從三種緩沖區(qū)隊(duì)列中按一定的選取規(guī)則取從三種緩沖區(qū)隊(duì)列中按一定的選取規(guī)則取出一個(gè)緩沖區(qū)的過程出一個(gè)緩沖區(qū)的過程take_buf(type
54、);(2) 把緩沖區(qū)按一定的選取規(guī)則插入相應(yīng)的緩把緩沖區(qū)按一定的選取規(guī)則插入相應(yīng)的緩沖區(qū)隊(duì)列的過程沖區(qū)隊(duì)列的過程add_buf(type, number);操作系統(tǒng)操作系統(tǒng)設(shè)備管理83( 3 ) 供 進(jìn) 程 申 請 緩 沖 區(qū) 用 的 過 程供 進(jìn) 程 申 請 緩 沖 區(qū) 用 的 過 程get_buf(type,number);(4) 供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊(duì)列的供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊(duì)列的過程過程put_buf(type,work_buf)。 參數(shù)參數(shù)type表示緩沖隊(duì)列類型,表示緩沖隊(duì)列類型,number為緩沖為緩沖區(qū)號區(qū)號work_buf則表示工作緩沖區(qū)類型。則表示工作緩沖區(qū)
55、類型。操作系統(tǒng)操作系統(tǒng)設(shè)備管理84 使用這幾個(gè)操作,緩沖池的工作過程可描述如下使用這幾個(gè)操作,緩沖池的工作過程可描述如下: 首先,輸入進(jìn)程調(diào)用首先,輸入進(jìn)程調(diào)用get_buf(em,number)get_buf(em,number)過程從空過程從空白緩沖區(qū)隊(duì)列中取出一個(gè)緩沖號為白緩沖區(qū)隊(duì)列中取出一個(gè)緩沖號為numbernumber的空白緩沖的空白緩沖區(qū),將其作為收容輸入緩沖區(qū)區(qū),將其作為收容輸入緩沖區(qū)hinhin,當(dāng),當(dāng)hinhin中裝滿了由中裝滿了由輸 入 設(shè) 備 輸 入 的 數(shù) 據(jù) 之 后 , 系 統(tǒng) 調(diào) 用 過 程輸 入 設(shè) 備 輸 入 的 數(shù) 據(jù) 之 后 , 系 統(tǒng) 調(diào) 用 過 程pu
56、t_buf(in,hin)put_buf(in,hin)將該緩沖區(qū)插入輸入緩沖區(qū)隊(duì)列將該緩沖區(qū)插入輸入緩沖區(qū)隊(duì)列inin中。中。 另外,當(dāng)進(jìn)程需要輸出數(shù)據(jù)時(shí),輸出進(jìn)程經(jīng)過緩沖另外,當(dāng)進(jìn)程需要輸出數(shù)據(jù)時(shí),輸出進(jìn)程經(jīng)過緩沖管理程序調(diào)用過程管理程序調(diào)用過程get_buf(em,number)get_buf(em,number)從空白緩沖區(qū)從空白緩沖區(qū)隊(duì)列中取出一個(gè)空白緩沖區(qū)隊(duì)列中取出一個(gè)空白緩沖區(qū)numbernumber作為收容輸出緩沖作為收容輸出緩沖區(qū)區(qū)houthout,待,待houthout中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調(diào)用過中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調(diào)用過程程put_buf(out,hout)pu
57、t_buf(out,hout)將該緩沖區(qū)插入輸出緩沖區(qū)隊(duì)將該緩沖區(qū)插入輸出緩沖區(qū)隊(duì)列列outout。操作系統(tǒng)操作系統(tǒng)設(shè)備管理85對緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是由過對緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是由過程程get_bufget_buf和和put_bufput_buf實(shí)現(xiàn)的。實(shí)現(xiàn)的。get_buf(out,number)get_buf(out,number)從輸出緩沖隊(duì)列中取出裝從輸出緩沖隊(duì)列中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)滿輸出數(shù)據(jù)的緩沖區(qū)numbernumber,將其作為,將其作為soutsout。當(dāng)。當(dāng)s o u ts o u t 中 數(shù) 據(jù) 輸 出 完 畢 時(shí) , 系 統(tǒng) 調(diào) 用 過
58、 程中 數(shù) 據(jù) 輸 出 完 畢 時(shí) , 系 統(tǒng) 調(diào) 用 過 程put_buf(em,sout)put_buf(em,sout)將該緩沖區(qū)插入空白緩沖隊(duì)列。將該緩沖區(qū)插入空白緩沖隊(duì)列。get_buf(in,number)get_buf(in,number)則從輸入緩沖隊(duì)列中取出一則從輸入緩沖隊(duì)列中取出一個(gè)裝滿輸入數(shù)據(jù)的緩沖區(qū)個(gè)裝滿輸入數(shù)據(jù)的緩沖區(qū)numbernumber作為輸入緩沖區(qū)作為輸入緩沖區(qū)sinsin,當(dāng),當(dāng)CPUCPU從中提取完所需數(shù)據(jù)之后,系統(tǒng)調(diào)用從中提取完所需數(shù)據(jù)之后,系統(tǒng)調(diào)用過程過程put_buf(em,sin)put_buf(em,sin)將該緩沖區(qū)釋放和插入空將該緩沖區(qū)釋放和
59、插入空白緩沖隊(duì)列白緩沖隊(duì)列emem中。中。操作系統(tǒng)操作系統(tǒng)設(shè)備管理86 對于各緩沖隊(duì)列中緩沖區(qū)的排列以及每次取出對于各緩沖隊(duì)列中緩沖區(qū)的排列以及每次取出和插入緩沖隊(duì)列區(qū)的順序都應(yīng)有一定的規(guī)則。最和插入緩沖隊(duì)列區(qū)的順序都應(yīng)有一定的規(guī)則。最簡單的方法是簡單的方法是FIFO,即先來先出的排列方法。采,即先來先出的排列方法。采用用 FIFO方法,過程方法,過程 put_buf每次把緩沖區(qū)插入相每次把緩沖區(qū)插入相應(yīng)緩沖隊(duì)列的隊(duì)尾,而過程應(yīng)緩沖隊(duì)列的隊(duì)尾,而過程 get_buf 則取出相應(yīng)則取出相應(yīng)緩沖隊(duì)列的第一個(gè)緩沖區(qū),從而緩沖隊(duì)列的第一個(gè)緩沖區(qū),從而get_buf中的第中的第二個(gè)參數(shù)二個(gè)參數(shù) numb
60、er可以省略。而且,采用可以省略。而且,采用 FIFO 方法也省略了對緩沖隊(duì)列的搜索時(shí)間。方法也省略了對緩沖隊(duì)列的搜索時(shí)間。操作系統(tǒng)操作系統(tǒng)設(shè)備管理87 過 程過 程 a d d _ b u f ( t y p e , n u m b e r ) 和和 take_buf(type,number)分別用來把緩沖區(qū)分別用來把緩沖區(qū)number插入插入 type 隊(duì)列和從隊(duì)列和從 type隊(duì)列中取出隊(duì)列中取出緩沖區(qū)緩沖區(qū) number。它們分別被過程。它們分別被過程get_buf和和Put_buf調(diào)用,其中調(diào)用,其中, take_buf返回所取緩沖返回所取緩沖區(qū)區(qū)number的指針的指針, 而而ad
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人食堂承包協(xié)議書
- 單片機(jī)原理與應(yīng)用練習(xí)題與參考答案
- 人防租賃轉(zhuǎn)讓合同范本
- 熱工基礎(chǔ) 模擬試題
- 萬年牢說課稿
- 一周學(xué)習(xí)總結(jié)
- 一防水合同范例
- 兼職定金合同范本
- 《荊棘鳥》讀書心得
- 制作甲方合同范本
- 林木采伐安全協(xié)議書范本
- 2025年湖南食品藥品職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 碳酸鈣脫硫劑項(xiàng)目可行性研究報(bào)告立項(xiàng)申請報(bào)告模板
- 山東省泰安市新泰市2024-2025學(xué)年(五四學(xué)制)九年級上學(xué)期1月期末道德與法治試題(含答案)
- DB3502T 160-2024 工業(yè)產(chǎn)品質(zhì)量技術(shù)幫扶和質(zhì)量安全監(jiān)管聯(lián)動工作規(guī)范
- 燃?xì)廪r(nóng)村協(xié)管員培訓(xùn)
- 春節(jié)后復(fù)工安全教育培訓(xùn)
- 提高發(fā)票額度的合同6篇
- 車站信號自動控制(第二版) 課件 -3-6502部分
- 2024安徽教師統(tǒng)一招聘考試《小學(xué)英語》試卷真題及答案
- TPO防水卷材在商業(yè)建筑屋面施工方案
評論
0/150
提交評論