設(shè)備管理培訓(xùn)教材(PPT 99頁).ppt_第1頁
設(shè)備管理培訓(xùn)教材(PPT 99頁).ppt_第2頁
設(shè)備管理培訓(xùn)教材(PPT 99頁).ppt_第3頁
設(shè)備管理培訓(xùn)教材(PPT 99頁).ppt_第4頁
設(shè)備管理培訓(xùn)教材(PPT 99頁).ppt_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第7章 設(shè) 備 管 理,7.1 設(shè)備管理的概念 7.2 I/O控制方式 7.3 中斷技術(shù) 7.4 緩沖技術(shù) 7.5 設(shè)備分配 7.6 I/O軟件 7.7 磁盤調(diào)度和管理 7.8 Linux的設(shè)備管理,7.1 設(shè)備管理的概念,設(shè)備管理是現(xiàn)代操作系統(tǒng)的一個重要功能,它負(fù)責(zé)管理和協(xié)調(diào)計算機(jī)的各種設(shè)備來為用戶提供服務(wù)。 設(shè)備管理是操作系統(tǒng)中最復(fù)雜和瑣碎的部分,主要是因為計算機(jī)設(shè)備不僅種類繁多,而且它們的特性和操作方式往往相差甚大。 如何屏蔽設(shè)備之間的差異,給用戶提供一個透明的訪問接口,提高設(shè)備的利用率,是設(shè)備管理應(yīng)該解決的問題。,7.1.1 設(shè)備的分類,1. 按設(shè)備的使用特性分類 (1) 存儲設(shè)備。也

2、稱外存或輔助存儲器,是計算機(jī)系統(tǒng)用來存儲信息的主要設(shè)備。該類設(shè)備存取速度較內(nèi)存慢,但容量比內(nèi)存大得多,價格也便宜。 (2) 輸入輸出設(shè)備。又可具體分為輸入設(shè)備、輸出設(shè)備和交互式設(shè)備。 輸入設(shè)備用來接收外部信息,如鍵盤、鼠標(biāo)、掃描儀、視頻攝像、各類傳感器等。 輸出設(shè)備用于將計算機(jī)加工處理后的信息送向外部設(shè)備,如打印機(jī)、繪圖儀、顯示器、數(shù)字視頻顯示設(shè)備、音響輸出設(shè)備等。 交互式設(shè)備則是集成上述兩類設(shè)備,利用輸入設(shè)備接收用戶命令信息,并通過輸出設(shè)備同步顯示用戶命令以及命令執(zhí)行的結(jié)果。,7.1.1 設(shè)備的分類,2. 按傳輸速率分類 (1) 低速設(shè)備。這是指其傳輸速率僅為每秒鐘幾個字節(jié)至數(shù)百個字節(jié)的一類

3、設(shè)備。屬于典型的低速設(shè)備有鍵盤、鼠標(biāo)等。 (2) 中速設(shè)備。這是指其傳輸速率在每秒鐘數(shù)千個字節(jié)至數(shù)十萬個字節(jié)的一類設(shè)備。典型的中速設(shè)備有行式打印機(jī)、激光打印機(jī)等。 (3) 高速設(shè)備。這是指其傳輸速率在數(shù)百個字節(jié)至千兆字節(jié)的一類設(shè)備。典型的高速設(shè)備有磁帶機(jī)、磁盤機(jī)、光盤機(jī)等。,7.1.1 設(shè)備的分類,3. 按信息交換的單位分類 (1) 塊設(shè)備。這類設(shè)備用于存儲信息。由于信息的存取總是以數(shù)據(jù)塊為單位,故而得名。它屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是磁盤,每個盤塊的大小為512B4KB。磁盤設(shè)備的基本特性是其傳輸速率較高,通常每秒鐘為幾兆位;另一特征是可尋址,即對它可隨機(jī)地讀/寫任一塊;此外,磁盤設(shè)備的I

4、/O常采用DMA方式。 (2) 字符設(shè)備。這類設(shè)備常用于數(shù)據(jù)的輸入和輸出。其基本單位是字符,故稱為字符設(shè)備。它屬于無結(jié)構(gòu)類型。字符設(shè)備的種類繁多,如交互式終端、打印機(jī)等。字符設(shè)備的基本特征是其傳輸速率較低,通常為幾個字節(jié)至數(shù)千字節(jié);另一特征是不可尋址,即輸入/輸出時不能指定數(shù)據(jù)的輸入源地址及輸出的目標(biāo)地址;此外,字符設(shè)備在輸入/輸出時,常采用中斷驅(qū)動方式。,7.1.1 設(shè)備的分類,4. 按設(shè)備的共享屬性分類 (1) 獨占設(shè)備。這是指在一段時間內(nèi)只允許一個用戶(進(jìn)程)訪問的設(shè)備,屬于臨界資源。因此,對多個并發(fā)進(jìn)程而言,應(yīng)互斥地訪問這類設(shè)備。系統(tǒng)一旦把這類設(shè)備分配給某進(jìn)程后,便由該進(jìn)程獨占,直到使

5、用完釋放。需要注意的是,獨占設(shè)備的分配有可能引起進(jìn)程死鎖。 (2) 共享設(shè)備。這是指在一段時間內(nèi)允許多個用戶(進(jìn)程)同時訪問的設(shè)備。當(dāng)然,在每一時刻,該類設(shè)備仍然只允許一個進(jìn)程訪問。共享設(shè)備必須是可尋址的和可隨機(jī)訪問的設(shè)備。典型的共享設(shè)備是磁盤。共享設(shè)備不僅可獲得良好的設(shè)備利用率,而且也是實現(xiàn)文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)的物質(zhì)基礎(chǔ)。 (3) 虛擬設(shè)備。這是指通過虛擬技術(shù)將一臺獨占設(shè)備變換為若干臺邏輯設(shè)備,供多個用戶(進(jìn)程)同時使用。,7.1.1 設(shè)備的分類,5. 按設(shè)備的從屬關(guān)系分類 (1) 系統(tǒng)設(shè)備。系統(tǒng)設(shè)備是指那些在操作系統(tǒng)生成時就已經(jīng)配置好的各種標(biāo)準(zhǔn)設(shè)備。例如,鍵盤、打印機(jī)以及文件存儲設(shè)備等。

6、(2) 用戶設(shè)備。用戶設(shè)備是指那些在系統(tǒng)生成時沒有配置,而是由用戶自己安裝配置后由操作系統(tǒng)統(tǒng)一管理的設(shè)備。例如,網(wǎng)絡(luò)系統(tǒng)中的各種網(wǎng)卡、實時系統(tǒng)中的A/D、D/A轉(zhuǎn)換器、圖像處理系統(tǒng)的圖像設(shè)備等。,7.1.2 設(shè)備管理的任務(wù)和功能,設(shè)備管理的主要任務(wù)包括: (1) 響應(yīng)用戶進(jìn)程提出的I/O請求,選擇和分配I/O設(shè)備進(jìn)行數(shù)據(jù)傳輸操作。 (2) 控制I/O設(shè)備和CPU(或內(nèi)存)之間進(jìn)行數(shù)據(jù)交換,提高設(shè)備和設(shè)備之間、CPU和設(shè)備之間以及進(jìn)程和進(jìn)程之間的并行操作度,提高CPU與I/O設(shè)備的利用率,提高I/O設(shè)備的速度。 (3) 方便用戶使用設(shè)備,為用戶提供友好的透明接口,把用戶和設(shè)備硬件特性分開,使得用

7、戶在編寫應(yīng)用程序時不必涉及具體的設(shè)備,系統(tǒng)按照用戶的要求控制設(shè)備工作。另外,這個接口還為新增加的用戶設(shè)備提供一個和系統(tǒng)核心相連接的入口,以便用戶開發(fā)新的設(shè)備管理程序。,7.1.2 設(shè)備管理的任務(wù)和功能,設(shè)備管理應(yīng)具有下述功能: 設(shè)備分配 設(shè)備分配的基本任務(wù)是根據(jù)用戶進(jìn)程的I/O請求及系統(tǒng)當(dāng)前的I/O資源情況,按照某種設(shè)備分配算法為用戶進(jìn)程分配所需的設(shè)備。 緩沖管理 為緩和CPU和I/O設(shè)備間速度不匹配的矛盾,提高CPU與I/O設(shè)備之間以及各設(shè)備之間的并行性,現(xiàn)代操作系統(tǒng)都引入了緩沖技術(shù)。通常在內(nèi)存中開辟若干區(qū)域作為用戶進(jìn)程與外部設(shè)備間數(shù)據(jù)傳輸?shù)木彌_區(qū),用于緩存輸入/輸出的數(shù)據(jù)。 設(shè)備驅(qū)動 設(shè)備

8、驅(qū)動是指對物理設(shè)備進(jìn)行控制,實現(xiàn)真正的I/O操作。設(shè)備驅(qū)動的基本任務(wù)是實現(xiàn)CPU與設(shè)備控制器之間的通信,即接收由CPU發(fā)來的I/O命令,如讀/寫命令,轉(zhuǎn)換為具體要求后,傳給設(shè)備控制器,啟動設(shè)備去執(zhí)行;同時也將由設(shè)備控制器發(fā)來的信號傳送給CPU,如設(shè)備是否完好、是否準(zhǔn)備就緒、I/O操作是否已完成等,并進(jìn)行相應(yīng)的處理。,7.1.3 I/O系統(tǒng)結(jié)構(gòu),通常把I/O設(shè)備及其接口線路、控制部件、通道和管理軟件稱為I/O系統(tǒng)。不同的計算機(jī)系統(tǒng),其I/O系統(tǒng)結(jié)構(gòu)差異很大,大多數(shù)計算機(jī)系統(tǒng)都采用基于總線的I/O結(jié)構(gòu)。典型的PC總線結(jié)構(gòu)如下圖。 總線(Bus)是用于多個部件相互連接、傳遞信息的公共通道,物理上就是

9、一組共用導(dǎo)線。 目前,PC機(jī)上常用的公共系統(tǒng)總線是PCI (Peripheral Componenent Interconnect,外部設(shè)備互聯(lián))總線結(jié)構(gòu),它把處理器、內(nèi)存與高速設(shè)備連接起來。而擴(kuò)展總線(Expansion Bus)則用于連接串行、并行端口和相對較慢的設(shè)備,如鍵盤。,7.1.4 設(shè)備控制器,設(shè)備控制器是計算機(jī)中的一個實體,其主要職責(zé)是控制一個或多個I/O設(shè)備,以實現(xiàn)I/O設(shè)備和計算機(jī)之間的數(shù)據(jù)交換。 I/O設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信。 設(shè)備控制器是CPU和I/O設(shè)備之間的接口,它接收從CPU發(fā)來的命令,然后去控制I/O設(shè)備工作,從而使得CPU從繁雜的設(shè)

10、備控制事物中解脫出來,提高CPU與I/O設(shè)備的并行工作能力。 設(shè)備控制器是一個可編址的設(shè)備,當(dāng)它僅控制一個設(shè)備時,它只有一個唯一的設(shè)備地址;若設(shè)備控制器連接多個設(shè)備時,則應(yīng)該含有多個設(shè)備地址,并使每一個設(shè)備地址對應(yīng)一個設(shè)備。設(shè)備控制器有兩個方向的接口:一個是與主機(jī)之間的系統(tǒng)接口;另一個是與設(shè)備驅(qū)動電路之間的低層次接口,用于根據(jù)由主機(jī)發(fā)來的命令控制設(shè)備動作。,7.1.4 設(shè)備控制器,1. 設(shè)備控制器的基本功能 (1) 接收和識別命令 (2) 地址識別 (3) 數(shù)據(jù)交換和轉(zhuǎn)換 (4) 數(shù)據(jù)緩沖 (5) 標(biāo)識和報告設(shè)備的狀態(tài) (6) 差錯控制,7.1.4 設(shè)備控制器,2. 設(shè)備控制器的組成 (1)

11、設(shè)備控制器與處理器的接口 該接口用于實現(xiàn)CPU與設(shè)備控制器之間的通信。共有三類信號線:數(shù)據(jù)線、地址線和控制線。數(shù)據(jù)線通常與三類寄存器相連接。第一類是數(shù)據(jù)寄存器,在控制器中可以有一個或多個數(shù)據(jù)寄存器,它用于存放從設(shè)備送來的數(shù)據(jù)或從CPU和內(nèi)存送來的數(shù)據(jù);第二類是控制寄存器,用于存放從CPU送來的控制信息;第三類是狀態(tài)寄存器,用于存放設(shè)備的狀態(tài)信息。 (2) 設(shè)備控制器與設(shè)備的接口 在一個設(shè)備控制器上,可以連接一個或多個設(shè)備。因此,在控制器中便有一個或多個設(shè)備接口,一個接口連接一臺設(shè)備。在每個接口中都存在數(shù)據(jù)、控制和狀態(tài)三種類型的信號??刂破髦械腎/O邏輯根據(jù)處理器發(fā)來的地址信號去選擇相應(yīng)的設(shè)備接

12、口。,7.1.4 設(shè)備控制器,(3) I/O邏輯 設(shè)備控制器中的I/O邏輯用于實現(xiàn)對設(shè)備的控制。它通過一組控制線與處理器交互,I/O邏輯接收處理器發(fā)送的控制命令并對其進(jìn)行譯碼。當(dāng)CPU要啟動一個設(shè)備時,一方面將啟動命令發(fā)送給控制器;另一方面又同時通過地址線把地址發(fā)送給控制器,由I/O邏輯對收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對所選擇設(shè)備進(jìn)行控制。 (4) 寄存器 為了實現(xiàn)與CPU通信,每個控制器都要有幾個寄存器,即控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器。,7.1.4 設(shè)備控制器,3. CPU與控制器的通信方式 一種方式是為每個控制寄存器分配一個I/O端口號(8位或16位整數(shù)),使用專門的I/O指

13、令,CPU可以讀寫控制寄存器,分配給系統(tǒng)中所有端口的地址空間是完全獨立的,與內(nèi)存的地址空間沒有關(guān)系; 另一種方式是把所有控制寄存器都映像到存儲器空間,這種模式稱做存儲器映像I/O(Memory_Mapped I/O)。在該方式中,分配給系統(tǒng)的所有端口的地址空間與內(nèi)存的地址空間統(tǒng)一編址,主機(jī)把I/O端口看作一個存儲單元,對I/O的讀寫操作等同于對存儲器的操作。 此外,還有混合方式,既有存儲器映像I/O,又采用單獨的I/O端口。例如,個人計算機(jī)使用I/O指令來控制一些設(shè)備,而使用內(nèi)存映像I/O指令來控制其它設(shè)備。,7.2 I/O控制方式,I/O控制方式的發(fā)展始終貫穿著這樣一個宗旨,即提高中央處理器

14、和外圍設(shè)備之間的并行工作能力,盡量減少CPU對I/O控制的干預(yù),把CPU從繁雜的I/O控制事務(wù)中解脫出來,以便更多地去執(zhí)行數(shù)據(jù)處理任務(wù)。 程序控制方式 中斷方式 DMA方式 通道控制方式,7.2.1 程序直接控制方式,CPU對I/O設(shè)備的控制采取程序直接控制方式,又稱輪詢方式,就是由用戶進(jìn)程來直接控制內(nèi)存或CPU和外圍設(shè)備之間的信息傳送。,7.2.1 程序直接控制方式,程序直接控制方式控制簡單,不需要多少硬件支持,但是,這種方式存在如下缺點: (1) CPU和外圍設(shè)備只能串行工作。由于CPU的處理速度遠(yuǎn)遠(yuǎn)高于外圍設(shè)備的數(shù)據(jù)傳送和處理速度,所以,CPU的大量時間都處于等待和空閑狀態(tài)。這使得CPU

15、的利用率大大降低。 (2) CPU在一段時間內(nèi)只能和一臺外圍設(shè)備交換數(shù)據(jù)信息,從而不能實現(xiàn)設(shè)備之間的并行工作。 (3) 由于程序直接控制方式依靠測試設(shè)備標(biāo)志觸發(fā)器的狀態(tài)位來控制數(shù)據(jù)傳送,因此無法發(fā)現(xiàn)和處理由于設(shè)備或其它硬件產(chǎn)生的錯誤。所認(rèn),程序直接控制方式只適用于那些CPU執(zhí)行速度較慢,而且外圍設(shè)備較少的系統(tǒng)。,7.2.2 中斷方式,(1) 首先,進(jìn)程需要數(shù)據(jù)時,通過CPU發(fā)出“Start”指令啟動外圍設(shè)備準(zhǔn)備數(shù)據(jù)。該指令同時還將控制狀態(tài)寄存器中的中斷允許位打開,以便在需要時,中斷程序可以被調(diào)用執(zhí)行。 (2) 在進(jìn)程發(fā)出指令啟動設(shè)備之后,該進(jìn)程放棄CPU,等待輸入完成。從而,進(jìn)程調(diào)度程序調(diào)度其

16、它就緒的進(jìn)程占用CPU。 (3) 當(dāng)數(shù)據(jù)進(jìn)入數(shù)據(jù)緩沖寄存器,I/O控制器向CPU發(fā)出中斷信號。CPU在接收到中斷信號之后,轉(zhuǎn)向預(yù)先設(shè)計好的中斷處理程序,從數(shù)據(jù)緩沖寄存器中取出數(shù)據(jù)并送入內(nèi)存。 (4) 中斷處理程序完成后,CPU繼續(xù)執(zhí)行被中斷進(jìn)程。如果數(shù)據(jù)傳送沒有完成,設(shè)備繼續(xù)向數(shù)據(jù)緩沖寄存器傳送數(shù)據(jù),緩沖寄存器滿之后,再向CPU發(fā)出中斷處理請求。,7.2.2 中斷方式,中斷方式CPU的利用率大大提高而且能支持多道程序和設(shè)備的并行操作,但仍然存在許多問題。 首先,在I/O控制器的數(shù)據(jù)緩沖寄存器裝滿數(shù)據(jù)之后將會發(fā)生中斷,而且數(shù)據(jù)緩沖寄存器通常較小,因此,在一次數(shù)據(jù)傳送過程中,發(fā)生中斷次數(shù)較多,這將

17、耗去大量的CPU處理時間。 現(xiàn)代計算機(jī)系統(tǒng)通常配置有各種各樣的外圍設(shè)備。如果這些設(shè)備通過中斷處理方式進(jìn)行并行操作,則由于中斷次數(shù)的急劇增加將造成CPU無法響應(yīng)中斷和出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。 在中斷控制方式下,我們都是假設(shè)外圍設(shè)備的速度非常低,而CPU處理速度非常高。如果外圍設(shè)備的速度也非常高,則可能造成數(shù)據(jù)緩沖寄存器的數(shù)據(jù)由于CPU來不及取走而丟失。字符設(shè)備的I/O控制方式至今仍采用中斷方式。,7.2.3 DMA方式,DMA(Direct Memory Access)方式又稱直接存儲器訪問存取方式,其基本思想是在外圍設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路。 DMA方式的數(shù)據(jù)輸入處理過程如下: (1)

18、當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時,CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的內(nèi)存地址寄存器和傳送字節(jié)計數(shù)器中;另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動位置1;從而啟動設(shè)備開始進(jìn)行數(shù)據(jù)輸入。 (2) 發(fā)出數(shù)據(jù)要求的進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其它進(jìn)程占據(jù)CPU。 (3) 輸入設(shè)備不斷地挪用CPU工作周期,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直到所要求的字節(jié)全部傳送完畢。 (4) DMA控制器在傳送字節(jié)數(shù)完成時,通過中斷請求線發(fā)出中斷信號,CPU在接收到中斷信號之后,轉(zhuǎn)去中斷處理程序進(jìn)行善后處理。 (5) 中斷處理結(jié)束后,CPU返回被中斷進(jìn)程處執(zhí)行或

19、被調(diào)度到新的進(jìn)程上下文環(huán)境中執(zhí)行。,7.2.3 DMA方式,DMA方式的處理過程,7.2.4 通道控制方式,1. 通道定義 通道控制方式與DMA方式類似,也是一種以內(nèi)存為中心,實現(xiàn)設(shè)備和內(nèi)存直接交換數(shù)據(jù)的控制方式。通道是一個專門管理輸入輸出操作控制的硬件,是一個獨立于CPU的專管輸入輸出控制的處理機(jī),它控制設(shè)備與內(nèi)存之間直接進(jìn)行數(shù)據(jù)交換。它有自己的通道指令,這些通道指令受CPU啟動,并在操作結(jié)束時向CPU發(fā)出中斷信號。 在通道控制方式中,I/O控制器中沒有傳送字節(jié)計數(shù)器和內(nèi)存地址寄存器;但增加了通道設(shè)備控制器和指令執(zhí)行機(jī)構(gòu)。在通道控制方式下,CPU只需發(fā)出啟動指令,指出通道相應(yīng)的操作和I/O設(shè)

20、備,該指令就可以啟動通道并使該通道從內(nèi)存中調(diào)出相應(yīng)的通道指令去執(zhí)行。,7.2.4 通道控制方式,2. 通道程序 通道通過執(zhí)行通道程序,并與設(shè)備控制器共同實現(xiàn)對I/O設(shè)備的控制。通道程序是由一系列通道指令構(gòu)成。通道指令與一般的機(jī)器指令不同,在它的每條指令中都包含下列信息: (1) 操作碼。操作碼規(guī)定指令所執(zhí)行的操作,如讀、寫、控制等操作。 (2) 內(nèi)存地址。內(nèi)存地址標(biāo)明字符送入內(nèi)存(讀操作)和從內(nèi)存取出(寫操作)時的內(nèi)存首地址。 (3) 計數(shù)。該信息表示本條指令所要讀(或?qū)?數(shù)據(jù)的字節(jié)數(shù)。 (4) 通道程序結(jié)束位P。該位用于表示通道程序是否結(jié)束。P=1表示本條指令是通道程序的最后一條指令。 (5

21、) 記錄結(jié)束標(biāo)志R。R=0表示本通道指令與下一條指令所處理的數(shù)據(jù)同屬于一個記錄;R=1表示這是處理某記錄的最后一條指令。 這兩條指令是把一個記錄的500個字符分別寫入從內(nèi)存地址1850開始的250個單元和從內(nèi)存地址720開始的250個單元中。,7.2.4 通道控制方式,3. 通道分類 字節(jié)多路通道以字節(jié)為單位進(jìn)行傳送數(shù)據(jù),它主要用來連接大量的低速設(shè)備,如終端、打印機(jī)等。 數(shù)組多路通道以塊為單位進(jìn)行傳送數(shù)據(jù),它具有傳送速率高和能分時操作不同的設(shè)備等優(yōu)點。數(shù)組多路通道主要用于連接中速塊設(shè)備,如磁帶機(jī)等。 數(shù)組多路通道和字節(jié)多路通道都可以分時執(zhí)行不同的通道指令程序。但是,選擇通道一次只能執(zhí)行一個通道

22、指令程序。所以,選擇通道一次只能控制一臺設(shè)備進(jìn)行 I/O操作。不過,選擇通道具有傳送速度高的優(yōu)點,因而它被用來連接高速外部設(shè)備,并以塊為單位成批傳送數(shù)據(jù)如磁盤機(jī)等。,7.2.4 通道控制方式,通道控制方式的數(shù)據(jù)輸入處理過程可以描述如下: (1) 當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時,CPU發(fā)Start指令指明I/O操作、設(shè)備號和對應(yīng)的通道。 (2) 對應(yīng)通道接收到CPU發(fā)來的啟動指令Start之后,把存放在內(nèi)存中的通道指令程序讀出,設(shè)置對應(yīng)設(shè)備的I/O控制器中的控制狀態(tài)寄存器。 (3) 設(shè)備根據(jù)通道指令的要求,把數(shù)據(jù)送往內(nèi)存中的指定區(qū)域。 (4) 如果數(shù)據(jù)傳送結(jié)束,則I/O控制器通過中斷請求線發(fā)中斷信號請

23、求CPU做中斷處理。 (5) 與DMA方式時相同,中斷處理結(jié)束后CPU返回被中斷進(jìn)程處繼續(xù)執(zhí)行。,7.3 中 斷 技 術(shù),中斷是操作系統(tǒng)實現(xiàn)的基礎(chǔ)和保障,是實現(xiàn)多道程序的必要條件。 在計算機(jī)系統(tǒng)中存在著多種活動,如設(shè)備輸入輸出、進(jìn)程執(zhí)行管理、電源掉電、程序出錯等,要使這些活動協(xié)調(diào)工作,系統(tǒng)應(yīng)具有中斷能力。,7.3.1 中斷的基本概念,中斷是指計算機(jī)在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,使得CPU暫時中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完中斷程序之后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新進(jìn)程的過程。 中斷由硬件和軟件協(xié)作完成。首先由硬件的中斷裝置發(fā)現(xiàn)產(chǎn)生中斷

24、的事件,然后,中斷裝置暫?,F(xiàn)行程序的執(zhí)行,轉(zhuǎn)向處理該事件的程序來處理。計算機(jī)系統(tǒng)不僅可以處理由于硬件或軟件錯誤而產(chǎn)生的中斷事件,而且可以處理某種預(yù)定處理的偽事件。 引發(fā)中斷的事件稱為中斷源。 中斷源向CPU發(fā)出的請求中斷處理信號稱為中斷請求。 CPU收到中斷請求后轉(zhuǎn)去相應(yīng)的事件處理程序稱為中斷響應(yīng)。,7.3.2 中斷的作用,(1) CPU與I/O設(shè)備并行工作。除了程序直接控制方式之外,無論是中斷控制方式、DMA方式還是通道控制方式,都需要在設(shè)備和CPU之間進(jìn)行通信,設(shè)備向CPU發(fā)出中斷信號之后,CPU接收相應(yīng)的中斷信號進(jìn)行處理。 (2) 硬件故障處理。當(dāng)計算機(jī)硬件出現(xiàn)故障時,硬件向CPU發(fā)出中

25、斷信號,進(jìn)行相應(yīng)的故障處理。 (3) 實現(xiàn)人機(jī)交互。通過中斷,可以很好地實現(xiàn)人機(jī)交互,用戶可以干預(yù)機(jī)器運行、了解機(jī)器狀態(tài)、下達(dá)臨時命令等。 (4) 實現(xiàn)多道程序和分時系統(tǒng)。在多道程序和分時系統(tǒng)中,CPU資源被分為許多時間片,各進(jìn)程被分配不同的時間片。通過中斷技術(shù),實現(xiàn)不同進(jìn)程的切換,從而使各進(jìn)程輪流使用CPU資源。 (5) 實現(xiàn)實時處理。以中斷方式傳送實時信號,保證CPU能實時處理各種事件。 (6) 實現(xiàn)應(yīng)用程序與操作系統(tǒng)的聯(lián)系。如軟中斷。 (7) 實現(xiàn)多處理機(jī)間的聯(lián)系。以中斷方式實現(xiàn)多處理機(jī)間的信息交流和任務(wù)切換。,7.3.2 中斷的分類與優(yōu)先級,根據(jù)中斷源產(chǎn)生中斷的條件,中斷可分為: (1

26、) 外中斷:外中斷是指來自處理機(jī)和內(nèi)存外部的中斷,包括I/O設(shè)備發(fā)出的I/O中斷、外部信號中斷、各種定時器引起的時鐘中斷以及調(diào)試程序中設(shè)置的斷點等引起的調(diào)試中斷等。外中斷在狹義上一般稱為中斷。 (2) 內(nèi)中斷:內(nèi)中斷是指在處理機(jī)和內(nèi)存內(nèi)部產(chǎn)生的中斷。內(nèi)中斷一般稱為陷阱(trap)或異常。它包括由程序運算引起的各種錯誤,如非法地址、校驗錯、頁面失效、存取訪問控制錯、算術(shù)操作溢出、非法數(shù)據(jù)格式、除數(shù)為零、非法指令、用戶程序執(zhí)行特權(quán)指令、分時系統(tǒng)中的時間片中斷以及從用戶態(tài)到核心態(tài)的切換等。 為了按中斷源的輕重緩急處理響應(yīng)中斷,操作系統(tǒng)對不同的中斷賦予不同的優(yōu)先級。為了禁止中斷或屏蔽中斷,CPU的處理

27、機(jī)狀態(tài)字PSW中也設(shè)置有相應(yīng)的優(yōu)先級。如果中斷源的優(yōu)先級高于PSW的優(yōu)先級,則CPU響應(yīng)該中斷源的中斷請求,反之,CPU屏蔽該中斷源的中斷請求。,7.3.2 中斷的分類與優(yōu)先級,中斷和陷阱的主要區(qū)別如下: (1) 陷阱通常由處理機(jī)正在執(zhí)行的現(xiàn)行指令引起,而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起。 (2) 陷阱處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,而中斷處理程序提供的服務(wù)則不是為了當(dāng)前進(jìn)程。 (3) CPU在執(zhí)行完一條指令之后,在下一條指令開始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)陷阱。 (4) 在有的系統(tǒng)中,陷阱處理程序規(guī)定在各自的進(jìn)程上下文中執(zhí)行,而中斷處理程序則在系統(tǒng)上下文中執(zhí)行。,7.3.

28、3 軟中斷,中斷和陷阱都可以看作是硬中斷,因為這些中斷和陷阱都需要通過硬件來產(chǎn)生相應(yīng)的中斷請求。而軟中斷則是通信進(jìn)程之間用來模擬硬中斷的一種信號通信方式。 軟中斷與硬中斷相同的地方是: 中斷源發(fā)中斷請求或軟中斷信號后,CPU或接收進(jìn)程在適當(dāng)?shù)臅r機(jī)自動進(jìn)行中斷處理或完成軟中斷信號所對應(yīng)的功能; 不同的地方是: 接收軟中斷信號的進(jìn)程不一定正好在接收時占有處理機(jī),而相應(yīng)的處理必須等到該接收進(jìn)程得到處理機(jī)之后才能進(jìn)行,如果該接收進(jìn)程正好占有處理機(jī),那么,與中斷處理相同,該接收進(jìn)程在接收到軟中斷信號后將立即轉(zhuǎn)去執(zhí)行該軟中斷信號所對應(yīng)的功能。 在有些系統(tǒng)中,大部分的陷阱轉(zhuǎn)化為軟中斷處理。由于陷阱主要與當(dāng)前

29、執(zhí)行進(jìn)程有關(guān),因此,如果當(dāng)前執(zhí)行指令產(chǎn)生陷阱的話,則向當(dāng)前執(zhí)行進(jìn)程自身發(fā)出一個軟中斷信號從而立即進(jìn)入陷阱處理程序。,7.3.4 中斷處理過程,中斷處理的過程如下: (1) 首先,CPU檢查響應(yīng)中斷的條件是否滿足。CPU響應(yīng)中斷的條件是:有來自于中斷源的中斷請求、CPU允許中斷。如果中斷響應(yīng)條件不滿足,則中斷處理無法進(jìn)行。 (2) 如果CPU響應(yīng)中斷,則CPU關(guān)中斷,使其進(jìn)入不可再次響應(yīng)中斷的狀態(tài)。 (3) 保存被中斷進(jìn)程的現(xiàn)場。為了在中斷處理結(jié)束后能使進(jìn)程正確地返回到中斷點,系統(tǒng)必須保存當(dāng)前處理機(jī)狀態(tài)字PSW和程序計數(shù)器PC等的值。這些值一般保存在特定堆?;蛴布拇嫫髦?。 (4) 分析中斷原因

30、,調(diào)用中斷處理子程序。在多個中斷請求同時發(fā)生時,處理優(yōu)先級最高的中斷。 (5) 執(zhí)行中斷處理子程序。對陷阱來說,在有些系統(tǒng)中則是通過陷阱指令向當(dāng)前執(zhí)行進(jìn)程發(fā)出軟中斷信號后調(diào)用相應(yīng)的處理子程序。 (6) 退出中斷,恢復(fù)被中斷進(jìn)程的現(xiàn)場或調(diào)度新進(jìn)程占據(jù)處理機(jī)。 (7) 開中斷,CPU繼續(xù)執(zhí)行。,7.4 緩 沖 技 術(shù),為了緩解CPU和I/O設(shè)備速度不匹配的矛盾,提高CPU和I/O設(shè)備的并行性,現(xiàn)代操作系統(tǒng)幾乎在I/O設(shè)備與處理機(jī)交換數(shù)據(jù)時都引入了緩沖技術(shù)。 緩沖管理的主要職責(zé)是組織好這些緩沖區(qū),并提供獲得和釋放緩沖區(qū)的手段。,7.4.1 緩沖的引入,1. 緩解CPU和I/O設(shè)備間速度不匹配的矛盾

31、I/O設(shè)備和CPU處理速度間的不匹配問題不僅限制了和處理機(jī)連接的I/O設(shè)備數(shù)目,而且在中斷方式時容易造成數(shù)據(jù)丟失。 2. 減少對CPU的中斷頻率 在中斷方式時,如果在I/O控制器中增加一個100個字符的緩沖器,則相比采用單個字符的緩沖器,I/O控制器對處理機(jī)的中斷次數(shù)將降低100倍,即等到能存放100個字符的字符緩沖區(qū)裝滿之后才向處理機(jī)發(fā)出一次中斷,這將大大減少處理機(jī)的中斷處理時間。即使是使用DMA方式或通道方式控制數(shù)據(jù)傳送時,如果不劃分專用的內(nèi)存區(qū)或?qū)S镁彌_器來存放數(shù)據(jù)的話,也會因為要求數(shù)據(jù)的進(jìn)程所擁有的內(nèi)存區(qū)不夠或存放數(shù)據(jù)的內(nèi)存始址計算困難等原因而造成某個進(jìn)程長期占有通道或DMA控制器及設(shè)

32、備,從而產(chǎn)生所謂的瓶頸問題。 3. 提高CPU和I/O設(shè)備之間的并行性 緩沖區(qū)技術(shù)的引入可顯著地提高CPU和I/O設(shè)備間的并行操作程度,提高系統(tǒng)的吞吐率和設(shè)備的利用率。例如,在CPU和打印機(jī)之間設(shè)置緩沖區(qū)之后,便可使CPU與打印機(jī)可以并行工作。,7.4.2 緩沖的種類,1. 單緩沖 單緩沖是在設(shè)備和處理機(jī)之間設(shè)置一個緩沖器。設(shè)備和處理機(jī)交換數(shù)據(jù)時,先把被交換的數(shù)據(jù)寫入緩沖器,然后,由需要數(shù)據(jù)的設(shè)備或處理機(jī)從緩沖器中取走數(shù)據(jù)。由于緩沖器屬于臨界資源,即不允許多個進(jìn)程同時對一個緩沖器進(jìn)行操作,因此,設(shè)備和設(shè)備之間不能通過單緩沖達(dá)到并行操作。 2. 雙緩沖和多緩沖 在設(shè)備輸入時,先將數(shù)據(jù)送入到第一個

33、緩沖區(qū),裝滿之后便轉(zhuǎn)向第二個緩沖區(qū)。此時處理機(jī)可以從第一個緩沖區(qū)中移出數(shù)據(jù),進(jìn)行處理。從而提高CPU和I/O設(shè)備工作的并行性。 設(shè)置雙緩沖區(qū)還可以實現(xiàn)兩臺機(jī)器之間的同時雙向數(shù)據(jù)傳送。 多緩沖是把多個緩沖區(qū)連接起來組成兩部分,一部分專門用于輸入;而另一部分專門用于輸出的緩沖結(jié)構(gòu)。緩沖池則是把多個緩沖區(qū)連接起來統(tǒng)一管理,既可用于輸入又可用于輸出的緩沖結(jié)構(gòu)。,7.4.3 緩沖池的管理,1. 緩沖池的結(jié)構(gòu) 緩沖池由多個緩沖區(qū)組成。每個緩沖區(qū)又由兩部分組成: 一部分是用來標(biāo)識該緩沖區(qū)和管理的緩沖首部; 另一部分是用于存放數(shù)據(jù)的緩沖體。這兩部分有一一對應(yīng)的映射關(guān)系。 對于既可用于輸入又可用于輸出的公用緩沖

34、池,其中至少應(yīng)包含以下三種類型的緩沖區(qū): (1) 空閑緩沖區(qū); (2) 裝滿輸入數(shù)據(jù)的緩沖區(qū); (3) 裝滿輸出數(shù)據(jù)的緩沖區(qū)。,7.4.3 緩沖池的管理,為了方便于管理,系統(tǒng)把相同類型的緩沖區(qū)鏈接成一個隊列,于是可形成以下三種隊列: (1) 空閑緩沖隊列emq。這是由空閑緩沖區(qū)鏈接成的隊列。其隊首指針為F(emq),隊尾指針為L(emq)。 (2) 裝滿輸入數(shù)據(jù)的輸入緩沖隊列inq。這是由裝滿輸入數(shù)據(jù)的緩沖區(qū)鏈接成的隊列。其隊首指針為F(inq),隊尾指針為L(inq)。 (3) 裝滿輸出數(shù)據(jù)的輸出緩沖隊列outq。這是由裝滿輸出數(shù)據(jù)的緩沖區(qū)鏈接成的隊列。其隊首指針為F(outq),隊尾指針為

35、L(outq)。,7.4.3 緩沖池的管理,在緩沖池中,有以下4種工作緩沖區(qū): (1) 用于收容設(shè)備輸入數(shù)據(jù)的收容輸入緩沖區(qū)hin。 (2) 用于提取設(shè)備輸入數(shù)據(jù)的提取輸入緩沖區(qū)sin。 (3) 用于收容CPU輸出數(shù)據(jù)的收容輸出緩沖區(qū)hout。 (4) 用于提取CPU輸出數(shù)據(jù)的提取輸出緩沖區(qū)sout。,7.4.3 緩沖池的管理,2. 緩沖池管理 對緩沖池的管理由如下幾個操作組成: (1) 按一定的規(guī)則從3種緩沖區(qū)隊列中取出一個緩沖區(qū)的過程take_buf(type)。 (2) 按一定的規(guī)則把緩沖區(qū)插入相應(yīng)的緩沖區(qū)隊列的過程add_buf(type, number)。 (3) 供進(jìn)程申請緩沖區(qū)使

36、用的過程get_buf(type,number)。 (4) 供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊列的過程put_buf(type,work_buf)。 其中,參數(shù)type表示緩沖隊列類型,number為緩沖區(qū)號,而work_buf則表示工作緩沖區(qū)類型。,7.4.3 緩沖池的管理,緩沖區(qū)可以工作在收容輸入、提取輸入、收容輸出和提取輸出四種工作方式下 。 (1) 收容輸入。 (2) 提取輸入。 (3) 收容輸出。 (4) 提取輸出。,7.5 設(shè) 備 分 配,在多道程序環(huán)境下,系統(tǒng)中的設(shè)備供所有進(jìn)程共享。為防止諸進(jìn)程對系統(tǒng)設(shè)備資源的無序競爭,操作系統(tǒng)規(guī)定設(shè)備不允許用戶自行使用,必須由系統(tǒng)統(tǒng)一分配。 每當(dāng)進(jìn)

37、程向系統(tǒng)提出資源申請時,由設(shè)備分配程序根據(jù)一定的分配策略為進(jìn)程分配資源。,7.5.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu),1. 設(shè)備控制表DCT(Device Control Table) 系統(tǒng)為每一個設(shè)備都配置一張設(shè)備控制表,用于記錄本設(shè)備的情況。設(shè)備控制表DCT反映了設(shè)備的特性、設(shè)備和I/O控制器的連接情況,包括設(shè)備標(biāo)識、使用狀態(tài)和等待使用該設(shè)備的進(jìn)程隊列等。 DCT包括以下內(nèi)容: (1) 設(shè)備標(biāo)識符,設(shè)備標(biāo)識符用于標(biāo)識設(shè)備。 (2) 設(shè)備類型,反映設(shè)備的特性,例如是終端設(shè)備、塊設(shè)備或是字符設(shè)備等。 (3) 設(shè)備地址或設(shè)備號,每個設(shè)備都有一個相應(yīng)的地址或設(shè)備號。這個地址既可以是和內(nèi)存統(tǒng)一編址的,也可以是

38、單獨編址的。 (4) 設(shè)備狀態(tài),指設(shè)備是在工作狀態(tài)還是空閑狀態(tài)。 (5) 等待隊列指針,等待使用該設(shè)備的進(jìn)程組成等待隊列,其隊首和隊尾指針存放在DCT中。 (6) I/O控制器指針,該指針指向設(shè)備相連接的I/O控制器。,7.5.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu),2. 系統(tǒng)設(shè)備表SDT(System Device Table) 系統(tǒng)設(shè)備表SDT在整個系統(tǒng)中只有一張,它記錄已被連接到系統(tǒng)中的所有物理設(shè)備的信息,并為每個物理設(shè)備設(shè)置一表項。SDT的每個表項包括如下內(nèi)容: (1) DCT指針,該指針指向有關(guān)設(shè)備的設(shè)備控制表。 (2) 正在使用設(shè)備的進(jìn)程標(biāo)識。 (3) 設(shè)備類型和設(shè)備標(biāo)識符,該項的意義與DCT中

39、的相同。 SDT的主要意義在于反映系統(tǒng)中設(shè)備資源的狀態(tài),即系統(tǒng)中有多少設(shè)備,有多少是空閑的,又有多少已經(jīng)分配給了哪些進(jìn)程。,7.5.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu),3. 控制器控制表COCT(COntroler Control Table) 每個控制器都有一張COCT表,它反映I/O控制器的使用狀態(tài)以及和通道的連接情況等(DMA方式中沒有該項)。 4. 通道控制表CHCT(CHannel Control Table) 該表只在通道控制方式的系統(tǒng)中存在,每個通道都有一張CHCT表。CHCT包括通道標(biāo)識符、通道忙/閑標(biāo)識、等待獲得該通道的進(jìn)程等待隊列的隊首指針與隊尾指針等。,7.5.1 設(shè)備分配中的數(shù)據(jù)

40、結(jié)構(gòu),SDT,DCT,COCT和CHCT分別如下圖所示。顯然,一個進(jìn)程只有獲得了通道、控制器和所需設(shè)備3者之后,才具備有進(jìn)行I/O操作的物理條件,7.5.2 設(shè)備分配的原則,系統(tǒng)在進(jìn)行設(shè)備分配時,應(yīng)考慮以下幾個原則: 設(shè)備的共享屬性; 設(shè)備分配算法; 設(shè)備分配時的安全性。 1. 設(shè)備的共享屬性 第一種是獨占性,是指這種設(shè)備在一段時間內(nèi)只允許一個進(jìn)程獨占,屬于“臨界資源”; 第二種是共享性,是指這種設(shè)備允許多個進(jìn)程同時共享; 第三種是虛擬性,是指設(shè)備本身是獨占設(shè)備,但經(jīng)過虛擬技術(shù),可以把它變?yōu)樘摂M設(shè)備。 對上述的獨占、共享、虛擬三種設(shè)備,系統(tǒng)采取不同的分配策略。 (1) 獨占設(shè)備。對于獨占設(shè)備,

41、應(yīng)采用獨享分配策略,即將一個設(shè)備分配給某進(jìn)程后,便由該進(jìn)程獨占,直至進(jìn)程完成或釋放該設(shè)備。然后,系統(tǒng)才能再將該設(shè)備分配給其它進(jìn)程使用,這種分配策略的缺點是,設(shè)備不能得到充分的利用,有可能引起死鎖。 (2) 共享設(shè)備。對于共享設(shè)備,可同時分配給多個進(jìn)程使用。此時需要對多個進(jìn)程訪問設(shè)備的先后次序進(jìn)行合理的調(diào)度。 (3) 虛擬設(shè)備。通過對一臺獨占設(shè)備采用虛擬技術(shù)后,可變成多臺邏輯上的虛擬設(shè)備,因此,一臺虛擬設(shè)備是可共享的設(shè)備,可以將它同時分配給多個進(jìn)程使用,并對訪問該設(shè)備的多個進(jìn)程進(jìn)行先后次序控制。,7.5.2 設(shè)備分配的原則,2. 設(shè)備分配策略 (1) 先請求先分配 當(dāng)有多個進(jìn)程對同一設(shè)備提出I/

42、O請求時,或者是在同一設(shè)備上進(jìn)行多次I/O操作時,系統(tǒng)將按提出I/O請求的先后順序,將進(jìn)程發(fā)出的I/O請求命令排成隊列,其隊首指向被請求設(shè)備的DCT。當(dāng)該設(shè)備空閑時,系統(tǒng)從該設(shè)備的請求隊列隊首取出一個I/O請求消息,將設(shè)備分配給發(fā)出這個請求的進(jìn)程。 (2) 優(yōu)先級高者先分配 這種策略和進(jìn)程調(diào)度的優(yōu)先算法是一致的,即進(jìn)程的優(yōu)先級高,它的I/O請求也將優(yōu)先予以滿足。,7.5.2 設(shè)備分配的原則,3. 設(shè)備分配的安全性 (1) 安全分配方式 在這種分配下,每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。采用這種分配方式時,一旦進(jìn)程已經(jīng)獲得某種設(shè)備(資源)后便阻塞,使該進(jìn)程不

43、能再請求任何資源,并且在它運行期間也不保持任何資源。這種分配方式摒棄了造成死鎖的四個必要條件之一的“請求和保持”條件,從而使設(shè)備分配是安全的。其缺點是進(jìn)程進(jìn)展緩慢,即CPU和I/O設(shè)備是串行工作。 (2) 不安全分配方式 在這種分配方式中,進(jìn)程在發(fā)出I/O請求后仍繼續(xù)運行,需要時則可以發(fā)出第二個、第三個I/O請求等。僅當(dāng)進(jìn)程所請求的設(shè)備已被另一個進(jìn)程占用時,請求進(jìn)程才進(jìn)入阻塞狀態(tài)。這種分配方式的優(yōu)點是,一個進(jìn)程可同時使用多個設(shè)備,使進(jìn)程推進(jìn)迅速。其缺點是分配不安全,因為它可能具備“請求和保持”條件,從而可能造成死鎖。因此,在設(shè)備分配時,還應(yīng)對本次的設(shè)備分配是否會發(fā)生死鎖進(jìn)行安全性檢查,僅當(dāng)分配

44、是安全的情況下才可以進(jìn)行設(shè)備分配。,7.5.3 SPOOLing系統(tǒng),1. 什么是SPOOLing 在聯(lián)機(jī)情況下實現(xiàn)的同時外圍操作稱為SPOOLing(Simultaneaus Periphernal Operting On_Line),也稱為假脫機(jī)操作。 SPOOLing技術(shù)可將一臺物理I/O設(shè)備虛擬為多臺邏輯I/O設(shè)備,從而允許多個用戶共享一臺物理I/O設(shè)備。,7.5.3 SPOOLing系統(tǒng),2. SPOOLing系統(tǒng)的組成 (1) 輸入和輸出井:這是在磁盤上開辟的兩個大存儲空間。輸入井是模擬脫機(jī)輸入時的磁盤設(shè)備,用于暫存I/O設(shè)備輸入的數(shù)據(jù);輸出井是模擬脫機(jī)輸出的磁盤,用于暫存用戶程序

45、的輸出數(shù)據(jù)。 (2) 輸入緩沖區(qū)和輸出緩沖區(qū):為了緩和CPU和磁盤之間速度不匹配的矛盾,在內(nèi)存中開辟兩個緩沖區(qū):輸入緩沖區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井;輸出緩沖區(qū)則用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。 (3) 輸入進(jìn)程和輸出進(jìn)程:SPOOLing利用兩個進(jìn)程來模擬脫機(jī)I/O時的外圍控制機(jī)。其中,輸入進(jìn)程模擬脫機(jī)輸入時的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)再送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時,直接從輸入井中讀到內(nèi)存;輸出進(jìn)程模擬脫機(jī)輸出時的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時,再將輸出井中的

46、數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。,7.5.4 虛擬設(shè)備共享打印機(jī),打印機(jī)是常用的輸出設(shè)備,屬于獨占設(shè)備。利用SPOOLing技術(shù),可將之改造為一臺可供多個用戶共享的虛擬設(shè)備,從而提高設(shè)備的利用率,方便用戶使用。 當(dāng)用戶進(jìn)程請求打印輸出時,SPOOLing系統(tǒng)同意為它打印輸出,但并不真正立即把打印機(jī)分配給用戶進(jìn)程,而只為它做兩件事: 由輸出進(jìn)程在輸出井中為之申請一個空閑磁盤區(qū),并將要打印的數(shù)據(jù)送入其中; 輸出進(jìn)程再為用戶進(jìn)程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。 如果打印機(jī)空閑,輸出進(jìn)程將從請求打印隊列隊首取出一張請求打印表,根據(jù)表中的要求將要打

47、印的數(shù)據(jù),從輸出井傳送到內(nèi)存緩沖區(qū),再由打印機(jī)進(jìn)行打印。打印完后,輸出進(jìn)程再查看請求打印隊列中是否還有等待打印的請求表。若有,繼續(xù)取出隊列中的第一張表,并根據(jù)表中的要求進(jìn)行打印,如此下去,直至請求打印隊列為空,輸出進(jìn)程才將自己阻塞起來,當(dāng)再有打印請求時,輸出進(jìn)程才被喚醒。,7.5.5 SPOOLing系統(tǒng)的特點,(1) 提高I/O 速度 SPOOLing技術(shù)引入輸入井和輸出井,可以使輸入進(jìn)程、用戶進(jìn)程和輸出進(jìn)程同時工作。對數(shù)據(jù)所進(jìn)行的I/O操作,已從對低速I/O設(shè)備進(jìn)行的I/O操作,演變?yōu)閷斎刖蜉敵鼍袛?shù)據(jù)的存取,從而提高I/O 速度,緩解CPU與低速I/O設(shè)備之間速度不匹配的矛盾。 (2

48、) 將獨占設(shè)備改造為共享設(shè)備 在SPOOLing系統(tǒng)中,實際上并沒有為任何進(jìn)程分配設(shè)備,而只是在輸入井或輸出井中為進(jìn)程分配一個存儲區(qū)和建立一張I/O請求表。而輸入井和輸出井在磁盤上,為共享設(shè)備。這樣SPOOLing技術(shù)就把打印機(jī)等獨占設(shè)備改造為共享設(shè)備。 (3) 實現(xiàn)虛擬設(shè)備功能 宏觀上,雖然是多個進(jìn)程在同時使用一臺獨占設(shè)備,而對于每一個進(jìn)程而言,它們都會認(rèn)為自己是獨占了一個設(shè)備。當(dāng)然,該設(shè)備只是邏輯上的設(shè)備。SPOOLing系統(tǒng)實現(xiàn)了將獨占設(shè)備變換為若干臺對應(yīng)的邏輯設(shè)備的功能。,7.6 I/O軟件,I/O軟件的目標(biāo)是提高設(shè)備的高效性和通用性。一方面要保證I/O設(shè)備與CPU的并發(fā)性,以提高資源

49、的利用率;另一方面則盡可能地向用戶提供簡單抽象、清晰而統(tǒng)一的接口,采用統(tǒng)一標(biāo)準(zhǔn)的方法,來管理所有設(shè)備以及所需的I/O操作。 I/O軟件的基本思想是采用層次結(jié)構(gòu),底層軟件用于實現(xiàn)與硬件相關(guān)的操作,并可屏蔽硬件的具體細(xì)節(jié),高層軟件則主要向用戶提供一個簡潔、友好和規(guī)范的接口。每一層具有一個要執(zhí)行的、定義明確的功能和一個與鄰近層次定義明確的接口,各層的功能與接口隨系統(tǒng)的不同而異。,7.6.1 I/O軟件的設(shè)計目標(biāo)和原則,I/O軟件的設(shè)計目標(biāo)是高效率和通用性。 I/O軟件設(shè)計時主要考慮以下幾個問題: (1) 設(shè)備無關(guān)性 對于I/O系統(tǒng)中許多種類不同的設(shè)備,作為程序員,只需要知道如何使用這些資源來完成所需

50、要的操作,而無需了解設(shè)備的有關(guān)具體實現(xiàn)細(xì)節(jié)。 (2) 統(tǒng)一命名 要實現(xiàn)設(shè)備的無關(guān)性,其中一項重要的工作就是如何給I/O設(shè)備命名。不同的操作系統(tǒng)有不同的命名規(guī)則,一般而言,是在系統(tǒng)中對各類設(shè)備采取預(yù)先設(shè)計的、統(tǒng)一的邏輯名稱進(jìn)行命名,所有軟件都以邏輯名稱訪問設(shè)備。 (3) 出錯處理 (4) 緩沖技術(shù) 由于CPU與I/O設(shè)備之間的速度差異,需要使用緩沖技術(shù)。 (5) 設(shè)備的分配和釋放 (6) I/O控制方式,7.6.1 I/O軟件的設(shè)計目標(biāo)和原則,操作系統(tǒng)通常把I/O軟件組織成如下4個層次。 (1) I/O中斷處理程序。用于保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,處理完后再恢復(fù)被

51、中斷進(jìn)程的現(xiàn)場,然后返回到被中斷進(jìn)程。 (2) 設(shè)備驅(qū)動程序。與硬件直接相關(guān),負(fù)責(zé)具體實現(xiàn)系統(tǒng)對設(shè)備發(fā)出的操作指令,驅(qū)動I/O設(shè)備工作的驅(qū)動程序。 (3)設(shè)備無關(guān)軟件。負(fù)責(zé)實現(xiàn)與設(shè)備驅(qū)動器的統(tǒng)一接口、設(shè)備命名、設(shè)備的保護(hù)以及設(shè)備的分配與釋放等,同時為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲空間。 (4) 用戶層I/O軟件。實現(xiàn)與用戶交互的接口,用戶可直接調(diào)用在用戶層提供的、與I/O操作有關(guān)的庫函數(shù),對設(shè)備進(jìn)行操作。,7.6.2 I/O中斷處理程序,中斷是應(yīng)該盡量加以屏蔽的概念,應(yīng)該放在操作系統(tǒng)的底層進(jìn)行處理,系統(tǒng)的其它部分應(yīng)盡可能少地與之發(fā)生聯(lián)系。當(dāng)一個進(jìn)程請求I/O操作時,該進(jìn)程將被掛起,直到I/O

52、操作完成,并向CPU發(fā)出中斷信號。 當(dāng)CPU接收到I/O設(shè)備發(fā)來的中斷信號后,立即響應(yīng)中斷,將控制權(quán)交給中斷處理程序。中斷處理程序分析中斷產(chǎn)生的原因,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。,7.6.3 設(shè)備驅(qū)動程序,設(shè)備驅(qū)動程序是I/O進(jìn)程與設(shè)備控制器之間的通信程序,其主要任務(wù)是接收上層軟件發(fā)來的抽象I/O請求,如read或write命令,在把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動設(shè)備去執(zhí)行。另外,設(shè)備驅(qū)動程序?qū)⒂稍O(shè)備控制器發(fā)來的信號傳送給上層軟件。 1. 設(shè)備驅(qū)動程序的功能 (1) 接收由I/O進(jìn)程發(fā)來的命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求,例如,將磁盤塊號轉(zhuǎn)換為磁盤的柱面號、磁道號

53、及扇區(qū)號。 (2) 檢查用戶I/O請求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。 (3) 發(fā)出I/O命令,如果設(shè)備空閑,便立即啟動I/O設(shè)備去完成指定的I/O操作;如果設(shè)備處于忙碌狀態(tài),則將請求者的請求塊掛在設(shè)備隊列中等待。 (4) 及時響應(yīng)由控制器或通道發(fā)來的中斷請求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。 (5) 對于設(shè)置有通道的計算機(jī)系統(tǒng),驅(qū)動程序還應(yīng)該能夠根據(jù)用戶的I/O請求,自動地構(gòu)成通道程序。,7.6.3 設(shè)備驅(qū)動程序,2. 設(shè)備驅(qū)動程序的特點 (1) 驅(qū)動程序主要是指在請求I/O的進(jìn)程與設(shè)備控制器之間的一個通信和轉(zhuǎn)換程序。它將進(jìn)程的I/O請求經(jīng)過

54、轉(zhuǎn)換后,傳送給控制器,又把控制器中所記錄的設(shè)備狀態(tài)和I/O操作完成情況及時地反映給I/O請求進(jìn)程。 (2) 驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對不同類型的設(shè)備應(yīng)該配置不同的驅(qū)動程序。例如,可以為相同的多個終端設(shè)置一個終端驅(qū)動程序,但有時即使是同一類型的設(shè)備,由于生產(chǎn)廠家不同,它們也可能并不完全兼容,此時必須為它們配置不同的驅(qū)動程序。 (3) 驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。常用的I/O控制方式是中斷驅(qū)動和DMA方式,顯然,這兩種方式的驅(qū)動程序是不同的。 (4) 由于驅(qū)動程序與硬件緊密相關(guān),因此其中的一部分必須用匯編語言書寫。目前,許多驅(qū)動程序的基本部分

55、都固化在ROM中。,7.6.3 設(shè)備驅(qū)動程序,3. 設(shè)備驅(qū)動程序在系統(tǒng)中的位置 設(shè)備驅(qū)動程序是I/O進(jìn)程和設(shè)備控制器之間的通信程序,操作系統(tǒng)通過設(shè)備控制程序來控制設(shè)備的操作,因此,設(shè)備驅(qū)動程序要向外界提供接口,以便I/O設(shè)備能夠與操作系統(tǒng)的其他部分很好地交互。通常,設(shè)備驅(qū)動程序存放在操作系統(tǒng)的內(nèi)核空間,用戶只能通過它提供的接口來使用它,而不能隨意地修改。,7.6.3 設(shè)備驅(qū)動程序,4. 設(shè)備驅(qū)動程序的處理過程 不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動程序,它們大體上都可以分成兩部分,其中,除了有能夠驅(qū)動I/O設(shè)備工作的驅(qū)動程序外,還需要有設(shè)備中斷處理程序,以處理I/O完成后的工作。設(shè)備驅(qū)動程序的處理過

56、程如下: (1) 將抽象要求轉(zhuǎn)換為具體要求 (2) 檢查I/O請求的合法性 (3) 讀出和檢查設(shè)備的狀態(tài) (4) 傳送必要的參數(shù) (5) 工作方式的設(shè)置 (6) 啟動I/O設(shè)備,7.6.4 設(shè)備無關(guān)軟件,1. 設(shè)備無關(guān)性 也稱設(shè)備獨立性。其基本含義是:用戶的應(yīng)用程序獨立于具體使用的物理設(shè)備。 為了實現(xiàn)設(shè)備的無關(guān)性,引入了邏輯設(shè)備和物理設(shè)備這兩個概念。在應(yīng)用程序中,使用邏輯設(shè)備名來請求使用某類設(shè)備;而系統(tǒng)在實際執(zhí)行時,還必須使用物理設(shè)備名。因此,系統(tǒng)須具有將邏輯設(shè)備名轉(zhuǎn)換為物理設(shè)備名的功能。 操作系統(tǒng)引入設(shè)備無關(guān)性可帶來以下兩方面的好處。 (1) 設(shè)備分配時的靈活性 (2) 易于實現(xiàn)I/O重定向

57、 所謂I/O重定向,是指用于I/O操作的設(shè)備可以更換(即重定向),而不必改變應(yīng)用程序。,7.6.4 設(shè)備無關(guān)軟件,2. 設(shè)備無關(guān)軟件 驅(qū)動程序是一個與設(shè)備硬件緊密相關(guān)的軟件。為了實現(xiàn)設(shè)備無關(guān)性,需要在驅(qū)動程序之上設(shè)置一層軟件,稱之為設(shè)備無關(guān)軟件。 設(shè)備無關(guān)軟件的主要功能可分為以下兩個方面: (1) 執(zhí)行所有設(shè)備的共有操作。這些共有操作包括: 對獨立設(shè)備的分配與回收。 將邏輯設(shè)備名映射為物理設(shè)備名,進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動程序。 對設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問設(shè)備。 緩沖管理。 差錯控制。 提供獨立于設(shè)備的邏輯塊。 (2) 向用戶層軟件提供統(tǒng)一接口。,7.6.4 設(shè)備無關(guān)軟件,3. 邏

58、輯設(shè)備名到物理設(shè)備名映射 (1) 邏輯設(shè)備表 為了實現(xiàn)設(shè)備的無關(guān)性,系統(tǒng)必須設(shè)置一張邏輯設(shè)備表(LUT,Logical Unit Table),用于將應(yīng)用程序中所使用的邏輯設(shè)備名影射為物理設(shè)備名。該表的每個表目包含三項內(nèi)容:邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動程序入口地址。 (2) LUT的設(shè)置問題 第一種方式是在整個系統(tǒng)中只設(shè)置一張LUT。 第二種方式是為每個用戶設(shè)置一張LUT。,7.6.5 用戶層I/O軟件,通常情況下,大部分的I/O軟件都在操作系統(tǒng)內(nèi)部,但仍有一小部分在用戶層,包括與用戶程序鏈接在一起的庫函數(shù),以及完全運行在操作系統(tǒng)內(nèi)核之外的一些程序。系統(tǒng)調(diào)用,包括I/O系統(tǒng)調(diào)用,通常都通過

59、庫例程間接提供給用戶。,7.7 磁盤調(diào)度和管理,磁盤具有存儲容量大、價格低廉、斷電后信息不會丟失、可隨機(jī)存取等優(yōu)點,是當(dāng)前存放程序和數(shù)據(jù)的理想設(shè)備,現(xiàn)代計算機(jī)系統(tǒng)中,都配置有磁盤存儲器。 對文件的操作,都將涉及到對磁盤的訪問。 磁盤I/O速度的高低和磁盤系統(tǒng)的可靠性,都將直接影響系統(tǒng)性能。,7.7.1 磁盤結(jié)構(gòu),磁盤設(shè)備包括一個或多個物理盤片,每個磁盤片分一個或兩個存儲面。 每個盤面有一個讀寫磁頭,所有的讀寫磁頭都固定在唯一的移動臂上同時移動。 每個磁盤面被組織成若干個同心環(huán),這種環(huán)稱為磁道(track),磁道是讀寫磁頭運行的軌跡。 每條磁道又被劃分成若干個扇區(qū)(sector)。 在磁頭位置下的所有磁道組成的圓柱體稱為柱面。,7.7.2 磁盤訪問時間,整個磁盤的訪問時間包括三個部分:尋道時間、旋轉(zhuǎn)延遲時間和數(shù)據(jù)傳輸時間。 1. 尋道時間Ts 尋道時間是磁臂將磁頭移動到包含目標(biāo)扇區(qū)的柱面所經(jīng)歷的時間。尋道時間Ts包括啟動磁臂時間s與磁頭移動n條磁道所花費的時間之和,即 Ts=mn+s 其中,m是一常數(shù),與磁盤驅(qū)動器的速度有關(guān),磁臂的啟動時間約為2ms。因此,對于一般的磁盤,其尋道時間隨尋道距離的增加而增大,大體上是530ms。 2. 旋轉(zhuǎn)延遲時間Tr 旋轉(zhuǎn)延遲時間是磁盤需要將目標(biāo)扇區(qū)轉(zhuǎn)動到磁頭下的時間。不同類型的磁盤,它們的旋轉(zhuǎn)速度至少相差一個數(shù)

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論