《操作系統(tǒng)》第十章:IO設(shè)備管理_第1頁(yè)
《操作系統(tǒng)》第十章:IO設(shè)備管理_第2頁(yè)
《操作系統(tǒng)》第十章:IO設(shè)備管理_第3頁(yè)
《操作系統(tǒng)》第十章:IO設(shè)備管理_第4頁(yè)
《操作系統(tǒng)》第十章:IO設(shè)備管理_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

10.1設(shè)備管理概述10.2I/O控制方式10.3緩沖技術(shù)10.4設(shè)備分配與驅(qū)動(dòng)主要內(nèi)容第10章I/O設(shè)備管理設(shè)備管理是操作系統(tǒng)的重要組成部分

同其他管理來說,該部分內(nèi)容比較復(fù)雜凌亂。因?yàn)樵O(shè)備種類繁多,各自有著不同的特點(diǎn),所以很難制定一個(gè)通用的、規(guī)范的管理方法。設(shè)備管理的方法主要有3種:(1)操作系統(tǒng)直接操縱設(shè)備的運(yùn)行,例如直接程序控制、中斷

方式控制。(2)操作系統(tǒng)間接操縱設(shè)備的運(yùn)行,例如DMA和通道方式。(3)操作系統(tǒng)通過使用設(shè)備驅(qū)動(dòng)程序,將設(shè)備管理工作通過任

務(wù)(進(jìn)程)的形式來體現(xiàn)。OS只需制定標(biāo)準(zhǔn),將具體操

縱設(shè)備的程序交給不同的制造商去開發(fā)。10.1設(shè)備管理概述認(rèn)識(shí)計(jì)算機(jī)外設(shè)與計(jì)算機(jī)!PCI總線圖形控制器IDE控制器總線控制器CPU-內(nèi)存總線擴(kuò)展總線接口擴(kuò)展總線并行口想一想外設(shè)怎么工作?PCI總線總線控制器CPU-內(nèi)存總線IDE控制器發(fā)出一個(gè)讀命令讀完后向CPU發(fā)出中斷將數(shù)據(jù)送往內(nèi)存讀磁盤CPU向控制器中的寄存器讀寫數(shù)據(jù)控制器完成真正的工作,并向CPU發(fā)中斷信號(hào)想讓外設(shè)工作并不復(fù)雜!I/O系統(tǒng)想給用戶提供一個(gè)什么樣的視圖?看一段操縱外設(shè)的程序

int

fd=open(“/dev/something”);

for(inti=0;i<10;i++){

fprintf(fd,”Count%d\n”,i);

}

close(fd);(1)不論什么設(shè)備都是open,read,write,close操作系統(tǒng)為用戶提供統(tǒng)一的接口!(2)不同的設(shè)備對(duì)應(yīng)不同的文件(設(shè)備文件)設(shè)備文件中存放了設(shè)備的屬性!顯然操作系統(tǒng)將完成…鍵盤命令系統(tǒng)調(diào)用接口open(),read(),write(),close()磁盤命令設(shè)備驅(qū)動(dòng)設(shè)備屬性數(shù)據(jù)進(jìn)行解釋鍵盤控制器磁盤控制器中斷處理中斷處理鍵盤磁盤稱為I/O系統(tǒng)I/O系統(tǒng)如何向設(shè)備發(fā)命令?系統(tǒng)接口設(shè)備命令設(shè)備控制器系統(tǒng)接口中斷處理設(shè)備中斷I/O系統(tǒng)向設(shè)備控制器發(fā)命令設(shè)備控制器的結(jié)構(gòu)readwritecontrolstatus顯存寄存器組硬件控制器總線接口設(shè)備控制器控制寄存器設(shè)備地址1設(shè)備地址2…設(shè)備地址n數(shù)據(jù)寄存器控制信號(hào)(中斷等)CPU設(shè)備1設(shè)備nCPU、設(shè)備控制器與設(shè)備之間關(guān)系I/O系統(tǒng)向哪里發(fā)送設(shè)備發(fā)命令?讀寫設(shè)備控制器的寄存器!怎么讀寫?readwritecontrolstatus顯存寄存器組硬件控制器總線接口mov[100],ax關(guān)鍵是地址設(shè)備寄存器的編址獨(dú)立編址:

需要獨(dú)立的指令(in,out),如out0x21,AL內(nèi)存映像編址:

是內(nèi)存物理地址空間的一部分,使用mov命令,如mov[0x8000f000],AL查查硬件手冊(cè)就知道了!設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或CPU之間的數(shù)據(jù)傳送。I/O控制方式一般有4種:程序直接控制(查詢)方式;中斷控制方式;直接內(nèi)存存?。―MA)方式;通道控制方式。10.2I/O控制方式I/O系統(tǒng)發(fā)完命令后做什么?I/O系統(tǒng)發(fā)完命令后做什么?方案1:原地踏步等待!發(fā)送Read命令ReadI/O狀態(tài)

檢查I/O狀態(tài)沒有就緒從I/O讀取數(shù)據(jù)就緒將數(shù)據(jù)寫內(nèi)存原地踏步出錯(cuò)處理inAL,0x??while(AL!=reday){inAL,0x??}讀數(shù)據(jù)...輪詢!輪詢浪費(fèi)CPU資源(CPU比外設(shè)快太多了)!例子:程序方法控制I/O設(shè)備讀入數(shù)據(jù)流程程序直接控制(查詢)方式工作步驟小結(jié):(1)當(dāng)某進(jìn)程需要輸入/輸出數(shù)據(jù)時(shí),由CPU向設(shè)備控制器發(fā)出一條I/O指令啟動(dòng)設(shè)備工作(對(duì)于輸出操作,則CPU還要向數(shù)據(jù)寄存器中存放輸出數(shù)據(jù));(2)在設(shè)備輸入/輸出數(shù)據(jù)期間,CPU不斷地循環(huán)進(jìn)行查詢?cè)O(shè)備狀態(tài)寄存器的值(檢查I/O工作是否完成)。(3)若完成,對(duì)輸入操作來說CPU則從數(shù)據(jù)寄存器中取出數(shù)據(jù),然后進(jìn)行下一次的輸入/輸出數(shù)據(jù)或結(jié)束。讀I/O控制器狀態(tài)從I/O控制器中讀一個(gè)字取出該字存到內(nèi)存?zhèn)魉屯瓿桑肯乱粭l指令檢查狀態(tài)?CPU→I/OI/O→CPU出錯(cuò)I/O→CPUCPU→內(nèi)存完成就緒未完成未就緒向I/O控制器發(fā)讀指令例子:程序方法控制I/O設(shè)備讀入數(shù)據(jù)流程I/O系統(tǒng)發(fā)完命令后做什么?方案2:設(shè)備就緒了告訴CPU一聲!set_trap_gate(??,do?())do?(){inAL,0x??

if(AL!=reday){error();}

讀數(shù)據(jù)...}中斷發(fā)送Read命令ReadI/O狀態(tài)

檢查I/O狀態(tài)從I/O讀取數(shù)據(jù)就緒將數(shù)據(jù)寫內(nèi)存CPU做其它工作I/O中斷CPU和I/O并行出錯(cuò)處理中斷是大部分I/O的處理方式!例子:中斷方法控制I/O設(shè)備讀入數(shù)據(jù)流程該進(jìn)程進(jìn)入阻塞態(tài)(等待輸入完成)該進(jìn)程向I/O控制器發(fā)讀指令置中斷允許(在CPU狀態(tài)字中)處理輸入的數(shù)據(jù)發(fā)生中斷某進(jìn)程(有I/O請(qǐng)求)其他進(jìn)程進(jìn)程調(diào)度執(zhí)行程序指令執(zhí)行程序指令執(zhí)行程序指令輸入中斷服務(wù)程序恢復(fù)現(xiàn)場(chǎng)喚醒請(qǐng)求本次I/O設(shè)備的進(jìn)程將數(shù)據(jù)寄存器中的數(shù)據(jù)傳送到某特定內(nèi)存單元中保護(hù)現(xiàn)場(chǎng)I/O設(shè)備執(zhí)行讀操作當(dāng)完成讀操作后,將數(shù)據(jù)放在數(shù)據(jù)寄存器中,同時(shí)I/O控制器向CPU發(fā)出中斷信號(hào)I/O設(shè)備執(zhí)行程序指令進(jìn)程調(diào)度喚醒中斷在某些場(chǎng)合還不夠!如果用中斷來讀磁盤…磁盤緩存磁盤控制器總線內(nèi)存CPU中斷將數(shù)據(jù)讀入內(nèi)存每個(gè)字節(jié)從緩存移動(dòng)內(nèi)存都由CPU負(fù)責(zé)完成可以設(shè)計(jì)有一定處理能力的外圍設(shè)備,將一些簡(jiǎn)單任務(wù)交給它!發(fā)出讀請(qǐng)求I/O系統(tǒng)發(fā)完命令后做什么?方案3:簡(jiǎn)單任務(wù)自己做,完成了告訴CPU一聲!引入DMA(直接內(nèi)存存取)總線磁盤緩存磁盤控制器內(nèi)存CPUDMA地址計(jì)數(shù)中斷發(fā)送命令計(jì)數(shù)地址命令將數(shù)據(jù)讀入內(nèi)存幸運(yùn)的是:

該方式的細(xì)節(jié)由DMA設(shè)計(jì)者考慮,對(duì)于操作系統(tǒng)而言,考慮的仍然只是中斷處理例子:DMA方式數(shù)據(jù)輸入過程(1)當(dāng)一個(gè)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU對(duì)DMA進(jìn)行初始化工作:存放數(shù)據(jù)的內(nèi)存起始地址-DMA控制器的內(nèi)存地址寄存器;要輸入數(shù)據(jù)的字節(jié)數(shù)-DMA控制器的傳送字節(jié)數(shù)寄存器;控制字(中斷允許、DMA啟動(dòng)位=1)-DMA控制器的控制狀態(tài)寄存器;啟動(dòng)位被置1,則啟動(dòng)DMA控制器開始進(jìn)行數(shù)據(jù)傳輸。(2)該進(jìn)程放棄CPU,進(jìn)入阻塞等待狀態(tài),等待第一批數(shù)據(jù)輸入完成。進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行。(3)由DMA控制器控制整個(gè)數(shù)據(jù)的傳輸。當(dāng)輸入設(shè)備將一個(gè)數(shù)據(jù)送入DMA控制器的數(shù)據(jù)緩沖寄存器后,DMA

控制器立即取代CPU,接管數(shù)據(jù)地址總線的控制權(quán)(CPU工作周期挪用),將數(shù)據(jù)送至相應(yīng)的內(nèi)存單元;DMA控制器中的傳輸字節(jié)數(shù)寄存器計(jì)數(shù)減1;恢復(fù)CPU對(duì)數(shù)據(jù)地址總線的控制權(quán);第(3)步過程循環(huán)直到數(shù)據(jù)傳輸完畢。(4)當(dāng)一批數(shù)據(jù)輸入完成,DMA控制器向CPU發(fā)出中斷信號(hào),請(qǐng)求中斷運(yùn)行

進(jìn)程并轉(zhuǎn)向執(zhí)行中斷處理程序。(5)中斷程序首先保存被中斷進(jìn)程的現(xiàn)場(chǎng),喚醒等待輸入數(shù)據(jù)的那個(gè)進(jìn)程,使

其變成就緒狀態(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)

存地址中讀取數(shù)據(jù)進(jìn)行處理。I/O系統(tǒng)發(fā)完命令后做什么?方案4:可以交辦復(fù)雜任務(wù),完成后匯報(bào)!

通道具有CPU,可編程,可管理多個(gè)設(shè)備同時(shí)工作。從而真正實(shí)

現(xiàn)了CPU與外部設(shè)備的并行工作。

引入通道(channel)方式通道控制方式的工作過程:(1)當(dāng)一個(gè)進(jìn)程要求輸入輸出數(shù)據(jù)時(shí),CPU根據(jù)請(qǐng)求形成有關(guān)通道程序,

然后執(zhí)行輸入輸出指令啟動(dòng)通道工作;(2)申請(qǐng)輸入輸出數(shù)據(jù)的進(jìn)程放棄CPU進(jìn)入阻塞等待狀態(tài),等待數(shù)據(jù)輸入

輸出工作的完成,于是進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程運(yùn)行;(3)通道開始執(zhí)行CPU放在主存中的通道程序,獨(dú)立負(fù)責(zé)外設(shè)與主存的數(shù)

據(jù)交換;(4)當(dāng)數(shù)據(jù)交換完成后,通道向CPU發(fā)出中斷信號(hào),中斷正在運(yùn)行的進(jìn)程,

轉(zhuǎn)向中斷處理程序;(5)中斷處理程序首先保護(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)程繼續(xù)運(yùn)行;(6)當(dāng)進(jìn)程調(diào)度程序調(diào)度到申請(qǐng)輸入輸出數(shù)據(jù)的那個(gè)進(jìn)程時(shí),該進(jìn)程就到

指定的內(nèi)存地址中進(jìn)行數(shù)據(jù)處理。緩沖的目的:解決CPU和外設(shè)速度不匹配的矛盾,提高CPU與外設(shè)之間的并行性,減少對(duì)CPU的中

斷頻率緩沖技術(shù)的實(shí)現(xiàn)方法:硬件緩沖、軟件緩沖(1)硬件緩沖:利用專門的硬件寄存器作為緩沖

區(qū),一般由外設(shè)自帶的專用寄存器構(gòu)成例如:Printer、CD-ROM等(2)軟件緩沖:借助操作系統(tǒng)的管理,在內(nèi)存中專門開辟若干單元作為緩沖區(qū)10.3緩沖技術(shù)單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)-軟件緩沖的4種實(shí)現(xiàn)方法1.單緩沖:在內(nèi)存中開辟一個(gè)固定大小的區(qū)域作為緩沖區(qū)外設(shè)和CPU交換數(shù)據(jù)時(shí),先將被交換的數(shù)據(jù)寫入緩沖

區(qū),然后再由需要數(shù)據(jù)的CPU或外設(shè)從緩沖區(qū)中取出。該方式中,外設(shè)與CPU對(duì)緩沖區(qū)的操作是串行的。2.雙緩沖:在內(nèi)存中設(shè)置2個(gè)大小相同的緩沖區(qū)。外設(shè)和CPU可以交替使用這2個(gè)緩沖區(qū),從而在一定

程度上實(shí)現(xiàn)并行交換數(shù)據(jù)。單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的4種實(shí)現(xiàn)方法3.環(huán)形緩沖:在內(nèi)存中設(shè)置大小相等的多個(gè)緩沖區(qū),并將它們鏈接稱為一個(gè)環(huán)形鏈表。HeadFullEmptyHead一直指向緩沖區(qū)鏈表的第一個(gè)緩沖區(qū);

Full一直指向緩沖區(qū)鏈表中的第一個(gè)存滿數(shù)據(jù)的緩沖區(qū);

Empty一直指向緩沖區(qū)鏈表中的第一個(gè)空白的緩沖區(qū)。初始化時(shí):Head=Full=Empty,整個(gè)緩沖區(qū)鏈表為空;使用過程中:當(dāng)Full=Empty<==>整個(gè)緩沖區(qū)鏈表為空。單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的4種實(shí)現(xiàn)方法4.緩沖池:緩沖池是有多個(gè)大小相同的緩沖區(qū)組成池中的緩沖區(qū)是系統(tǒng)公共資源,所有進(jìn)程均可以共享池由系統(tǒng)管理程序統(tǒng)一管理,負(fù)責(zé)分配、回收工作池中每個(gè)緩沖區(qū)既可以用于輸入數(shù)據(jù),也可以用以輸出數(shù)據(jù)提取輸出輸入設(shè)備緩沖池的工作流程輸出設(shè)備SoutHoutinCPU緩沖池收容輸入收容輸出提取輸入…空緩沖隊(duì)列…輸入緩沖隊(duì)列…輸出緩沖隊(duì)列SinHin緩沖區(qū)號(hào)設(shè)備號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)互斥標(biāo)識(shí)位隊(duì)列指針數(shù)據(jù)區(qū)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的4種實(shí)現(xiàn)方法緩沖池的工作流程提取輸出輸入設(shè)備輸出設(shè)備SoutHoutCPU緩沖池收容輸入收容輸出提取輸入…空緩沖隊(duì)列…輸入緩沖隊(duì)列…輸出緩沖隊(duì)列SinHin緩沖區(qū)號(hào)設(shè)備號(hào)設(shè)備上的數(shù)據(jù)塊號(hào)互斥標(biāo)識(shí)位隊(duì)列指針數(shù)據(jù)區(qū)緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)單緩沖,雙緩沖,環(huán)形緩沖,緩沖池緩沖技術(shù)軟件緩沖的4種實(shí)現(xiàn)方法緩沖池的工作流程:(1)當(dāng)輸入設(shè)備需要進(jìn)行數(shù)據(jù)輸入時(shí),則從空緩沖隊(duì)列的隊(duì)首取下一個(gè)空緩沖區(qū),將它作為收容輸入工作緩沖區(qū),當(dāng)它被輸入裝滿數(shù)據(jù)后,則被鏈接到輸入緩沖隊(duì)列的隊(duì)尾;(2)當(dāng)某進(jìn)程需要從緩沖池輸入數(shù)據(jù)時(shí),則從輸入緩沖隊(duì)列的隊(duì)首取一個(gè)緩沖區(qū)作為提取輸入工作緩沖區(qū),該進(jìn)程從中提取數(shù)據(jù),取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾;(3)當(dāng)某進(jìn)程需要輸出數(shù)據(jù)到緩沖池時(shí),則從空緩沖隊(duì)列的隊(duì)首取下一個(gè)空緩沖區(qū),將它作為收容輸出工作緩沖區(qū),該進(jìn)程向該緩沖區(qū)中存放數(shù)據(jù),當(dāng)它被裝滿數(shù)據(jù)后,則被鏈接到輸出緩沖隊(duì)列的隊(duì)尾;(4)當(dāng)輸出設(shè)備需要進(jìn)行數(shù)據(jù)輸出時(shí),則從輸出緩沖隊(duì)列的隊(duì)首取一個(gè)緩沖區(qū)作為提取輸出工作緩沖區(qū),并從中提取數(shù)據(jù)輸出,取完后,則將該緩沖區(qū)鏈接到空緩沖區(qū)隊(duì)列的隊(duì)尾。SPOOL-SimultaneousPeripheralOperationOnLine外部設(shè)備同時(shí)聯(lián)機(jī)操作,又稱假脫機(jī)操作。SPOOL是操作系統(tǒng)中采用的一項(xiàng)將獨(dú)占設(shè)備改造成共享設(shè)備的技術(shù)。實(shí)現(xiàn)方法:截獲向某獨(dú)享設(shè)備輸出的數(shù)據(jù),暫時(shí)保存到內(nèi)存緩沖區(qū)或磁盤文件中,并進(jìn)行排隊(duì),之后逐個(gè)輸出到外設(shè)上實(shí)現(xiàn)這一技術(shù)的軟、硬件系統(tǒng)稱為SPOOL系統(tǒng),或假脫機(jī)系統(tǒng),或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論