操作系統(tǒng)設備管理_第1頁
操作系統(tǒng)設備管理_第2頁
操作系統(tǒng)設備管理_第3頁
操作系統(tǒng)設備管理_第4頁
操作系統(tǒng)設備管理_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第8章章 設備管理設備管理8.1 引言引言8.2 數(shù)據(jù)傳送控制方式數(shù)據(jù)傳送控制方式8.3 中斷技術中斷技術8.4 緩沖技術緩沖技術8.5 設備分配設備分配8.6 I/O進程控制進程控制8.7 設備驅動程序設備驅動程序本章小結本章小結習題習題本章主要討論設備管理的基本概念,包括中斷、本章主要討論設備管理的基本概念,包括中斷、緩沖、設備分配和控制等。緩沖、設備分配和控制等。8.1 引引 言言8.1.1 設備的類別設備的類別外部設備外部設備=除了除了CPU和內存之外其他的硬設備和內存之外其他的硬設備. 它包括常用的輸入輸出設備、外存設備以及終端設備它包括常用的輸入輸出設備、外存設備以及終端設備等。

2、等。圖圖8.1 按使用特性對外部設備的分類按使用特性對外部設備的分類除了上述分類方法之外,在有的系統(tǒng)中還按信息除了上述分類方法之外,在有的系統(tǒng)中還按信息組織方式來畫分設備。例如,組織方式來畫分設備。例如,UNIX系統(tǒng)就把外部設系統(tǒng)就把外部設備畫分為字符設備和塊設備。鍵盤、終端、打印機等備畫分為字符設備和塊設備。鍵盤、終端、打印機等以字符為單位組織和處理信息的設備被稱為字符設備;以字符為單位組織和處理信息的設備被稱為字符設備;而磁盤、磁帶等以字符塊為單位組織和處理信息的設而磁盤、磁帶等以字符塊為單位組織和處理信息的設備被稱為塊設備。備被稱為塊設備。8.1.2 設備管理的功能和任務設備管理的功能和

3、任務設備管理是對計算機輸入輸出系統(tǒng)的管理。設備管理是對計算機輸入輸出系統(tǒng)的管理。 (1) 選擇和分配輸入輸出設備以進行數(shù)據(jù)傳輸操作;選擇和分配輸入輸出設備以進行數(shù)據(jù)傳輸操作;(2) 控制輸入輸出設備和控制輸入輸出設備和CPU(或內存)之間交換數(shù)(或內存)之間交換數(shù)據(jù);據(jù);(3) 為用戶提供友好的透明接口,把用戶和設備硬件為用戶提供友好的透明接口,把用戶和設備硬件特性分開,使得用戶在編制應用程序時不必涉及具體設備,特性分開,使得用戶在編制應用程序時不必涉及具體設備,系統(tǒng)按用戶要求控制設備工作。另外,這個接口還為新增系統(tǒng)按用戶要求控制設備工作。另外,這個接口還為新增加的用戶設備提供一個和系統(tǒng)核心相

4、連接的入口,以便用加的用戶設備提供一個和系統(tǒng)核心相連接的入口,以便用戶開發(fā)新的設備管理程序;戶開發(fā)新的設備管理程序;(4) 提高設備和設備之間、提高設備和設備之間、CPU和設備之間,以及進和設備之間,以及進程和進程之間的并行操作度,以使操作系統(tǒng)獲得最佳效率。程和進程之間的并行操作度,以使操作系統(tǒng)獲得最佳效率。為了完成上述主要任務,設備管理程序一般要提為了完成上述主要任務,設備管理程序一般要提供下述功能:供下述功能:(1) 提供和進程管理系統(tǒng)的接口。當進程要求設提供和進程管理系統(tǒng)的接口。當進程要求設備資源時,該接口將進程要求轉達給設備管理程序;備資源時,該接口將進程要求轉達給設備管理程序;(2)

5、 進行設備分配。按照設備類型和相應的分配進行設備分配。按照設備類型和相應的分配算法把設備和其他有關的硬件分配給請求該設備的進算法把設備和其他有關的硬件分配給請求該設備的進程,并把未分配到所請求設備或其他有關硬件的進程程,并把未分配到所請求設備或其他有關硬件的進程放入等待隊列;放入等待隊列;(3) 實現(xiàn)設備和設備、設備和實現(xiàn)設備和設備、設備和CPU等之間的并行等之間的并行操作。這需要有相應的硬件支持。操作。這需要有相應的硬件支持。(4) 進行緩沖區(qū)管理。一般來說,進行緩沖區(qū)管理。一般來說,CPU的執(zhí)行速的執(zhí)行速度和訪問內存速度都比較高,而外部設備的數(shù)據(jù)流通度和訪問內存速度都比較高,而外部設備的數(shù)

6、據(jù)流通速度則低得多(例如鍵盤),為了減少外部設備和內速度則低得多(例如鍵盤),為了減少外部設備和內存與存與CPU之間的數(shù)據(jù)速度不匹配的問題,系統(tǒng)中一之間的數(shù)據(jù)速度不匹配的問題,系統(tǒng)中一般設有緩沖區(qū)(器)來暫放數(shù)據(jù)。設備管理程序負責般設有緩沖區(qū)(器)來暫放數(shù)據(jù)。設備管理程序負責進行緩沖區(qū)分配、釋放及有關的管理工作。進行緩沖區(qū)分配、釋放及有關的管理工作。8.2 數(shù)據(jù)傳送控制方式數(shù)據(jù)傳送控制方式設備管理的主要任務之一是控制設備和內存或設備管理的主要任務之一是控制設備和內存或CPU之間的數(shù)據(jù)傳送。之間的數(shù)據(jù)傳送。選擇和衡量控制方式有如下幾條原則:選擇和衡量控制方式有如下幾條原則:(1) 數(shù)據(jù)傳送速度足

7、夠高,能滿足用戶的需要但數(shù)據(jù)傳送速度足夠高,能滿足用戶的需要但又不丟失數(shù)據(jù);又不丟失數(shù)據(jù);(2) 系統(tǒng)開銷小,所需的處理控制程序少;系統(tǒng)開銷小,所需的處理控制程序少;(3) 能充分發(fā)揮硬件資源的能力,使得能充分發(fā)揮硬件資源的能力,使得I/O設備盡設備盡量忙,而量忙,而CPU等待時間少。為了控制等待時間少。為了控制I/O設備和內存設備和內存之間的數(shù)據(jù)交換,每臺外圍設備都按一定規(guī)律編碼。之間的數(shù)據(jù)交換,每臺外圍設備都按一定規(guī)律編碼。而且,設備和內存與而且,設備和內存與CPU之間有相應的硬件接口支之間有相應的硬件接口支持同步控制、設備選擇以及中斷控制等。持同步控制、設備選擇以及中斷控制等。外圍設備和

8、內存之間的常用數(shù)據(jù)傳送控制方式有外圍設備和內存之間的常用數(shù)據(jù)傳送控制方式有4種。即:種。即:(1) 程序直接控制方式;程序直接控制方式;(2) 中斷控制方式;中斷控制方式;(3) DMA方式;方式;(4) 通道方式。通道方式。8.2.1 程序直接控制方式程序直接控制方式就是由用戶進程來直接控制內存或就是由用戶進程來直接控制內存或CPU和外圍和外圍設備之間的信息傳送。這種方式的控制者是用戶進程。設備之間的信息傳送。這種方式的控制者是用戶進程。當用戶進程需要數(shù)據(jù)時,它通過當用戶進程需要數(shù)據(jù)時,它通過CPU發(fā)出啟動設備發(fā)出啟動設備準備數(shù)據(jù)的啟動命令準備數(shù)據(jù)的啟動命令“Start”,然后,用戶進程進入

9、,然后,用戶進程進入測試等待狀態(tài)。在等待時間內,測試等待狀態(tài)。在等待時間內,CPU不斷地用一條不斷地用一條測試指令檢查描述外圍設備的工作狀態(tài)的控制狀態(tài)寄測試指令檢查描述外圍設備的工作狀態(tài)的控制狀態(tài)寄存器。而外圍設備只有將數(shù)據(jù)傳送的準備工作作好之存器。而外圍設備只有將數(shù)據(jù)傳送的準備工作作好之后,才將該寄存器置為完成狀態(tài)。從而,當后,才將該寄存器置為完成狀態(tài)。從而,當CPU檢檢測到控制狀態(tài)寄存器為完成狀態(tài),也就是該寄存器發(fā)測到控制狀態(tài)寄存器為完成狀態(tài),也就是該寄存器發(fā)出出“Done”信號之后,設備開始往內存或信號之后,設備開始往內存或CPU傳送數(shù)傳送數(shù)據(jù)。反之,當用戶進程需要向設備輸出數(shù)據(jù)時,也必

10、據(jù)。反之,當用戶進程需要向設備輸出數(shù)據(jù)時,也必須同樣發(fā)啟動命令啟動設備和等待設備準備好之后才須同樣發(fā)啟動命令啟動設備和等待設備準備好之后才能輸出數(shù)據(jù)。能輸出數(shù)據(jù)。除了控制狀態(tài)寄存器之外,在除了控制狀態(tài)寄存器之外,在I/O控制器中還有控制器中還有一類稱為數(shù)據(jù)緩沖寄存器的寄存器。在一類稱為數(shù)據(jù)緩沖寄存器的寄存器。在CPU與外圍與外圍設備之間傳送數(shù)據(jù)時,輸入設備每進行一次操作,首設備之間傳送數(shù)據(jù)時,輸入設備每進行一次操作,首先把所輸入的數(shù)據(jù)送入該寄存器,然后,先把所輸入的數(shù)據(jù)送入該寄存器,然后,CPU再把再把其中數(shù)據(jù)取走。反之,當其中數(shù)據(jù)取走。反之,當CPU輸出數(shù)據(jù)時,也是先輸出數(shù)據(jù)時,也是先把數(shù)據(jù)

11、輸出到該寄存器之后,再由輸出設備將其取走。把數(shù)據(jù)輸出到該寄存器之后,再由輸出設備將其取走。只有數(shù)據(jù)裝入該寄存器之后,控制狀態(tài)寄存器的值才只有數(shù)據(jù)裝入該寄存器之后,控制狀態(tài)寄存器的值才會發(fā)生變化。程序直接控制方式的控制流程如圖會發(fā)生變化。程序直接控制方式的控制流程如圖8.2。圖圖8.2 程序直接控制方式程序直接控制方式程序直接控制方式雖然控制簡單,也不需要多少程序直接控制方式雖然控制簡單,也不需要多少硬件支持,但是,明顯地存在下述缺點:硬件支持,但是,明顯地存在下述缺點:(1) CPU和外圍設備只能串行工作。由于和外圍設備只能串行工作。由于CPU的的處理速度要大大高于外圍設備的數(shù)據(jù)傳送和處理速度

12、,處理速度要大大高于外圍設備的數(shù)據(jù)傳送和處理速度,所以,所以,CPU的大量時間都處于等待和空閑狀態(tài)。這的大量時間都處于等待和空閑狀態(tài)。這使得使得CPU的利用率大大降低;的利用率大大降低;(2) CPU在一段時間內只能和一臺外圍設備交換在一段時間內只能和一臺外圍設備交換數(shù)據(jù)信息,從而不能實現(xiàn)設備之間的并行工作;數(shù)據(jù)信息,從而不能實現(xiàn)設備之間的并行工作;(3) 由于程序直接控制方式依靠測試設備標志觸由于程序直接控制方式依靠測試設備標志觸發(fā)器的狀態(tài)位來控制數(shù)據(jù)傳送,因此無法發(fā)現(xiàn)和處理發(fā)器的狀態(tài)位來控制數(shù)據(jù)傳送,因此無法發(fā)現(xiàn)和處理由于設備或其他硬件所產(chǎn)生的錯誤。所認,程序直接由于設備或其他硬件所產(chǎn)生的

13、錯誤。所認,程序直接控制方式只適用于那些控制方式只適用于那些CPU執(zhí)行速度較慢,而且外執(zhí)行速度較慢,而且外圍設備較少的系統(tǒng)。圍設備較少的系統(tǒng)。8.2.2 中斷方式中斷方式為了減少程序直接控制方式中為了減少程序直接控制方式中CPU等待時間以等待時間以及提高系統(tǒng)的并行工作程度,中斷及提高系統(tǒng)的并行工作程度,中斷(interrupt)方式被方式被用來控制外圍設備和內存與用來控制外圍設備和內存與CPU之間的數(shù)據(jù)傳送。之間的數(shù)據(jù)傳送。這種方式要求這種方式要求CPU與設備與設備(或控制器或控制器)之間有相應的中之間有相應的中斷請求線,而且在設備控制器的控制狀態(tài)寄存器的相斷請求線,而且在設備控制器的控制狀態(tài)

14、寄存器的相應的中斷允許位。中斷方式的傳送結構如圖應的中斷允許位。中斷方式的傳送結構如圖8.3所示。所示。從而,數(shù)據(jù)的輸入可按如下步驟操作。從而,數(shù)據(jù)的輸入可按如下步驟操作。(1) 首先,進程需要數(shù)據(jù)時,通過首先,進程需要數(shù)據(jù)時,通過CPU發(fā)出發(fā)出“Start”指令啟動外圍設備準備數(shù)據(jù)。該指令同時還指令啟動外圍設備準備數(shù)據(jù)。該指令同時還將控制狀態(tài)寄存器中的中斷允許位打開,以便在需要將控制狀態(tài)寄存器中的中斷允許位打開,以便在需要時,中斷程序可以被調用執(zhí)行。時,中斷程序可以被調用執(zhí)行。圖圖8.3 中斷控制方式的傳送結構中斷控制方式的傳送結構(2) 在進程發(fā)出指令啟動設備之后,該進程放棄在進程發(fā)出指令

15、啟動設備之后,該進程放棄處理機,等待輸入完成。從而,進程調度程序調度其處理機,等待輸入完成。從而,進程調度程序調度其他就緒進程占據(jù)處理機。他就緒進程占據(jù)處理機。(3) 當輸入完成時,當輸入完成時,I/O控制器通過中斷請求線向控制器通過中斷請求線向CPU發(fā)出中斷信號。發(fā)出中斷信號。CPU在接收到中斷信號之后,在接收到中斷信號之后,轉向預先設計好的中斷處理程序對數(shù)據(jù)傳送工作進行轉向預先設計好的中斷處理程序對數(shù)據(jù)傳送工作進行相應的處理。相應的處理。(4) 在以后的某個時刻,進程調度程序選中提出在以后的某個時刻,進程調度程序選中提出請求并得到了數(shù)據(jù)的進程,該進程從約定的內存特定請求并得到了數(shù)據(jù)的進程,

16、該進程從約定的內存特定單元中取出數(shù)據(jù)繼續(xù)工作。單元中取出數(shù)據(jù)繼續(xù)工作。中斷控制方式的處理過程可由圖中斷控制方式的處理過程可由圖8.4表示。表示。圖圖8.4 中斷控制方式的處理過程中斷控制方式的處理過程由圖由圖8.4可以看出,當可以看出,當CPU發(fā)出啟動設備和允許發(fā)出啟動設備和允許中斷指令之后,它沒有像程序直接控制方式那樣循環(huán)中斷指令之后,它沒有像程序直接控制方式那樣循環(huán)測試狀態(tài)控制寄存器的狀態(tài)是否已處于測試狀態(tài)控制寄存器的狀態(tài)是否已處于“Done”。反。反之,之,CPU已被調度程序分配給其他進程在另外的進已被調度程序分配給其他進程在另外的進程上下文中執(zhí)行。當設備將數(shù)據(jù)送入緩沖寄存器并發(fā)程上下文

17、中執(zhí)行。當設備將數(shù)據(jù)送入緩沖寄存器并發(fā)出中斷信號之后,出中斷信號之后,CPU接收中斷信號進行中斷處理。接收中斷信號進行中斷處理。顯然,顯然,CPU在另外的進程上下文中執(zhí)行時,也可以在另外的進程上下文中執(zhí)行時,也可以發(fā)啟動不同設備的啟動指令和允許中斷指令,從而做發(fā)啟動不同設備的啟動指令和允許中斷指令,從而做到設備與設備間的并行操作以及設備和到設備與設備間的并行操作以及設備和CPU間的并間的并行操作。行操作。優(yōu)點優(yōu)點:中斷方式中斷方式CPU的利用率大大提高且能支持的利用率大大提高且能支持多道程序和設備的并行操作多道程序和設備的并行操作缺點缺點:由于在由于在I/O控制器的數(shù)據(jù)緩沖寄存器裝滿數(shù)控制器的

18、數(shù)據(jù)緩沖寄存器裝滿數(shù)據(jù)之后將會發(fā)生中斷,而且數(shù)據(jù)緩沖寄存通常較小,據(jù)之后將會發(fā)生中斷,而且數(shù)據(jù)緩沖寄存通常較小,因此,在一次數(shù)據(jù)傳送過程中,發(fā)生中斷次數(shù)較多。因此,在一次數(shù)據(jù)傳送過程中,發(fā)生中斷次數(shù)較多。這將耗去大量的這將耗去大量的CPU處理時間。處理時間?,F(xiàn)代計算機系統(tǒng)通常配置有各種各樣的外圍設備?,F(xiàn)代計算機系統(tǒng)通常配置有各種各樣的外圍設備。如果這些設備通過中斷處理方式進行并行操作,則由如果這些設備通過中斷處理方式進行并行操作,則由于中斷次數(shù)的急劇增加而造成于中斷次數(shù)的急劇增加而造成CPU無法響應中斷和無法響應中斷和出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。8.2.3 DMA方式方式又稱直接存取方

19、式?;舅枷胧窃谕鈬O備和內又稱直接存取方式?;舅枷胧窃谕鈬O備和內存之間開辟直接的數(shù)據(jù)交換通路。在存之間開辟直接的數(shù)據(jù)交換通路。在DMA方式中,方式中,I/O控制器具有比中斷方式和程序直接控制方式時更控制器具有比中斷方式和程序直接控制方式時更強的功能。除了控制狀態(tài)寄存器和數(shù)據(jù)緩沖寄存器之強的功能。除了控制狀態(tài)寄存器和數(shù)據(jù)緩沖寄存器之外,外,DMA控制器中還包括傳送字節(jié)計數(shù)器、內存地控制器中還包括傳送字節(jié)計數(shù)器、內存地址寄存器等。這是因為址寄存器等。這是因為DMA方式竊取或挪用方式竊取或挪用CPU的的一個工作周期把數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)直接送到內一個工作周期把數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)直接送到內

20、存地址寄存器所指向的內存區(qū)域。存地址寄存器所指向的內存區(qū)域。從而,從而,DMA控制器可用來代替控制器可用來代替CPU控制內存和控制內存和設備之間進行成批的數(shù)據(jù)交換。批量數(shù)據(jù)設備之間進行成批的數(shù)據(jù)交換。批量數(shù)據(jù)(數(shù)據(jù)塊數(shù)據(jù)塊)的的傳送由計數(shù)器逐個計數(shù),并由內存地址寄存器確定內傳送由計數(shù)器逐個計數(shù),并由內存地址寄存器確定內存地址。除了在數(shù)據(jù)塊傳送開始時需要存地址。除了在數(shù)據(jù)塊傳送開始時需要CPU的啟動的啟動指令和在整個數(shù)據(jù)塊傳送結束時需發(fā)中斷通知指令和在整個數(shù)據(jù)塊傳送結束時需發(fā)中斷通知CPU進行中斷處理之外,不再像中斷控制方式時那樣需要進行中斷處理之外,不再像中斷控制方式時那樣需要CPU的頻繁干涉

21、。的頻繁干涉。DMA存取方式的結構如圖存取方式的結構如圖8.5所示。所示。DMA方式的數(shù)據(jù)輸入處理過程如下方式的數(shù)據(jù)輸入處理過程如下: (1) 當進程要求設備輸入數(shù)據(jù)時,當進程要求設備輸入數(shù)據(jù)時,CPU把準備存把準備存放輸入數(shù)據(jù)的內存始址以及要傳送的字節(jié)數(shù)分別送入放輸入數(shù)據(jù)的內存始址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的內存地址寄存器和傳送字節(jié)計數(shù)器控制器中的內存地址寄存器和傳送字節(jié)計數(shù)器; 另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動位另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動位置置1; 從而啟動設備開始進行數(shù)據(jù)輸入。從而啟動設備開始進行數(shù)據(jù)輸入。圖圖8.5 DMA方式的傳送結構方式的

22、傳送結構(2) 發(fā)出數(shù)據(jù)要求的進程進入等待狀態(tài),進程調發(fā)出數(shù)據(jù)要求的進程進入等待狀態(tài),進程調度程序調度其他進程占據(jù)度程序調度其他進程占據(jù)CPU。(3) 輸入設備不斷地挪用輸入設備不斷地挪用CPU工作周期,將數(shù)據(jù)工作周期,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內存,直到所要緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內存,直到所要求的字節(jié)全部傳送完畢。求的字節(jié)全部傳送完畢。(4) DMA控制器在傳送字節(jié)數(shù)完成時通過中斷請控制器在傳送字節(jié)數(shù)完成時通過中斷請求線發(fā)出中斷信號,求線發(fā)出中斷信號,CPU在接收到中斷信號后轉中在接收到中斷信號后轉中斷處理程序進行善后處理。斷處理程序進行善后處理。 (5) 中斷處理結束

23、時,中斷處理結束時,CPU返回被中斷進程處執(zhí)返回被中斷進程處執(zhí)行或被調度到新的進程上下文環(huán)境中執(zhí)行。行或被調度到新的進程上下文環(huán)境中執(zhí)行。DMA方式的處理過程如圖方式的處理過程如圖8.6所示。所示。圖圖8.6 DMA方式的數(shù)據(jù)傳送處理過程方式的數(shù)據(jù)傳送處理過程由圖由圖8.6可以看出,可以看出,DMA方式與中斷方式的一個方式與中斷方式的一個主要區(qū)別是,中斷方式時是在數(shù)據(jù)緩沖寄存器滿之后主要區(qū)別是,中斷方式時是在數(shù)據(jù)緩沖寄存器滿之后發(fā)中斷要求發(fā)中斷要求CPU進行中斷處理,而進行中斷處理,而DMA方式則是在方式則是在所要求轉送的數(shù)據(jù)塊全部傳送結束時要求所要求轉送的數(shù)據(jù)塊全部傳送結束時要求CPU進行進

24、行中斷處理。這就大大減少了中斷處理。這就大大減少了CPU進行中斷處理的次進行中斷處理的次數(shù)。另一個主要區(qū)別是,中斷方式的數(shù)據(jù)傳送是在中數(shù)。另一個主要區(qū)別是,中斷方式的數(shù)據(jù)傳送是在中斷處理時由斷處理時由CPU控制完成的,而控制完成的,而DMA方式是在方式是在DMA控制器的控制下不經(jīng)過控制器的控制下不經(jīng)過CPU控制完成的。這就排除控制完成的。這就排除了因并行操作設備過多時了因并行操作設備過多時CPU來不及處理或因速度來不及處理或因速度不匹配而造成數(shù)據(jù)丟失等現(xiàn)象。不匹配而造成數(shù)據(jù)丟失等現(xiàn)象。DMA方式仍存在著一定的局限性。方式仍存在著一定的局限性。首先,首先,DMA方式對外圍設備的管理和某些操作方式

25、對外圍設備的管理和某些操作仍由仍由CPU控制。在大中型計算機中,系統(tǒng)所配置的控制。在大中型計算機中,系統(tǒng)所配置的外設種類越來越多,數(shù)量也越來越大,因而,對外圍外設種類越來越多,數(shù)量也越來越大,因而,對外圍設備的管理的控制也就愈來愈復雜。多個設備的管理的控制也就愈來愈復雜。多個DMA控制控制器的同時使用顯然會引起內存地址的沖突并使得控制器的同時使用顯然會引起內存地址的沖突并使得控制過程進一步復雜化。過程進一步復雜化。同時同時,多個多個DMA控制器的同時使用也是不經(jīng)濟的??刂破鞯耐瑫r使用也是不經(jīng)濟的。8.2.4 通道控制方式通道控制方式與與DMA方式不同的是,在方式不同的是,在DMA方式中,數(shù)據(jù)的

26、方式中,數(shù)據(jù)的傳送方向、存放數(shù)據(jù)的內存始址以及傳送的數(shù)據(jù)塊長傳送方向、存放數(shù)據(jù)的內存始址以及傳送的數(shù)據(jù)塊長度等都由度等都由CPU控制通道方式中,這些都由專管輸入控制通道方式中,這些都由專管輸入輸出的硬件輸出的硬件通道來進行控制。通道來進行控制。另外,與另外,與DMA方式時每臺設備至少一個方式時每臺設備至少一個DMA控控制器相比,通道控制方式可以做到一個通道控制多臺制器相比,通道控制方式可以做到一個通道控制多臺設備與內存進行數(shù)據(jù)交換設備與內存進行數(shù)據(jù)交換通道是一個獨立于通道是一個獨立于CPU的專管輸入輸出控制的的專管輸入輸出控制的處理機,它控制設備與內存直接進行數(shù)據(jù)交換。它有處理機,它控制設備與

27、內存直接進行數(shù)據(jù)交換。它有自己的通道指令,這些通道指令受自己的通道指令,這些通道指令受CPU啟動,并在啟動,并在操作結束時向操作結束時向CPU發(fā)中斷信號。發(fā)中斷信號。通道的定義給出了通道控制方式的基本思想。在通道的定義給出了通道控制方式的基本思想。在通道控制方式中,通道控制方式中,I/O控制器中沒有傳送字節(jié)計數(shù)器控制器中沒有傳送字節(jié)計數(shù)器和內存地址寄存器;但多了通道設備控制器和指令執(zhí)和內存地址寄存器;但多了通道設備控制器和指令執(zhí)行機構。在通道方式下,行機構。在通道方式下,CPU只需發(fā)出啟動指令,只需發(fā)出啟動指令,指出通道相應的操作和指出通道相應的操作和I/O設備,該指令就可啟動通設備,該指令就

28、可啟動通道并使該通道從內存中調出相應的通道指令執(zhí)行。道并使該通道從內存中調出相應的通道指令執(zhí)行。通道指令一般包含有被交換數(shù)據(jù)在內存中應占據(jù)通道指令一般包含有被交換數(shù)據(jù)在內存中應占據(jù)的位置、傳送方向、數(shù)據(jù)塊長度以及被控制的的位置、傳送方向、數(shù)據(jù)塊長度以及被控制的I/O設設備的地址信息、特征信息備的地址信息、特征信息(等,通道指令在通道中沒等,通道指令在通道中沒有存儲部件時存放在內存中。有存儲部件時存放在內存中。通道指令的格式一般由操作碼、讀、寫或控制、通道指令的格式一般由操作碼、讀、寫或控制、計數(shù)段計數(shù)段(數(shù)據(jù)塊長度數(shù)據(jù)塊長度)以及內存地址段和結束標志等組以及內存地址段和結束標志等組成。通道指令

29、在進程要求數(shù)據(jù)時由系統(tǒng)自動生成。例成。通道指令在進程要求數(shù)據(jù)時由系統(tǒng)自動生成。例如如:write 0 0 250 1850 write 1 1 250 720另外,一個通道可以以分時方式同時執(zhí)行幾個通另外,一個通道可以以分時方式同時執(zhí)行幾個通道指令程序。按照信息交換方式不同,一個系統(tǒng)中可道指令程序。按照信息交換方式不同,一個系統(tǒng)中可設立三種類型的通道,即字節(jié)多路通道、數(shù)組多路通設立三種類型的通道,即字節(jié)多路通道、數(shù)組多路通道和選擇通道。由這三種通道組成的數(shù)據(jù)傳送控制結道和選擇通道。由這三種通道組成的數(shù)據(jù)傳送控制結構如圖構如圖8.7所示。所示。字節(jié)多路通道以字節(jié)為單位傳送數(shù)據(jù),它主要用字節(jié)多路通

30、道以字節(jié)為單位傳送數(shù)據(jù),它主要用來連接大量的低速設備,如終端、打印機等。來連接大量的低速設備,如終端、打印機等。數(shù)組多路通道以塊為單位傳送數(shù)據(jù),它具有傳送數(shù)組多路通道以塊為單位傳送數(shù)據(jù),它具有傳送速率高和能分時操作不同的設備等優(yōu)點。數(shù)組多路通速率高和能分時操作不同的設備等優(yōu)點。數(shù)組多路通道主要用來連接中速塊設備,如磁帶機等。道主要用來連接中速塊設備,如磁帶機等。圖圖8.7 通道方式的數(shù)據(jù)傳送結構通道方式的數(shù)據(jù)傳送結構數(shù)組多路通道和字節(jié)多路通道都可以分時執(zhí)行不數(shù)組多路通道和字節(jié)多路通道都可以分時執(zhí)行不同的通道指令程序。但是,選擇通道一次只能執(zhí)行一同的通道指令程序。但是,選擇通道一次只能執(zhí)行一個通

31、道指令程序。所以,選擇通道一次只能控制一臺個通道指令程序。所以,選擇通道一次只能控制一臺設備進行設備進行 I/O操作。不過,選擇通道具有傳送速度高操作。不過,選擇通道具有傳送速度高的特點,因而它被用來連接高速外部設備,并以塊為的特點,因而它被用來連接高速外部設備,并以塊為單位成批傳送數(shù)據(jù)。受選擇通道控制的外設有磁盤機單位成批傳送數(shù)據(jù)。受選擇通道控制的外設有磁盤機等。等。通道控制方式的數(shù)據(jù)輸入處理過程可描述如下通道控制方式的數(shù)據(jù)輸入處理過程可描述如下: (1) 當進程要求設備輸入數(shù)據(jù)時,當進程要求設備輸入數(shù)據(jù)時,CPU發(fā)發(fā)Start指令指令指明指明I/O操作、設備號和對應通道。操作、設備號和對應

32、通道。(2) 對應通道接收到對應通道接收到CPU發(fā)來的啟動指令發(fā)來的啟動指令Start之之后,把存放在內存中的通道指令程序讀出,設置對應后,把存放在內存中的通道指令程序讀出,設置對應設備的設備的I/O控制器中的控制狀態(tài)寄存器??刂破髦械目刂茽顟B(tài)寄存器。(3) 設備根據(jù)通道指令的要求,把數(shù)據(jù)送往內存設備根據(jù)通道指令的要求,把數(shù)據(jù)送往內存中指定區(qū)域。中指定區(qū)域。(4) 若數(shù)據(jù)傳送結束,若數(shù)據(jù)傳送結束,I/O控制器通過中斷請求線控制器通過中斷請求線發(fā)中斷信號請求發(fā)中斷信號請求CPU做中斷處理。做中斷處理。第第5步與步與DMA方式時相同,即中斷處理結束后方式時相同,即中斷處理結束后CPU返回被中斷進程

33、處繼續(xù)執(zhí)行。返回被中斷進程處繼續(xù)執(zhí)行。在在(1)中要求數(shù)據(jù)的進程只有在調度程序選中它中要求數(shù)據(jù)的進程只有在調度程序選中它之后,才能對所得到的數(shù)據(jù)進行加工處理。之后,才能對所得到的數(shù)據(jù)進行加工處理。另外,在許多情況下,人們可從另外,在許多情況下,人們可從CPU執(zhí)行的角執(zhí)行的角度描述中斷控制方式、度描述中斷控制方式、DMA方式或通道控制方式的方式或通道控制方式的控制處理過程。作為一個例子,這里給出通道控制方控制處理過程。作為一個例子,這里給出通道控制方式的描述過程。式的描述過程。Channel control procedure:repeatIRMpcpc pc+1execute(IR)if re

34、quire 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其中,其中,IR代表指令寄存器,代表指令寄存器,pc代表程序計數(shù)器,而代表程序計數(shù)器,而fi則表示則表示if.then.條件語句的結束。關于條件語句的結束。關于interrupt p

35、rocessing control部分,在下面的章節(jié)中將進一步討論。部分,在下面的章節(jié)中將進一步討論。8.3 中中 斷斷 技技 術術從上節(jié)可以看出,除了程序直接控制方式之外,從上節(jié)可以看出,除了程序直接控制方式之外,無論是中斷控制方式、無論是中斷控制方式、DMA方式還是通道控制方式,方式還是通道控制方式,都需在設備和都需在設備和CPU之間進行通信,由設備向之間進行通信,由設備向CPU發(fā)發(fā)中斷信號之后,中斷信號之后,CPU接收相應的中斷信號進行處理。接收相應的中斷信號進行處理。這幾種方式的區(qū)別只是中斷處理的次數(shù)、數(shù)據(jù)傳送方這幾種方式的區(qū)別只是中斷處理的次數(shù)、數(shù)據(jù)傳送方式以及控制指令的執(zhí)行方式等。

36、在計算機系統(tǒng)中,除式以及控制指令的執(zhí)行方式等。在計算機系統(tǒng)中,除了上述了上述I/O中斷之外,還存在著許多其他的突發(fā)事件,中斷之外,還存在著許多其他的突發(fā)事件,例如電源掉電、程序出錯等,這些也會發(fā)出中斷信號例如電源掉電、程序出錯等,這些也會發(fā)出中斷信號通知通知CPU做相應的處理。做相應的處理。8.3.1 中斷的基本概念中斷的基本概念中斷中斷(Interrupt)是指計算機在執(zhí)行期間,系統(tǒng)內是指計算機在執(zhí)行期間,系統(tǒng)內發(fā)生任何非尋常的或非預期的急需處理事件,使得發(fā)生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執(zhí)行的程序而轉去執(zhí)行相應暫時中斷當前正在執(zhí)行的程序而轉去執(zhí)行相應的事件處

37、理程序,待處理完畢后又返回原來被中斷處的事件處理程序,待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調度新的進程執(zhí)行的過程。繼續(xù)執(zhí)行或調度新的進程執(zhí)行的過程。引起中斷發(fā)生引起中斷發(fā)生的事件被稱為中斷源。的事件被稱為中斷源。中斷源向中斷源向CPU發(fā)出的請求中發(fā)出的請求中斷處理信號稱為中斷請求,而斷處理信號稱為中斷請求,而CPU收到中斷請求后收到中斷請求后轉相應的事件處理程序稱為中斷響應。轉相應的事件處理程序稱為中斷響應。中斷屏蔽是通過每一類中斷源設置一個中斷屏蔽中斷屏蔽是通過每一類中斷源設置一個中斷屏蔽觸發(fā)器來屏蔽它們的中斷請求而實現(xiàn)的。不過,有些觸發(fā)器來屏蔽它們的中斷請求而實現(xiàn)的。不過,有些中斷請求

38、是不能屏蔽甚至不能禁止的,也就是說,這中斷請求是不能屏蔽甚至不能禁止的,也就是說,這些中斷具有最高優(yōu)先級。不管些中斷具有最高優(yōu)先級。不管CPU是否是關中斷的,是否是關中斷的,只要這些中斷請求一旦提出,只要這些中斷請求一旦提出,CPU必須立即響應。必須立即響應。例如,電源掉電事件所引起的中斷就是不可禁止和屏例如,電源掉電事件所引起的中斷就是不可禁止和屏蔽中斷。蔽中斷。*8.3.2 中斷的分類與優(yōu)先級中斷的分類與優(yōu)先級根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一般對中根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一般對中斷進行分類并對不同的中斷賦予不同的處理優(yōu)先級,斷進行分類并對不同的中斷賦予不同的處理優(yōu)先級,以便在

39、不同的中斷同時發(fā)生時,按輕重緩急進行處理。以便在不同的中斷同時發(fā)生時,按輕重緩急進行處理。根據(jù)中斷源產(chǎn)生的條件,可把中斷分為外中斷和根據(jù)中斷源產(chǎn)生的條件,可把中斷分為外中斷和內中斷。內中斷。外中斷時指來自處理機和內存外部的中斷,包括外中斷時指來自處理機和內存外部的中斷,包括I/O設備發(fā)出的設備發(fā)出的I/O中斷、外部信號中斷中斷、外部信號中斷(例如用戶鍵例如用戶鍵入入ESC鍵鍵)、各種定時器引起的時鐘中斷以及調試程、各種定時器引起的時鐘中斷以及調試程序中設置的斷點等引起的調試中斷等。外中斷在狹義序中設置的斷點等引起的調試中斷等。外中斷在狹義上一般被稱為中斷。上一般被稱為中斷。內中斷主要指在處理機

40、和內存內部產(chǎn)生的中斷。內中斷主要指在處理機和內存內部產(chǎn)生的中斷。內中斷一般稱為陷阱內中斷一般稱為陷阱(trap)。它包括程序運算引起的。它包括程序運算引起的各種錯誤,如地址非法、校驗錯、頁面失效、存取訪各種錯誤,如地址非法、校驗錯、頁面失效、存取訪問控制錯、算術操作溢出、數(shù)據(jù)格式非法、除數(shù)為零、問控制錯、算術操作溢出、數(shù)據(jù)格式非法、除數(shù)為零、非法指令、用戶程序執(zhí)行特權指令、分時系統(tǒng)中的時非法指令、用戶程序執(zhí)行特權指令、分時系統(tǒng)中的時間片中斷以及從用戶態(tài)到核心態(tài)的切換等都是陷阱的間片中斷以及從用戶態(tài)到核心態(tài)的切換等都是陷阱的例子。例子。為了按中斷源的輕重緩急處理響應中斷,操作系為了按中斷源的輕重

41、緩急處理響應中斷,操作系統(tǒng)對不同的中斷賦予不同的優(yōu)先級。為了禁止中斷或統(tǒng)對不同的中斷賦予不同的優(yōu)先級。為了禁止中斷或屏蔽中斷,屏蔽中斷,CPU的處理機狀態(tài)字的處理機狀態(tài)字PSW中也設置有相中也設置有相應的優(yōu)先級。如果中斷源的優(yōu)先級高于應的優(yōu)先級。如果中斷源的優(yōu)先級高于PSW的優(yōu)先的優(yōu)先級,則級,則CPU響應該中斷源的中斷請求,反之,響應該中斷源的中斷請求,反之,CPU屏蔽該中斷源的中斷請求。屏蔽該中斷源的中斷請求。中斷和陷阱有如下主要區(qū)別中斷和陷阱有如下主要區(qū)別: (1) 陷阱通常由處理機正在執(zhí)行的現(xiàn)行指令引起,陷阱通常由處理機正在執(zhí)行的現(xiàn)行指令引起,而中斷則是由與現(xiàn)行指令無關的中斷源引起的。

42、而中斷則是由與現(xiàn)行指令無關的中斷源引起的。(2) 陷阱處理程序提供的服務為當前進程所用,陷阱處理程序提供的服務為當前進程所用,而中斷處理程序提供的服務則不是為了當前進程的。而中斷處理程序提供的服務則不是為了當前進程的。(3) CPU在執(zhí)行完一條指令之后,下一條指令開在執(zhí)行完一條指令之后,下一條指令開始之前響應中斷,而在一條指令執(zhí)行中也可以響應陷始之前響應中斷,而在一條指令執(zhí)行中也可以響應陷阱。阱。8.3.3 軟中斷軟中斷上述中斷和陷阱都可以看作是硬中斷,因為這些上述中斷和陷阱都可以看作是硬中斷,因為這些中斷和陷阱要通過硬件產(chǎn)生相應的中斷請求。中斷和陷阱要通過硬件產(chǎn)生相應的中斷請求。軟中斷是通信

43、進程之間用來模擬硬中斷的一種信軟中斷是通信進程之間用來模擬硬中斷的一種信號通信方式。號通信方式。軟中斷的概念主要來源于軟中斷的概念主要來源于UNIX系統(tǒng)。系統(tǒng)。在有些系統(tǒng)中,大部分的陷阱是轉化為軟中斷處在有些系統(tǒng)中,大部分的陷阱是轉化為軟中斷處理的。理的。8.3.4 中斷處理過程中斷處理過程中斷處理過程中斷處理過程: (1) 首先,首先,CPU檢查響應中斷的條件是否滿足。檢查響應中斷的條件是否滿足。CPU響應中斷的條件是響應中斷的條件是: 有來自于中斷源的中斷請求、有來自于中斷源的中斷請求、CPU允許中斷。允許中斷。(2) 如果如果CPU響應中斷,則響應中斷,則CPU關中斷,使其進關中斷,使其

44、進入不可再次響應中斷的狀態(tài)。入不可再次響應中斷的狀態(tài)。(3) 保存被中斷進程現(xiàn)場。為了在中斷處理結束保存被中斷進程現(xiàn)場。為了在中斷處理結束后能使進程正確地返回到中斷點,系統(tǒng)必須保存當前后能使進程正確地返回到中斷點,系統(tǒng)必須保存當前處理機狀態(tài)字處理機狀態(tài)字PSW和程序計數(shù)器和程序計數(shù)器PC等的值。這些值等的值。這些值一般保存在特定堆棧或硬件寄存器中。一般保存在特定堆?;蛴布拇嫫髦?。(4) 分析中斷原因,調用中斷處理子程序。在多分析中斷原因,調用中斷處理子程序。在多個中斷請求同時發(fā)生時,處理優(yōu)先級最高的。個中斷請求同時發(fā)生時,處理優(yōu)先級最高的。(5) 執(zhí)行中斷處理子程序。執(zhí)行中斷處理子程序。(6

45、) 退出中斷,恢復被中斷進程的現(xiàn)場或調度新退出中斷,恢復被中斷進程的現(xiàn)場或調度新進程占據(jù)處理機。進程占據(jù)處理機。(7) 開中斷,開中斷,CPU繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。圖圖8.8 中斷處理過程中斷處理過程I/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 Devic

46、e i Control fiif Data Deliver Donethen Call Data Deliver Done Control firestore CPU statusreset I/O Interrupt flagendInput Device i Control:Output Device i Control: Data Deliver Done Control: 8.4 緩緩 沖沖 技技 術術8.4.1 緩沖的引入緩沖的引入外圍設備和外圍設備和CPU處理速度不匹配的問題極大地處理速度不匹配的問題極大地制約了計算機系統(tǒng)性能的進一步提高和限制了系統(tǒng)的制約了計算機系統(tǒng)性能的進一步提

47、高和限制了系統(tǒng)的應用范圍。應用范圍。例如,當計算進程陣發(fā)性地把大批量數(shù)據(jù)輸出到例如,當計算進程陣發(fā)性地把大批量數(shù)據(jù)輸出到打印機上打印時,由于打印機上打印時,由于CPU輸出數(shù)據(jù)的速度大大高輸出數(shù)據(jù)的速度大大高于打印機的打印速度,因此,于打印機的打印速度,因此,CPU只好停下來等待。只好停下來等待。反之,在計算進程進行計算時,打印機又因無數(shù)據(jù)輸反之,在計算進程進行計算時,打印機又因無數(shù)據(jù)輸出而空閑無事。出而空閑無事。外圍設備與處理機速度不匹配的問題可以采用設外圍設備與處理機速度不匹配的問題可以采用設置緩沖區(qū)置緩沖區(qū)(器器)的方法解決。的方法解決。再者,從減少中斷的次數(shù)看,也存在著引入緩沖再者,從減

48、少中斷的次數(shù)看,也存在著引入緩沖區(qū)的必要性。在中斷方式時,如果在區(qū)的必要性。在中斷方式時,如果在I/O控制器中增控制器中增加一個加一個100個字符緩沖器,則由前面各字對中斷方式個字符緩沖器,則由前面各字對中斷方式的描述可知,的描述可知,I/O控制器對處理機的中斷次數(shù)將降低控制器對處理機的中斷次數(shù)將降低100倍,即等到能存放倍,即等到能存放100個字符的字符緩沖區(qū)裝滿之個字符的字符緩沖區(qū)裝滿之后才向處理機發(fā)一次中斷。后才向處理機發(fā)一次中斷。因此,為了匹配外設與因此,為了匹配外設與CPU之間的處理速度,之間的處理速度,為了減少中斷次數(shù)和為了減少中斷次數(shù)和CPU的中斷處理時間,同時也的中斷處理時間,

49、同時也是為了解決是為了解決DMA或通道方式時的瓶頸問題,在設備或通道方式時的瓶頸問題,在設備管理中引入了用來暫存數(shù)據(jù)的緩沖技術。管理中引入了用來暫存數(shù)據(jù)的緩沖技術。根據(jù)根據(jù)I/O控制方式,緩沖的實現(xiàn)方法有兩種,一控制方式,緩沖的實現(xiàn)方法有兩種,一種是采用專用硬件緩沖器,例如種是采用專用硬件緩沖器,例如I/O控制器中的數(shù)據(jù)控制器中的數(shù)據(jù)緩沖寄存器。另一種方法是在內存緩沖寄存器。另一種方法是在內存劃出一個具有出一個具有n個個單元的專用緩沖區(qū),以便存放輸入輸出的數(shù)據(jù)。內存單元的專用緩沖區(qū),以便存放輸入輸出的數(shù)據(jù)。內存緩沖區(qū)又稱軟件緩沖。緩沖區(qū)又稱軟件緩沖。8.4.2 緩沖的種類緩沖的種類根據(jù)系統(tǒng)設置

50、的緩沖器的個數(shù),可把緩沖技術分根據(jù)系統(tǒng)設置的緩沖器的個數(shù),可把緩沖技術分為單緩沖、雙緩沖和多緩沖以及緩沖池幾種。為單緩沖、雙緩沖和多緩沖以及緩沖池幾種。單緩沖 雙緩沖雙緩沖 雙緩沖可在發(fā)送者和接收者之間設兩個緩沖區(qū)雙緩沖可在發(fā)送者和接收者之間設兩個緩沖區(qū)BUF1和和BUF2。 圖雙緩沖 多緩沖是把多個緩沖區(qū)連接起來組成兩部分,一多緩沖是把多個緩沖區(qū)連接起來組成兩部分,一部分專門用于輸入,另一部分專門用于輸出的緩沖結部分專門用于輸入,另一部分專門用于輸出的緩沖結構。緩沖池則是把多個緩沖區(qū)連接起來統(tǒng)一管理,既構。緩沖池則是把多個緩沖區(qū)連接起來統(tǒng)一管理,既可用于輸入又可用于輸出的緩沖結構??捎糜谳斎?/p>

51、又可用于輸出的緩沖結構。*8.4.3 緩沖池的管理緩沖池的管理1. 緩沖池的結構緩沖池的結構緩沖池由多個緩沖區(qū)組成。而一個緩沖區(qū)由兩部緩沖池由多個緩沖區(qū)組成。而一個緩沖區(qū)由兩部分組成分組成: 一部分是用來標識該緩沖器和用于管理的緩一部分是用來標識該緩沖器和用于管理的緩沖首部,另一部分是用于存放數(shù)據(jù)的緩沖體。這兩部沖首部,另一部分是用于存放數(shù)據(jù)的緩沖體。這兩部分有一一對應的映射關系。對緩沖池的管理是通過對分有一一對應的映射關系。對緩沖池的管理是通過對每一個緩沖器的緩沖首部進行操作實現(xiàn)的。每一個緩沖器的緩沖首部進行操作實現(xiàn)的。緩沖首部如圖緩沖首部如圖8.9所示,它包括設備號、設備上所示,它包括設備

52、號、設備上的數(shù)據(jù)塊號的數(shù)據(jù)塊號(塊設備時塊設備時)、互斥標識位以及緩沖隊列連、互斥標識位以及緩沖隊列連接指針和緩沖器號等。接指針和緩沖器號等。系統(tǒng)把各緩沖區(qū)按其使用狀況連成三種隊列系統(tǒng)把各緩沖區(qū)按其使用狀況連成三種隊列:(1) 空白緩沖隊列空白緩沖隊列em,其隊首指針為,其隊首指針為F(em),隊,隊尾指針為尾指針為L(em);圖圖8.9 緩沖首部緩沖首部(2) 裝滿輸入數(shù)據(jù)的輸入緩沖隊列裝滿輸入數(shù)據(jù)的輸入緩沖隊列in,其隊首指,其隊首指針為針為F(in),隊尾指針為,隊尾指針為L(in);(3) 裝滿輸出數(shù)據(jù)的輸出緩沖隊列裝滿輸出數(shù)據(jù)的輸出緩沖隊列out,其隊首指,其隊首指針為針為F(out

53、),隊尾指針為,隊尾指針為L(out)。其隊列構成如圖其隊列構成如圖8.10所示。所示。圖圖8.10 緩沖區(qū)隊列緩沖區(qū)隊列除了三種緩沖隊列之外,系統(tǒng)除了三種緩沖隊列之外,系統(tǒng)(或用戶進程或用戶進程)從這從這三種隊列中申請和取出緩沖區(qū),并用得到的緩沖區(qū)進三種隊列中申請和取出緩沖區(qū),并用得到的緩沖區(qū)進行存數(shù)、取數(shù)操作,在存數(shù)、取數(shù)操作結束后,再將行存數(shù)、取數(shù)操作,在存數(shù)、取數(shù)操作結束后,再將緩沖區(qū)放入相應的隊列。這些緩沖區(qū)被稱為工作緩沖緩沖區(qū)放入相應的隊列。這些緩沖區(qū)被稱為工作緩沖區(qū)。在緩沖池中,有區(qū)。在緩沖池中,有4種工作緩沖區(qū)種工作緩沖區(qū),即即:(1) 用于收容設備輸入數(shù)據(jù)的收容輸入緩沖區(qū)用于

54、收容設備輸入數(shù)據(jù)的收容輸入緩沖區(qū)hin;(2) 用于提取設備輸入數(shù)據(jù)的提取輸入緩沖區(qū)用于提取設備輸入數(shù)據(jù)的提取輸入緩沖區(qū)sin;(3) 用于收容用于收容CPU輸出數(shù)據(jù)的收容輸出緩沖區(qū)輸出數(shù)據(jù)的收容輸出緩沖區(qū)hout;(4) 用于提取用于提取CPU輸出數(shù)據(jù)的提取輸出緩沖區(qū)輸出數(shù)據(jù)的提取輸出緩沖區(qū)sout。緩沖池的工作緩沖區(qū)如圖緩沖池的工作緩沖區(qū)如圖8.11所示。所示。圖5.19 緩沖池的工作過程 圖圖8.11 緩沖池的工作緩沖區(qū)緩沖池的工作緩沖區(qū)2. 緩沖池管理緩沖池管理對緩沖池的管理由如下幾個操作組成對緩沖池的管理由如下幾個操作組成: (1) 從三種緩沖區(qū)隊列中按一定的選取規(guī)則取出從三種緩沖區(qū)

55、隊列中按一定的選取規(guī)則取出一個緩沖區(qū)的過程一個緩沖區(qū)的過程take_buf(type);(2) 把緩沖區(qū)按一定的選取規(guī)則插入相應的緩沖把緩沖區(qū)按一定的選取規(guī)則插入相應的緩沖區(qū)隊列的過程區(qū)隊列的過程add_buf(type, number);(3) 供進程申請緩沖區(qū)用的過程供進程申請緩沖區(qū)用的過程get_buf(type,number);(4) 供進程將緩沖區(qū)放入相應緩沖區(qū)隊列的過程供進程將緩沖區(qū)放入相應緩沖區(qū)隊列的過程put_buf(type,work_buf)。其中,參數(shù)其中,參數(shù)type表示緩沖隊列類型,表示緩沖隊列類型,number為為緩沖區(qū)號,而緩沖區(qū)號,而work_buf則表示工作緩

56、沖區(qū)類型。則表示工作緩沖區(qū)類型。使用這幾個操作,緩沖池的工作過程可描述如下使用這幾個操作,緩沖池的工作過程可描述如下:首先,輸入進程調用首先,輸入進程調用get_buf(em,number)過程從過程從空白緩沖區(qū)隊列中取出一個緩沖號為空白緩沖區(qū)隊列中取出一個緩沖號為number的空白的空白緩沖區(qū),將其作為收容輸入緩沖區(qū)緩沖區(qū),將其作為收容輸入緩沖區(qū)hin,當,當hin中裝滿中裝滿了由輸入設備輸入的數(shù)據(jù)之后,系統(tǒng)調用過程了由輸入設備輸入的數(shù)據(jù)之后,系統(tǒng)調用過程put_buf(in,hin)將該緩沖區(qū)插入輸入緩沖區(qū)隊列將該緩沖區(qū)插入輸入緩沖區(qū)隊列in中。中。另外,當進程需要輸出數(shù)據(jù)時,輸出進程經(jīng)過

57、緩另外,當進程需要輸出數(shù)據(jù)時,輸出進程經(jīng)過緩沖管理程序調用過程沖管理程序調用過程get_buf(em,number)從空白緩沖從空白緩沖區(qū)隊列中取出一個空白緩沖區(qū)區(qū)隊列中取出一個空白緩沖區(qū)number作為收容輸出作為收容輸出緩沖區(qū)緩沖區(qū)hout,待,待hout中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調用過程用過程put_buf(out,hout)將該緩沖區(qū)插入輸出緩沖區(qū)將該緩沖區(qū)插入輸出緩沖區(qū)隊列隊列out。對緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是由過對緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是由過程程get_buf和和put_buf實現(xiàn)的。實現(xiàn)的。get_buf(out,number)

58、從從輸出緩沖隊列中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)輸出緩沖隊列中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)number,將其作為將其作為sout。當。當sout中數(shù)據(jù)輸出完畢時,系統(tǒng)調用中數(shù)據(jù)輸出完畢時,系統(tǒng)調用過程過程put_buf(em,sout)將該緩沖區(qū)插入空白緩沖隊列。將該緩沖區(qū)插入空白緩沖隊列。而而get_buf(in,number)則從輸入緩沖隊列中取出一個則從輸入緩沖隊列中取出一個裝滿輸入數(shù)據(jù)的緩沖區(qū)裝滿輸入數(shù)據(jù)的緩沖區(qū)number作為輸入緩沖區(qū)作為輸入緩沖區(qū)sin,當當CPU從中提取完所需數(shù)據(jù)之后,系統(tǒng)調用過程從中提取完所需數(shù)據(jù)之后,系統(tǒng)調用過程put_buf(em,sin)將該緩沖區(qū)釋放和插入空白緩

59、沖隊列將該緩沖區(qū)釋放和插入空白緩沖隊列em中。中。顯然,對于各緩沖隊列中緩沖區(qū)的排列以及每次顯然,對于各緩沖隊列中緩沖區(qū)的排列以及每次取出和插入緩沖隊列區(qū)的順序都應有一定的規(guī)則。最取出和插入緩沖隊列區(qū)的順序都應有一定的規(guī)則。最簡單的方法是簡單的方法是FIFO,即先來先出的排列方法。采用,即先來先出的排列方法。采用FIFO方法,過程方法,過程put_buf每次把緩沖區(qū)插入相應緩沖每次把緩沖區(qū)插入相應緩沖隊列的隊尾,而過程隊列的隊尾,而過程get_buf則取出相應緩沖隊列的則取出相應緩沖隊列的第一個緩沖區(qū),從而第一個緩沖區(qū),從而get_buf中的第二個參數(shù)中的第二個參數(shù)number可以省略。而且,

60、采用可以省略。而且,采用FIFO方法也省略了對緩沖隊方法也省略了對緩沖隊列的搜索時間。列的搜索時間。過程過程add_buf(type,number)和和take_buf(type,number)分別用來把緩沖區(qū)分別用來把緩沖區(qū)number插插入入type隊列和從隊列和從type隊列中取出緩沖區(qū)隊列中取出緩沖區(qū)number。它。它們分別被過程們分別被過程get_buf和和put_buf調用,其中調用,其中, take_buf返回所取緩沖區(qū)返回所取緩沖區(qū)number的指針的指針, 而而add_buf則將給定則將給定緩沖區(qū)緩沖區(qū)number的指針鏈入隊列。的指針鏈入隊列。下面給出過程下面給出過程ge

溫馨提示

  • 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

提交評論