操作系統(tǒng)ch10-IO設(shè)備管理_第1頁
操作系統(tǒng)ch10-IO設(shè)備管理_第2頁
操作系統(tǒng)ch10-IO設(shè)備管理_第3頁
操作系統(tǒng)ch10-IO設(shè)備管理_第4頁
操作系統(tǒng)ch10-IO設(shè)備管理_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、- 1 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科10.1 設(shè)備管理概述設(shè)備管理概述10.2 I/O控制方式控制方式10.3 緩沖技術(shù)緩沖技術(shù)10.4 設(shè)備分配與驅(qū)動(dòng)設(shè)備分配與驅(qū)動(dòng)主要內(nèi)容主要內(nèi)容第第1010章章 I/OI/O設(shè)備管理設(shè)備管理- 2 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l設(shè)備管理是操作系統(tǒng)的重要組成部分設(shè)備管理是操作系統(tǒng)的重要組成部分同其他管理來說,該部分內(nèi)容比較復(fù)雜凌亂。因?yàn)樵O(shè)備種類繁同其他管理來說,該部分內(nèi)容比較復(fù)雜凌亂。因?yàn)樵O(shè)備種類繁多,各自有著不同的特點(diǎn),所以很難制定一個(gè)通用的、規(guī)范的多,各自有著不同的特

2、點(diǎn),所以很難制定一個(gè)通用的、規(guī)范的管理方法管理方法l設(shè)備管理的方法主要有設(shè)備管理的方法主要有3種:種:(1)操作系統(tǒng)直接操縱設(shè)備的運(yùn)行,例如直接程序控制、中斷)操作系統(tǒng)直接操縱設(shè)備的運(yùn)行,例如直接程序控制、中斷 方式控制方式控制(2)操作系統(tǒng)間接操縱設(shè)備的運(yùn)行,例如)操作系統(tǒng)間接操縱設(shè)備的運(yùn)行,例如DMA和通道方式和通道方式(3)操作系統(tǒng)通過使用設(shè)備驅(qū)動(dòng)程序,將設(shè)備管理工作通過任)操作系統(tǒng)通過使用設(shè)備驅(qū)動(dòng)程序,將設(shè)備管理工作通過任 務(wù)(進(jìn)程)的形式來體現(xiàn)。務(wù)(進(jìn)程)的形式來體現(xiàn)。OS只需制定標(biāo)準(zhǔn),將具體操只需制定標(biāo)準(zhǔn),將具體操 縱設(shè)備的程序交給不同的制造商去開發(fā)縱設(shè)備的程序交給不同的制造商去開

3、發(fā)10.1 10.1 設(shè)備管理概述設(shè)備管理概述- 3 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科認(rèn)識(shí)計(jì)算機(jī)外設(shè)與計(jì)算機(jī)認(rèn)識(shí)計(jì)算機(jī)外設(shè)與計(jì)算機(jī)!PCI總線總線圖形控制器圖形控制器IDE控制器控制器總線控制器總線控制器CPU-內(nèi)存總線內(nèi)存總線擴(kuò)展總線接口擴(kuò)展總線接口擴(kuò)展總線擴(kuò)展總線并行口并行口- 4 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科認(rèn)識(shí)計(jì)算機(jī)外設(shè)與計(jì)算機(jī)認(rèn)識(shí)計(jì)算機(jī)外設(shè)與計(jì)算機(jī)!- 5 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科想一想外設(shè)怎么工作想一想外設(shè)怎么工作?PCI總線總線總線控制器總線控制器C

4、PU-內(nèi)存總線內(nèi)存總線IDE控制器控制器發(fā)出一個(gè)讀命令發(fā)出一個(gè)讀命令讀完后向讀完后向CPU發(fā)出中斷發(fā)出中斷將數(shù)據(jù)送往內(nèi)存將數(shù)據(jù)送往內(nèi)存讀磁盤讀磁盤CPU向控制器中的寄存器向控制器中的寄存器讀寫數(shù)據(jù)讀寫數(shù)據(jù)控制器完成真正的工作,控制器完成真正的工作,并向并向CPU發(fā)中斷信號(hào)發(fā)中斷信號(hào)想讓外設(shè)工作想讓外設(shè)工作并不復(fù)雜并不復(fù)雜!- 6 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/OI/O系統(tǒng)想給用戶提供一個(gè)系統(tǒng)想給用戶提供一個(gè)什么樣的視圖什么樣的視圖? ?- 7 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科看一段操縱外設(shè)的程序看一段操縱外設(shè)

5、的程序int fd = open(“/dev/something”);for (int i = 0; i 10; i+) fprintf(fd,”Count %dn”,i);close(fd);(1) 不論什么設(shè)備都是不論什么設(shè)備都是open, read, write, close操作系統(tǒng)為用戶提供統(tǒng)一的接口操作系統(tǒng)為用戶提供統(tǒng)一的接口!(2) 不同的設(shè)備對(duì)應(yīng)不同的文件不同的設(shè)備對(duì)應(yīng)不同的文件(設(shè)備文件設(shè)備文件)設(shè)備文件中存放了設(shè)備的屬性設(shè)備文件中存放了設(shè)備的屬性!- 8 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科顯然操作系統(tǒng)將完成顯然操作系統(tǒng)將完成鍵盤鍵盤命令命

6、令系統(tǒng)調(diào)用接口系統(tǒng)調(diào)用接口open(),read(),write(),close()磁盤磁盤命令命令設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)/中斷中斷服務(wù)程序服務(wù)程序設(shè)備屬設(shè)備屬性數(shù)據(jù)性數(shù)據(jù)進(jìn)行解釋進(jìn)行解釋鍵盤控制器鍵盤控制器磁盤控制器磁盤控制器中斷中斷處理處理中斷中斷處理處理鍵盤鍵盤磁盤磁盤用戶庫函數(shù)用戶庫函數(shù)統(tǒng)稱為統(tǒng)稱為I/O系系統(tǒng)統(tǒng)- 9 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科IO系統(tǒng)用戶接口系統(tǒng)用戶接口函數(shù)名函數(shù)名 功能功能 create() 創(chuàng)建設(shè)備 remove() 刪除設(shè)備 open() 打開設(shè)備 close() 關(guān)閉設(shè)備 read() 從設(shè)備中讀取數(shù)據(jù) write()

7、 向設(shè)備中寫入數(shù)據(jù) ioctl() 控制設(shè)備(例如設(shè)置波特率等) Linux I/O: open/close/read/write/lseekVxworks I/O- 10 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)如何向設(shè)備發(fā)命令系統(tǒng)如何向設(shè)備發(fā)命令?系統(tǒng)接口系統(tǒng)接口設(shè)備命令設(shè)備命令設(shè)備控制器設(shè)備控制器系統(tǒng)接口系統(tǒng)接口中斷處理中斷處理設(shè)備中斷設(shè)備中斷nI/O系統(tǒng)向設(shè)備控制器發(fā)命令系統(tǒng)向設(shè)備控制器發(fā)命令設(shè)備控制器的結(jié)構(gòu)設(shè)備控制器的結(jié)構(gòu)readwritecontrolstatus顯存顯存寄存器組寄存器組硬件控制器硬件控制器總線接口總線接口- 11 -航天航

8、天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科設(shè)備控制器設(shè)備控制器控制寄存器控制寄存器設(shè)備地址設(shè)備地址1設(shè)備地址設(shè)備地址2 設(shè)備地址設(shè)備地址n數(shù)據(jù)數(shù)據(jù)/狀態(tài)寄狀態(tài)寄存器存器控制信號(hào)控制信號(hào)(中斷等)(中斷等)CPU設(shè)備設(shè)備1設(shè)備設(shè)備nCPU、設(shè)備控制器與設(shè)備之間關(guān)系- 12 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)向哪里發(fā)送設(shè)備發(fā)命令系統(tǒng)向哪里發(fā)送設(shè)備發(fā)命令?n讀寫設(shè)備控制器的寄存器讀寫設(shè)備控制器的寄存器!怎么讀寫怎么讀寫? readwritecontrolstatus顯存顯存寄存器組寄存器組硬件控制器硬件控制器總線接口總線接口mov

9、 100, ax 關(guān)鍵是地址關(guān)鍵是地址設(shè)備寄存器的編址設(shè)備寄存器的編址 獨(dú)立編址獨(dú)立編址: 需要獨(dú)立的指令需要獨(dú)立的指令(in, out),如,如out 0 x21, AL內(nèi)存映像編址內(nèi)存映像編址: 是內(nèi)存物理地址空間的一部分,使用是內(nèi)存物理地址空間的一部分,使用mov命令,如命令,如mov 0 x8000f000, AL查查硬件手冊(cè)查查硬件手冊(cè)就知道了就知道了!- 13 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或CPU之間的數(shù)據(jù)傳送之間的數(shù)據(jù)傳送lI/O控制方式一般有控制方式一般有

10、4種:種:u程序直接控制(查詢)方式程序直接控制(查詢)方式u中斷控制方式中斷控制方式u直接內(nèi)存存?。ㄖ苯觾?nèi)存存?。―MA)方式)方式u通道控制方式通道控制方式10.2 I/O10.2 I/O控制方式控制方式I/O系統(tǒng)發(fā)完命令后做什么系統(tǒng)發(fā)完命令后做什么?- 14 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)發(fā)完命令后做什么系統(tǒng)發(fā)完命令后做什么?n方案方案1: 原地踏步等待原地踏步等待!發(fā)送發(fā)送Read命令命令 Read I/O狀態(tài)狀態(tài) 檢查檢查I/O狀態(tài)狀態(tài)沒沒有有就就緒緒從從I/O讀取數(shù)據(jù)讀取數(shù)據(jù)就緒就緒將數(shù)據(jù)寫內(nèi)存將數(shù)據(jù)寫內(nèi)存原地踏步原地踏步出出錯(cuò)錯(cuò)

11、處處理理in AL, 0 x?while(AL!=ready) in AL, 0 x? 讀數(shù)據(jù)讀數(shù)據(jù).輪詢輪詢!輪詢輪詢浪費(fèi)浪費(fèi)CPU資源資源(CPU比外設(shè)快太比外設(shè)快太多了多了)!- 15 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科例子:程序方法控制例子:程序方法控制I/O設(shè)備讀入數(shù)據(jù)流程設(shè)備讀入數(shù)據(jù)流程程序直接控制(查詢)方式程序直接控制(查詢)方式 工作工作步驟小結(jié):步驟小結(jié):(1)當(dāng)某進(jìn)程需要輸入)當(dāng)某進(jìn)程需要輸入/輸出數(shù)據(jù)時(shí),輸出數(shù)據(jù)時(shí),由由CPU向設(shè)備控制器發(fā)出一條向設(shè)備控制器發(fā)出一條I/O指指令啟動(dòng)設(shè)備工作(對(duì)于輸出操作,令啟動(dòng)設(shè)備工作(對(duì)于輸出操作

12、,則則CPU還要向數(shù)據(jù)寄存器中存放輸還要向數(shù)據(jù)寄存器中存放輸出數(shù)據(jù));出數(shù)據(jù));(2)在設(shè)備輸入)在設(shè)備輸入/輸出數(shù)據(jù)期間,輸出數(shù)據(jù)期間,CPU不斷地循環(huán)進(jìn)行查詢?cè)O(shè)備狀態(tài)寄存不斷地循環(huán)進(jìn)行查詢?cè)O(shè)備狀態(tài)寄存器的值(檢查器的值(檢查I/O工作是否完成)。工作是否完成)。(3)若完成,對(duì)輸入操作來說)若完成,對(duì)輸入操作來說CPU則則從數(shù)據(jù)寄存器中取出數(shù)據(jù),然后進(jìn)從數(shù)據(jù)寄存器中取出數(shù)據(jù),然后進(jìn)行下一次的輸入行下一次的輸入/輸出數(shù)據(jù)或結(jié)束。輸出數(shù)據(jù)或結(jié)束。讀讀I/O控制器狀態(tài)控制器狀態(tài)從從I/O控制器中讀一個(gè)字控制器中讀一個(gè)字取出該字存到內(nèi)存取出該字存到內(nèi)存?zhèn)魉屯瓿??傳送完成?下一條指令下一條指令檢查狀

13、態(tài)?檢查狀態(tài)?CPU I/OI/O CPU出錯(cuò)出錯(cuò)I/O CPUCPU 內(nèi)存內(nèi)存完成完成就緒就緒未完成未完成未就緒未就緒向向I/O控制器發(fā)讀指令控制器發(fā)讀指令 例子:程序方法控制例子:程序方法控制I/O設(shè)備讀入數(shù)據(jù)流程設(shè)備讀入數(shù)據(jù)流程- 16 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)發(fā)完命令后做什么系統(tǒng)發(fā)完命令后做什么?n方案方案2: 設(shè)備就緒了告訴設(shè)備就緒了告訴CPU一聲一聲!set_trap_gate(?,do?()do?() in AL, 0 x? if(AL!=ready) error(); 讀數(shù)據(jù)讀數(shù)據(jù).中斷中斷發(fā)送發(fā)送Read命令命令 Re

14、ad I/O狀態(tài)狀態(tài) 檢查檢查I/O狀態(tài)狀態(tài)從從I/O讀取數(shù)據(jù)讀取數(shù)據(jù)就緒就緒將數(shù)據(jù)寫內(nèi)存將數(shù)據(jù)寫內(nèi)存CPU做其它工作做其它工作I/O 中斷中斷CPU和和I/O并行并行出出錯(cuò)錯(cuò)處處理理中斷是大部分中斷是大部分I/O的處理方式的處理方式!- 17 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科例子:中斷方法控制例子:中斷方法控制I/O設(shè)備讀入數(shù)據(jù)流程設(shè)備讀入數(shù)據(jù)流程該進(jìn)程進(jìn)入阻塞態(tài)該進(jìn)程進(jìn)入阻塞態(tài)(等待輸入完成)(等待輸入完成)該進(jìn)程向該進(jìn)程向I/O控制器發(fā)讀指令控制器發(fā)讀指令置中斷允許置中斷允許(在在CPU狀態(tài)字中狀態(tài)字中)處理輸入的數(shù)據(jù)處理輸入的數(shù)據(jù)發(fā)生中斷發(fā)生中斷

15、某進(jìn)程(有某進(jìn)程(有I/O請(qǐng)求)請(qǐng)求)其他進(jìn)程其他進(jìn)程進(jìn)程調(diào)度進(jìn)程調(diào)度執(zhí)行程序指令執(zhí)行程序指令執(zhí)行程序指令執(zhí)行程序指令執(zhí)行程序指令執(zhí)行程序指令輸入中斷服務(wù)程序輸入中斷服務(wù)程序恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)喚醒請(qǐng)求本次喚醒請(qǐng)求本次I/O設(shè)備的進(jìn)程設(shè)備的進(jìn)程將數(shù)據(jù)寄存器中的數(shù)據(jù)傳將數(shù)據(jù)寄存器中的數(shù)據(jù)傳送到某特定內(nèi)存單元中送到某特定內(nèi)存單元中保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)I/O設(shè)備執(zhí)行讀操作設(shè)備執(zhí)行讀操作當(dāng)完成讀操作后,將數(shù)據(jù)放在數(shù)據(jù)當(dāng)完成讀操作后,將數(shù)據(jù)放在數(shù)據(jù)寄存器中,同時(shí)寄存器中,同時(shí)I/O控制器向控制器向CPU發(fā)發(fā)出中斷信號(hào)出中斷信號(hào)I/O設(shè)備設(shè)備執(zhí)行程序指令執(zhí)行程序指令進(jìn)程調(diào)度進(jìn)程調(diào)度喚醒喚醒- 18 -航天航天軟軟

16、件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科輪詢和中斷輪詢和中斷nSJA1000 CAN總線控制器:總線控制器:SJA1000 是一種I/O 設(shè)備基于內(nèi)存編址的微控制nVxWorks操作系統(tǒng),強(qiáng)實(shí)時(shí)嵌入式操作系統(tǒng)操作系統(tǒng),強(qiáng)實(shí)時(shí)嵌入式操作系統(tǒng)n引導(dǎo)程序中使用輪詢實(shí)現(xiàn)星上軟件修復(fù)引導(dǎo)程序中使用輪詢實(shí)現(xiàn)星上軟件修復(fù)n應(yīng)用程序中使用正常的中斷服務(wù)程序應(yīng)用程序中使用正常的中斷服務(wù)程序- 19 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科輪詢和中斷輪詢和中斷- 20 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科輪詢和中斷輪詢和中斷nV

17、xWorks中與中斷相關(guān)的重要中與中斷相關(guān)的重要API函數(shù)函數(shù)n(1)intConnect():中斷連接,將中斷向量與:中斷連接,將中斷向量與ISR入口函數(shù)入口函數(shù)綁定綁定nSYNOPSIS STATUS intConnect ( VOIDFUNCPTR *vector,/* interrupt vector to attach to*/ VOIDFUNCPTRroutine, /* routine to be called */ intparameter /* parameter to be passed to routine */ );n中斷服務(wù)程序做什么中斷服務(wù)程序做什么?- 21 -航

18、天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科中斷在某些場(chǎng)合還不夠中斷在某些場(chǎng)合還不夠!n如果用中斷來讀磁盤如果用中斷來讀磁盤磁盤磁盤緩存緩存磁盤控制器磁盤控制器總線總線內(nèi)存內(nèi)存CPU中斷中斷將數(shù)據(jù)讀入內(nèi)存將數(shù)據(jù)讀入內(nèi)存每個(gè)字節(jié)從緩存移動(dòng)內(nèi)存都由每個(gè)字節(jié)從緩存移動(dòng)內(nèi)存都由CPU負(fù)責(zé)完成負(fù)責(zé)完成可以設(shè)計(jì)有一定處理能力的外圍設(shè)備,可以設(shè)計(jì)有一定處理能力的外圍設(shè)備,將一些簡單任務(wù)交給它將一些簡單任務(wù)交給它!發(fā)出讀請(qǐng)求發(fā)出讀請(qǐng)求- 22 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)發(fā)完命令后做什么系統(tǒng)發(fā)完命令后做什么?n方案方案3: 簡單任務(wù)

19、自己做,完成了告訴簡單任務(wù)自己做,完成了告訴CPU一聲一聲!引入引入DMA(直接內(nèi)存存取直接內(nèi)存存取)總線總線磁盤磁盤緩存緩存磁盤控制器磁盤控制器內(nèi)存內(nèi)存CPUDMA地址地址計(jì)數(shù)計(jì)數(shù)中斷中斷發(fā)送命令發(fā)送命令計(jì)數(shù)計(jì)數(shù)地址地址命令命令將數(shù)據(jù)讀入內(nèi)存將數(shù)據(jù)讀入內(nèi)存幸運(yùn)的是幸運(yùn)的是: 該方式的細(xì)節(jié)由該方式的細(xì)節(jié)由DMA設(shè)計(jì)者考慮,對(duì)設(shè)計(jì)者考慮,對(duì)于操作系統(tǒng)而言,于操作系統(tǒng)而言,考慮的仍然只是中斷處理考慮的仍然只是中斷處理- 23 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科例子:例子:DMA方式數(shù)據(jù)輸入過程方式數(shù)據(jù)輸入過程(1)當(dāng)一個(gè)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),)當(dāng)一個(gè)進(jìn)程要求

20、設(shè)備輸入數(shù)據(jù)時(shí),CPU對(duì)對(duì)DMA進(jìn)行初始化工作:進(jìn)行初始化工作:l存放數(shù)據(jù)的內(nèi)存起始地址存放數(shù)據(jù)的內(nèi)存起始地址 DMA控制器的內(nèi)存地址寄存器;控制器的內(nèi)存地址寄存器;l要輸入數(shù)據(jù)的字節(jié)數(shù)要輸入數(shù)據(jù)的字節(jié)數(shù) DMA控制器的傳送字節(jié)數(shù)寄存器;控制器的傳送字節(jié)數(shù)寄存器;l控制字控制字(中斷允許、中斷允許、DMA啟動(dòng)位啟動(dòng)位=1) DMA控制器的控制狀態(tài)寄存器;控制器的控制狀態(tài)寄存器;l啟動(dòng)位被置啟動(dòng)位被置1,則啟動(dòng),則啟動(dòng)DMA控制器開始進(jìn)行數(shù)據(jù)傳輸??刂破鏖_始進(jìn)行數(shù)據(jù)傳輸。(2)該進(jìn)程放棄)該進(jìn)程放棄CPU,進(jìn)入阻塞等待狀態(tài),等待第一批數(shù)據(jù)輸入完成。,進(jìn)入阻塞等待狀態(tài),等待第一批數(shù)據(jù)輸入完成。 進(jìn)

21、程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行。進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行。(3)由)由DMA控制器控制整個(gè)數(shù)據(jù)的傳輸??刂破骺刂普麄€(gè)數(shù)據(jù)的傳輸。l當(dāng)輸入設(shè)備將一個(gè)數(shù)據(jù)送入當(dāng)輸入設(shè)備將一個(gè)數(shù)據(jù)送入DMA控制器的數(shù)據(jù)緩沖寄存器后,控制器的數(shù)據(jù)緩沖寄存器后,DMA控制器立即取代控制器立即取代CPU,接管數(shù)據(jù)地址總線的控制權(quán)(,接管數(shù)據(jù)地址總線的控制權(quán)(CPU工作周期挪工作周期挪用),將數(shù)據(jù)送至相應(yīng)的內(nèi)存單元;用),將數(shù)據(jù)送至相應(yīng)的內(nèi)存單元;lDMA控制器中的傳輸字節(jié)數(shù)寄存器計(jì)數(shù)減控制器中的傳輸字節(jié)數(shù)寄存器計(jì)數(shù)減1;l恢復(fù)恢復(fù)CPU對(duì)數(shù)據(jù)地址總線的控制權(quán);對(duì)數(shù)據(jù)地址總線的控制權(quán);l第(第(3)步過程循環(huán)直到數(shù)據(jù)傳輸完

22、畢。)步過程循環(huán)直到數(shù)據(jù)傳輸完畢。(4)當(dāng)一批數(shù)據(jù)輸入完成,)當(dāng)一批數(shù)據(jù)輸入完成,DMA控制器向控制器向CPU發(fā)出中斷信號(hào),請(qǐng)求中斷運(yùn)行發(fā)出中斷信號(hào),請(qǐng)求中斷運(yùn)行 進(jìn)程并轉(zhuǎn)向執(zhí)行中斷處理程序。進(jìn)程并轉(zhuǎn)向執(zhí)行中斷處理程序。(5)中斷程序首先保存被中斷進(jìn)程的現(xiàn)場(chǎng),喚醒等待輸入數(shù)據(jù)的那個(gè)進(jìn)程,使)中斷程序首先保存被中斷進(jìn)程的現(xiàn)場(chǎng),喚醒等待輸入數(shù)據(jù)的那個(gè)進(jìn)程,使 其變成就緒狀態(tài),恢復(fù)現(xiàn)場(chǎng),返回被中斷的進(jìn)程繼續(xù)執(zhí)行。其變成就緒狀態(tài),恢復(fù)現(xiàn)場(chǎng),返回被中斷的進(jìn)程繼續(xù)執(zhí)行。(6)當(dāng)進(jìn)程調(diào)度程序調(diào)度到要求輸入數(shù)據(jù)的那個(gè)進(jìn)程時(shí),該進(jìn)程就到指定的內(nèi))當(dāng)進(jìn)程調(diào)度程序調(diào)度到要求輸入數(shù)據(jù)的那個(gè)進(jìn)程時(shí),該進(jìn)程就到指定的內(nèi)

23、存地址中讀取數(shù)據(jù)進(jìn)行處理。存地址中讀取數(shù)據(jù)進(jìn)行處理。- 24 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科I/O系統(tǒng)發(fā)完命令后做什么系統(tǒng)發(fā)完命令后做什么?n方案方案4: 可以交辦復(fù)雜任務(wù),完成后匯報(bào)可以交辦復(fù)雜任務(wù),完成后匯報(bào)!n 通道通道具有簡單的具有簡單的CPU功能,可編程,可功能,可編程,可管理多個(gè)設(shè)備同時(shí)工作。從而管理多個(gè)設(shè)備同時(shí)工作。從而真正真正實(shí)實(shí) 現(xiàn)了現(xiàn)了CPU與外部設(shè)備的并行工作。與外部設(shè)備的并行工作。 n 引入引入通道通道(channel)方式)方式通道控制方式的工作過程:通道控制方式的工作過程:(1)當(dāng)一個(gè)進(jìn)程要求輸入輸出數(shù)據(jù)時(shí),)當(dāng)一個(gè)進(jìn)程要求

24、輸入輸出數(shù)據(jù)時(shí),CPU根據(jù)請(qǐng)求形成有關(guān)通道程序,根據(jù)請(qǐng)求形成有關(guān)通道程序, 然后執(zhí)行輸入輸出指令啟動(dòng)通道工作;然后執(zhí)行輸入輸出指令啟動(dòng)通道工作;(2)申請(qǐng)輸入輸出數(shù)據(jù)的進(jìn)程放棄)申請(qǐng)輸入輸出數(shù)據(jù)的進(jìn)程放棄CPU進(jìn)入阻塞等待狀態(tài),等待數(shù)據(jù)輸入進(jìn)入阻塞等待狀態(tài),等待數(shù)據(jù)輸入 輸出工作的完成,于是進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行;輸出工作的完成,于是進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行;(3)通道開始執(zhí)行)通道開始執(zhí)行CPU放在主存中的通道程序,獨(dú)立負(fù)責(zé)外設(shè)與主存的數(shù)放在主存中的通道程序,獨(dú)立負(fù)責(zé)外設(shè)與主存的數(shù) 據(jù)交換;據(jù)交換;(4)當(dāng)數(shù)據(jù)交換完成后,通道向)當(dāng)數(shù)據(jù)交換完成后,通道向CPU發(fā)出中斷信號(hào),中斷正在

25、運(yùn)行的進(jìn)程,發(fā)出中斷信號(hào),中斷正在運(yùn)行的進(jìn)程, 轉(zhuǎn)向中斷處理程序;轉(zhuǎn)向中斷處理程序;(5)中斷處理程序首先保護(hù)被中斷進(jìn)程的現(xiàn)場(chǎng),喚醒申請(qǐng)輸入輸出的那個(gè))中斷處理程序首先保護(hù)被中斷進(jìn)程的現(xiàn)場(chǎng),喚醒申請(qǐng)輸入輸出的那個(gè) 進(jìn)程,使其變?yōu)榫途w狀態(tài),關(guān)閉通道,然后恢復(fù)現(xiàn)場(chǎng),返回被中斷的進(jìn)程,使其變?yōu)榫途w狀態(tài),關(guān)閉通道,然后恢復(fù)現(xiàn)場(chǎng),返回被中斷的 進(jìn)程繼續(xù)運(yùn)行;進(jìn)程繼續(xù)運(yùn)行;(6)當(dāng)進(jìn)程調(diào)度程序調(diào)度到申請(qǐng)輸入輸出數(shù)據(jù)的那個(gè)進(jìn)程時(shí),該進(jìn)程就到)當(dāng)進(jìn)程調(diào)度程序調(diào)度到申請(qǐng)輸入輸出數(shù)據(jù)的那個(gè)進(jìn)程時(shí),該進(jìn)程就到 指定的內(nèi)存地址中進(jìn)行數(shù)據(jù)處理。指定的內(nèi)存地址中進(jìn)行數(shù)據(jù)處理。- 25 -航天航天軟軟件中心件中心操作系操作

26、系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l緩沖的目的:緩沖的目的:解決解決CPU和外設(shè)速度不匹配的矛盾,和外設(shè)速度不匹配的矛盾,提高提高CPU與外設(shè)之間的并行性,減少對(duì)與外設(shè)之間的并行性,減少對(duì)CPU的中的中斷頻率斷頻率l緩沖技術(shù)的實(shí)現(xiàn)方法:緩沖技術(shù)的實(shí)現(xiàn)方法:硬件緩沖、軟件緩沖硬件緩沖、軟件緩沖(1)硬件緩沖:硬件緩沖:利用專門的硬件寄存器作為緩沖利用專門的硬件寄存器作為緩沖 區(qū),一般由外設(shè)自帶的專用寄存器構(gòu)成區(qū),一般由外設(shè)自帶的專用寄存器構(gòu)成 例如:例如:Printer、CD-ROM等等(2)軟件緩沖:軟件緩沖:借助操作系統(tǒng)的管理,在內(nèi)存中借助操作系統(tǒng)的管理,在內(nèi)存中 專門開辟若干單元作為緩沖

27、區(qū)專門開辟若干單元作為緩沖區(qū)10.3 10.3 緩沖技術(shù)緩沖技術(shù)- 26 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l單緩沖,雙緩沖,環(huán)形緩沖,緩沖池單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)緩沖技術(shù)- -軟件緩沖的軟件緩沖的4 4種實(shí)現(xiàn)方法種實(shí)現(xiàn)方法1.單緩沖:單緩沖:在內(nèi)存中開辟一個(gè)固定大小的區(qū)域作為緩沖區(qū)在內(nèi)存中開辟一個(gè)固定大小的區(qū)域作為緩沖區(qū)l 外設(shè)和外設(shè)和CPU交換數(shù)據(jù)時(shí),先將被交換的數(shù)據(jù)寫入緩沖交換數(shù)據(jù)時(shí),先將被交換的數(shù)據(jù)寫入緩沖 區(qū),然后再由需要數(shù)據(jù)的區(qū),然后再由需要數(shù)據(jù)的CPU或外設(shè)從緩沖區(qū)中取出?;蛲庠O(shè)從緩沖區(qū)中取出。l 該方式中,外設(shè)與該方式中,

28、外設(shè)與CPU對(duì)緩沖區(qū)的操作是串行的。對(duì)緩沖區(qū)的操作是串行的。2.雙緩沖:雙緩沖:在內(nèi)存中設(shè)置在內(nèi)存中設(shè)置2個(gè)大小相同的緩沖區(qū)。個(gè)大小相同的緩沖區(qū)。l 外設(shè)和外設(shè)和CPU可以交替使用這可以交替使用這2個(gè)緩沖區(qū),從而在一定個(gè)緩沖區(qū),從而在一定 程度上實(shí)現(xiàn)并行交換數(shù)據(jù)。程度上實(shí)現(xiàn)并行交換數(shù)據(jù)。- 27 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l單緩沖,雙緩沖,環(huán)形緩沖,緩沖池單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的緩沖技術(shù)軟件緩沖的4 4種實(shí)現(xiàn)方法種實(shí)現(xiàn)方法3.環(huán)形緩沖:環(huán)形緩沖:在內(nèi)存中設(shè)置大小相等的多個(gè)緩沖區(qū),并將在內(nèi)存中設(shè)置大小相等的多個(gè)緩沖區(qū),并將它

29、們鏈接稱為一個(gè)環(huán)形鏈表。它們鏈接稱為一個(gè)環(huán)形鏈表。HeadFullEmptyn Head一直指向緩沖區(qū)鏈表的第一個(gè)緩沖區(qū);一直指向緩沖區(qū)鏈表的第一個(gè)緩沖區(qū);n Full一直指向緩沖區(qū)鏈表中的第一個(gè)存滿數(shù)據(jù)的緩沖區(qū);一直指向緩沖區(qū)鏈表中的第一個(gè)存滿數(shù)據(jù)的緩沖區(qū);n Empty一直指向緩沖區(qū)鏈表中的第一個(gè)空白的緩沖區(qū)。一直指向緩沖區(qū)鏈表中的第一個(gè)空白的緩沖區(qū)。n 初始化時(shí):初始化時(shí):Head=Full=Empty,整個(gè)緩沖區(qū)鏈表為空;,整個(gè)緩沖區(qū)鏈表為空;n 使用過程中:當(dāng)使用過程中:當(dāng)Full=Empty 整個(gè)緩沖區(qū)鏈表為空。整個(gè)緩沖區(qū)鏈表為空。- 28 -航天航天軟軟件中心件中心操作系操作系統(tǒng)

30、統(tǒng) for 2013級(jí)級(jí)本科本科l單緩沖,雙緩沖,環(huán)形緩沖,緩沖池單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的緩沖技術(shù)軟件緩沖的4 4種實(shí)現(xiàn)方法種實(shí)現(xiàn)方法4.緩沖池緩沖池: 緩沖池是有多個(gè)大小相同的緩沖區(qū)組成緩沖池是有多個(gè)大小相同的緩沖區(qū)組成l 池中的緩沖區(qū)是系統(tǒng)公共資源,所有進(jìn)程均可以共享池中的緩沖區(qū)是系統(tǒng)公共資源,所有進(jìn)程均可以共享l 池由系統(tǒng)管理程序統(tǒng)一管理,負(fù)責(zé)分配、回收工作池由系統(tǒng)管理程序統(tǒng)一管理,負(fù)責(zé)分配、回收工作l 池中每個(gè)緩沖區(qū)既可以用于輸入數(shù)據(jù),也可以用以輸出數(shù)據(jù)池中每個(gè)緩沖區(qū)既可以用于輸入數(shù)據(jù),也可以用以輸出數(shù)據(jù)提取輸出提取輸出輸入設(shè)備輸入設(shè)備緩沖池的工作流程緩沖池的

31、工作流程輸出設(shè)備輸出設(shè)備SoutHoutinCPU緩沖池緩沖池收容輸入收容輸入收容輸出收容輸出提取輸入提取輸入空緩沖隊(duì)列空緩沖隊(duì)列輸入緩沖隊(duì)列輸入緩沖隊(duì)列輸出緩沖隊(duì)列輸出緩沖隊(duì)列SinHin緩沖區(qū)號(hào)緩沖區(qū)號(hào)設(shè)備號(hào)設(shè)備號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)互斥標(biāo)識(shí)位互斥標(biāo)識(shí)位隊(duì)列指針隊(duì)列指針數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)- 29 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l單緩沖,雙緩沖,環(huán)形緩沖,單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖池緩沖技術(shù)軟件緩沖的緩沖技術(shù)軟件緩沖的4 4種實(shí)現(xiàn)方法種實(shí)現(xiàn)方法緩沖池的工作流程緩沖池的工作流程提取輸出提取輸出輸入設(shè)備輸入設(shè)備

32、輸出設(shè)備輸出設(shè)備SoutHoutCPU緩沖池緩沖池收容輸入收容輸入收容輸出收容輸出提取輸入提取輸入空緩沖隊(duì)列空緩沖隊(duì)列輸入緩沖隊(duì)列輸入緩沖隊(duì)列輸出緩沖隊(duì)列輸出緩沖隊(duì)列SinHin緩沖區(qū)號(hào)緩沖區(qū)號(hào)設(shè)備號(hào)設(shè)備號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)互斥標(biāo)識(shí)位互斥標(biāo)識(shí)位隊(duì)列指針隊(duì)列指針數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)- 30 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科l單緩沖,雙緩沖,環(huán)形緩沖,單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖池緩沖技術(shù)軟件緩沖的緩沖技術(shù)軟件緩沖的4 4種實(shí)現(xiàn)方法種實(shí)現(xiàn)方法緩沖池的工作流程:緩沖池的工作流程:(1)當(dāng)輸入設(shè)備需要進(jìn)行數(shù)據(jù)輸入時(shí),則從

33、空緩沖隊(duì)列的隊(duì)首)當(dāng)輸入設(shè)備需要進(jìn)行數(shù)據(jù)輸入時(shí),則從空緩沖隊(duì)列的隊(duì)首取下一個(gè)空緩沖區(qū),將它作為收容輸入工作緩沖區(qū),當(dāng)它被輸取下一個(gè)空緩沖區(qū),將它作為收容輸入工作緩沖區(qū),當(dāng)它被輸入裝滿數(shù)據(jù)后,則被鏈接到輸入緩沖隊(duì)列的隊(duì)尾;入裝滿數(shù)據(jù)后,則被鏈接到輸入緩沖隊(duì)列的隊(duì)尾;(2)當(dāng)某進(jìn)程需要從緩沖池輸入數(shù)據(jù)時(shí),則從輸入緩沖隊(duì)列的)當(dāng)某進(jìn)程需要從緩沖池輸入數(shù)據(jù)時(shí),則從輸入緩沖隊(duì)列的隊(duì)首取一個(gè)緩沖區(qū)作為提取輸入工作緩沖區(qū),該進(jìn)程從中提取隊(duì)首取一個(gè)緩沖區(qū)作為提取輸入工作緩沖區(qū),該進(jìn)程從中提取數(shù)據(jù),取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾;數(shù)據(jù),取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾;(3)當(dāng)某進(jìn)程需

34、要輸出數(shù)據(jù)到緩沖池時(shí),則從空緩沖隊(duì)列的隊(duì))當(dāng)某進(jìn)程需要輸出數(shù)據(jù)到緩沖池時(shí),則從空緩沖隊(duì)列的隊(duì)首取下一個(gè)空緩沖區(qū),將它作為收容輸出工作緩沖區(qū),該進(jìn)程首取下一個(gè)空緩沖區(qū),將它作為收容輸出工作緩沖區(qū),該進(jìn)程向該緩沖區(qū)中存放數(shù)據(jù),當(dāng)它被裝滿數(shù)據(jù)后,則被鏈接到輸出向該緩沖區(qū)中存放數(shù)據(jù),當(dāng)它被裝滿數(shù)據(jù)后,則被鏈接到輸出緩沖隊(duì)列的隊(duì)尾;緩沖隊(duì)列的隊(duì)尾;(4)當(dāng)輸出設(shè)備需要進(jìn)行數(shù)據(jù)輸出時(shí),則從輸出緩沖隊(duì)列的隊(duì))當(dāng)輸出設(shè)備需要進(jìn)行數(shù)據(jù)輸出時(shí),則從輸出緩沖隊(duì)列的隊(duì)首取一個(gè)緩沖區(qū)作為提取輸出工作緩沖區(qū),并從中提取數(shù)據(jù)輸首取一個(gè)緩沖區(qū)作為提取輸出工作緩沖區(qū),并從中提取數(shù)據(jù)輸出,取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾。出,取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾。- 31 -航天航天軟軟件中心件中心操作系操作系統(tǒng)統(tǒng) for 2013級(jí)級(jí)本科本科lSPOOL Simultaneous Peripheral Operation On Line外部設(shè)備同時(shí)聯(lián)機(jī)操作,又稱假脫機(jī)操作。外部設(shè)備同時(shí)聯(lián)機(jī)操作,又稱假脫機(jī)操作。lSPOOL是操作系統(tǒng)中采用的一項(xiàng)將獨(dú)占設(shè)備改造成是操作系統(tǒng)中采

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論