第五章2016設(shè)備管理_第1頁
第五章2016設(shè)備管理_第2頁
第五章2016設(shè)備管理_第3頁
第五章2016設(shè)備管理_第4頁
第五章2016設(shè)備管理_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章設(shè)備管理目錄1.設(shè)備管理概述2.I/O控制方式3.緩沖管理4.I/O軟件5.設(shè)備分配I/O系統(tǒng)結(jié)構(gòu)

CPU存儲(chǔ)器控制器設(shè)備控制器設(shè)備總線(數(shù)據(jù)、地址、控制)5.1設(shè)備管理概述1.微機(jī)I/O系統(tǒng)結(jié)構(gòu):總線型I/O系統(tǒng)結(jié)構(gòu):總線:是一組線和一組嚴(yán)格定義的可以描述在線上傳輸信息的協(xié)議,這一組線用來連接多個(gè)設(shè)備,這種連接稱為總線。一個(gè)典型的PC總線結(jié)構(gòu):5.1設(shè)備管理概述I/O系統(tǒng)結(jié)構(gòu)

2、主機(jī)I/O系統(tǒng)結(jié)構(gòu):加入通道結(jié)構(gòu):CPU存儲(chǔ)器控制器設(shè)備控制器設(shè)備通道1通道2控制器設(shè)備設(shè)備I/O通道是一種特殊的處理機(jī),它控制設(shè)備與內(nèi)存直接進(jìn)行數(shù)據(jù)交換。

I/O通道與一般的處理機(jī)的區(qū)別:

通道的指令類型單一,主要局限于與I/O操作有關(guān)的指令;通道沒有自己的內(nèi)存,是與CPU共享內(nèi)存。二.I/O設(shè)備的類型

按信息交換的單位分類:5.1設(shè)備管理概述1、塊設(shè)備:以數(shù)據(jù)塊為單位來傳送數(shù)據(jù)的設(shè)備,如磁盤.特點(diǎn):1)信息交換的單位為等長數(shù)據(jù)塊;

2)可尋址;

3)I/O控制采用DMA方式。

4)信息存儲(chǔ)設(shè)備二.I/O設(shè)備的類型

5.1設(shè)備管理概述2、字符設(shè)備:以單個(gè)字符為單位來傳送信息的設(shè)備,如終端、打印機(jī)

特點(diǎn):1)信息交換的單位為字符或字節(jié);

2)不可尋址;

3)I/O控制采用中斷驅(qū)動(dòng)方式。

4)信息輸入輸出設(shè)備3、網(wǎng)絡(luò)設(shè)備:

負(fù)責(zé)計(jì)算機(jī)之間的信息傳輸,兼具字符設(shè)備和塊設(shè)備的特點(diǎn),如調(diào)制解調(diào)器、網(wǎng)卡等。三.設(shè)備管理功能:跟蹤設(shè)備狀態(tài):動(dòng)態(tài)地記錄各種設(shè)備的狀態(tài)設(shè)備分配:獨(dú)占設(shè)備;共享設(shè)備;虛擬設(shè)備①

靜態(tài)分配——應(yīng)用程序級(jí)或作業(yè)級(jí)程序進(jìn)入系統(tǒng)時(shí)進(jìn)行分配,退出系統(tǒng)時(shí)收回全部資源②動(dòng)態(tài)分配——進(jìn)程級(jí)進(jìn)程提出設(shè)備申請(qǐng)時(shí)進(jìn)行分配,使用完畢后立即收回3.緩沖管理:緩和CPU與設(shè)備間速度不匹配的矛盾4.設(shè)備控制:設(shè)備驅(qū)動(dòng)+中斷處理

5.1設(shè)備管理概述3四.設(shè)備管理的目標(biāo)

1、提高設(shè)備利用率①合理分配設(shè)備②

提高設(shè)備與CPU、各外部設(shè)備之間的并行性

2、方便用戶的使用提供使用方便且獨(dú)立于設(shè)備的界面①

統(tǒng)一:對(duì)各種不同的設(shè)備提供一致的界面②

獨(dú)立于設(shè)備:用戶使用的設(shè)備與物理設(shè)備無關(guān)5.1設(shè)備管理概述5.2I/O控制方式程序I/O方式

(或稱循環(huán)測試I/O方式)設(shè)備選中,CPU向設(shè)備控制器發(fā)I/O指令,啟動(dòng)設(shè)備將控制器中的狀態(tài)寄存器的值busy置為1CPU循環(huán)測試busy的值,直到busy=0;設(shè)備控制器控制設(shè)備執(zhí)行I/O操作設(shè)備控制器置busy=0同時(shí)進(jìn)行CPU傳送到內(nèi)存I/O完成5.2I/O控制方式二、中斷驅(qū)動(dòng)I/O控制方式:設(shè)備選中,CPU向設(shè)備控制器發(fā)I/O指令,啟動(dòng)設(shè)備,并置狀態(tài)寄存器的允許中斷位=1將控制器中的狀態(tài)寄存器的busy置為1當(dāng)前進(jìn)程阻塞,CPU調(diào)度其他進(jìn)程執(zhí)行設(shè)備控制器控制設(shè)備執(zhí)行I/O操作設(shè)備控制器向CPU發(fā)中斷同時(shí)進(jìn)行CPU響應(yīng)中斷,傳送數(shù)據(jù)到內(nèi)存I/O完成常用于字符設(shè)備的I/O控制三.直接存儲(chǔ)器訪問(DMA)I/O控制方式

1.DMA控制方式的特征:

①數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;②數(shù)據(jù)傳送是在設(shè)備與內(nèi)存之間直接進(jìn)行的;③整塊數(shù)據(jù)的傳送是在DMA控制器的控制下完成的,僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需CPU干預(yù)。5.2I/O控制方式常用于塊設(shè)備的I/O控制三.直接存儲(chǔ)器訪問(DMA)I/O控制方式

2、DMA控制器的組成及作用:

3、DMA傳送過程:(1)DMA傳送前預(yù)處理:(CPU完成)測試設(shè)備狀態(tài)CPU初始化DMA控制器:主存緩沖區(qū)首址→MAR;傳送數(shù)據(jù)字節(jié)數(shù)→DC;設(shè)置傳輸方式啟動(dòng)設(shè)備。三.直接存儲(chǔ)器訪問(DMA)I/O控制方式2.DMA傳送過程:

DR1B或一個(gè)字?jǐn)?shù)據(jù)總線MAR所指主存單元(2)DMA控制器控制完成設(shè)備與主存間的數(shù)據(jù)傳送①磁盤控制器將整塊數(shù)據(jù)從磁盤讀入磁盤控制器的DR中;②磁盤控制器校驗(yàn)讀入的數(shù)據(jù);③磁盤控制器向DMA控制器發(fā)DMA請(qǐng)求④DMA控制器向CPU請(qǐng)求總線周期,獲得總線控制器權(quán)后:⑤

DC--;DC==0?是向CPU發(fā)中斷否

轉(zhuǎn)④MAR++;(3)CPU響應(yīng)中斷進(jìn)行后處理:(CPU完成)思考:

DMA控制方式與中斷驅(qū)動(dòng)控制方式的區(qū)別:(1)對(duì)CPU的中斷頻率不同;(2)數(shù)據(jù)傳輸控制不同。

四.I/O通道控制方式1.通道的運(yùn)算控制部件:

①通道地址字(CAW):記錄下一條通道指令的地址,其功能類似于中央處理機(jī)的指令計(jì)數(shù)器。

②通道命令字(CCW):記錄正在執(zhí)行的通道指令,其作用相當(dāng)于中央處理機(jī)的指令寄存器。

③通道狀態(tài)字(CSW):記錄通道、控制器、設(shè)備的狀態(tài),包括I/O傳輸完成信息、出錯(cuò)信息、重復(fù)執(zhí)行次數(shù)等。

通道控制方式是一種以內(nèi)存為中心,實(shí)現(xiàn)設(shè)備和內(nèi)存間直接交換數(shù)據(jù)的控制方式。四.I/O通道控制方式2.通道程序:保存在主存中

①操作碼:規(guī)定指令所執(zhí)行的操作。

②內(nèi)存地址:內(nèi)存緩沖區(qū)首址。

③計(jì)數(shù):本條指令要讀寫的字節(jié)數(shù)。

④通道程序結(jié)束位P:P=1表示本條指令是通道程序最后一條指令。

⑤記錄結(jié)束標(biāo)志R:R=0表示本條指令與下一條指令所處理的數(shù)據(jù)屬同一條記錄。

由一系列通道指令構(gòu)成。

通道指令內(nèi)容如下:四.I/O通道控制方式2.通道程序:CPU根據(jù)用戶的I/O請(qǐng)求生成通道程序;將其放到內(nèi)存中,并將其首地址放入CAW中CPU執(zhí)行“啟動(dòng)I/O”指令,啟動(dòng)通道工作

通道向CPU發(fā)應(yīng)答信號(hào),通知“啟動(dòng)I/O”指令完成,CPU可繼續(xù)執(zhí)行其他進(jìn)程通道取出通道程序的下一條指令,放入CCW中,并執(zhí)行之通道向CPU發(fā)中斷CPU響應(yīng)中斷否四.I/O通道控制方式3.I/O控制過程:

是最后一條指令嗎?是5.3緩沖管理

二.緩沖的引入(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾。(2)提高CPU和I/O設(shè)備之間的并行性。(3)解決數(shù)據(jù)處理單位與傳輸單位不匹配的問題。(4)減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷響應(yīng)時(shí)間的限制。什么是緩沖緩沖是兩種不同速度的設(shè)備之間傳輸信息時(shí)平滑傳輸過程的常用手段1位緩沖9.6Kb/s8位緩沖寄存器送內(nèi)存9.6Kb/s(b)(a)例:在一個(gè)遠(yuǎn)程通信系統(tǒng)中,在本地接收從遠(yuǎn)程終端發(fā)來的數(shù)據(jù),速率為9.6kb/s。送內(nèi)存CPU中斷頻率:9.6K;CPU響應(yīng)時(shí)間:0.1ms;CPU中斷頻率:1.2K;CPU響應(yīng)時(shí)間:0.1ms;兩個(gè)8位緩沖寄存器9.6Kb/s送內(nèi)存(c)CPU中斷頻率:1.2K;CPU響應(yīng)時(shí)間:0.8ms;送內(nèi)存12三.利用緩沖技術(shù)如何進(jìn)行I/O操作

(1)進(jìn)程活動(dòng)期間,請(qǐng)求從某設(shè)備讀入數(shù)據(jù)

進(jìn)程請(qǐng)求從輸入設(shè)備進(jìn)行讀操作的圖示輸入設(shè)備BUF進(jìn)程①②③

圖中的操作②與操作③需要同步

5.3緩沖管理

13三.利用緩沖技術(shù)如何進(jìn)行I/O操作(1)進(jìn)程活動(dòng)期間,請(qǐng)求從某設(shè)備讀入數(shù)據(jù)②

進(jìn)程請(qǐng)求從輸入設(shè)備進(jìn)行讀操作的步驟ⅰ當(dāng)用戶要求在某個(gè)設(shè)備上進(jìn)行讀操作時(shí),首先從系統(tǒng)中獲得一個(gè)空的緩沖區(qū)(圖中標(biāo)注的操作①);ⅱ將一個(gè)物理記錄送到緩沖區(qū)中(圖中標(biāo)注的存在②)

;ⅲ當(dāng)用戶請(qǐng)求這些數(shù)據(jù)時(shí),系統(tǒng)將依據(jù)邏輯記錄特性從緩沖區(qū)中提取并發(fā)送到用戶進(jìn)程存儲(chǔ)區(qū)中(圖中標(biāo)注的操作③)

;ⅳ當(dāng)緩沖區(qū)空而進(jìn)程又要從中取用數(shù)據(jù)時(shí)該進(jìn)程被迫等待。此時(shí),操作系統(tǒng)需要重新送數(shù)據(jù)填滿緩沖區(qū),進(jìn)程才能從中取數(shù)據(jù)繼續(xù)運(yùn)行。14(2)進(jìn)程活動(dòng)期間,請(qǐng)求從輸出設(shè)備輸出數(shù)據(jù)①

進(jìn)程請(qǐng)求從輸出設(shè)備進(jìn)行寫操作的圖示

圖中的操作②與操作③需要同步

①②③輸出設(shè)備BUF進(jìn)程5.3緩沖管理

三.利用緩沖技術(shù)如何進(jìn)行I/O操作15②進(jìn)程請(qǐng)求從輸出設(shè)備進(jìn)行寫操作的步驟

ⅰ當(dāng)用戶要求進(jìn)行寫操作時(shí),首先從系統(tǒng)中獲得一個(gè)空的緩沖區(qū)(圖中標(biāo)注的操作①)

;ⅱ將一個(gè)邏輯記錄從進(jìn)程存儲(chǔ)區(qū)傳送到緩沖區(qū)中(圖中標(biāo)注操作②)

;ⅲ當(dāng)緩沖區(qū)寫滿時(shí),系統(tǒng)將緩沖區(qū)的內(nèi)容作為物理記錄文件寫到設(shè)備上,使緩沖區(qū)再次為空(圖中標(biāo)注的操作

③)

;ⅳ只有在系統(tǒng)還來不及騰空緩沖區(qū)之前,進(jìn)程又企圖輸出信息時(shí),它才需要等待。三.利用緩沖技術(shù)如何進(jìn)行I/O操作(2)進(jìn)程活動(dòng)期間,請(qǐng)求從輸出設(shè)備輸出數(shù)據(jù)四.單緩沖和雙緩沖1.單緩沖(SingleBuffer)系統(tǒng)對(duì)一塊數(shù)據(jù)的處理時(shí)間:Max(C,T)+M

5.3緩沖管理

2.雙緩沖(DoubleBuffer)

系統(tǒng)對(duì)一塊數(shù)據(jù)的處理時(shí)間:Max(C+M,T)

T

M

C四.單緩沖和雙緩沖5.3緩沖管理

五.緩沖池(BufferPool)1、緩沖隊(duì)列管理

由內(nèi)存中一組緩沖區(qū)組成,由系統(tǒng)統(tǒng)一管理。

輸入隊(duì)列inq;輸出隊(duì)列outq。

①空緩沖區(qū):空緩沖隊(duì)列emq;②裝滿輸入數(shù)據(jù)的緩沖區(qū):③裝滿輸出數(shù)據(jù)的緩沖區(qū):5.3緩沖管理

五.緩沖池(BufferPool)2、緩沖池的使用:

①Getbuf(type):

申請(qǐng)一個(gè)緩沖區(qū);

Putbuf(type,number):

釋放一個(gè)緩沖區(qū);信號(hào)量設(shè)置:資源信號(hào)量:表示某類緩沖隊(duì)列中緩沖區(qū)的數(shù)量:

RS(emq)=n;RS(inq)=0;RS(outq)=0;互斥信號(hào)量:實(shí)現(xiàn)相應(yīng)緩沖隊(duì)列的互斥使用:

MS(emq)=MS(inq)=MS(outq)=1;(2)Getbuf過程

ProcedureGetbuf(type)beginWait(RS(type));Wait(MS(type));B(number)=Takebuf(type);Signal(MS(type));end

五.緩沖池(BufferPool)2.緩沖池的使用:

ProcedurePutbuf(type,number)beginWait(MS(type));Addbuf(type,number);Signal(MS(type));Signal(RS(type));end(3)Putbuf過程五.緩沖池(BufferPool)2.緩沖池的使用:

3、

緩沖池的工作方式

輸入隊(duì)列

空緩沖隊(duì)列

輸出隊(duì)列Getbuf(emq)收容輸入Putbuf(inq)Putbuf(outq)Getbuf(emq)Getbuf(inq)Putbuf(emq)Getbuf(outq)Putbuf(emq)提取輸入收容輸出提取輸出五.緩沖池(BufferPool)5.3緩沖管理

20UNIX系統(tǒng)的緩沖區(qū)管理1.概述

(1)UNIX系統(tǒng)緩沖管理的目的加快系統(tǒng)響應(yīng)、增加系統(tǒng)吞吐量減少對(duì)磁盤的I/O操作次數(shù)5.3緩沖管理

20UNIX系統(tǒng)的緩沖區(qū)管理

1、概述

(2)UNIX系統(tǒng)緩沖管理的思路預(yù)先緩存:當(dāng)進(jìn)程要從磁盤讀數(shù)據(jù)時(shí),首先考慮從高速緩沖中讀延遲發(fā)送當(dāng)進(jìn)程要寫數(shù)據(jù)到磁盤時(shí),先寫入高速緩沖中

緩沖讀高速緩沖

用戶數(shù)據(jù)區(qū)用戶進(jìn)程磁盤緩沖寫高速緩沖

用戶數(shù)據(jù)區(qū)用戶進(jìn)程磁盤212、

緩沖管理數(shù)據(jù)結(jié)構(gòu)①

緩沖區(qū)的組成

ⅰ緩存數(shù)組

——含有磁盤上的數(shù)據(jù)的存儲(chǔ)器數(shù)組

ⅱ緩存首部

——描述緩沖區(qū)特性的數(shù)據(jù)結(jié)構(gòu)5.3緩沖管理

UNIX系統(tǒng)的緩沖區(qū)管理22

②緩存首部結(jié)構(gòu)設(shè)備號(hào)dev塊號(hào)blkno狀態(tài)flag指向數(shù)據(jù)區(qū)域的指針傳送字節(jié)數(shù)返回的I/O出錯(cuò)信息b_forw

設(shè)備緩沖區(qū)隊(duì)列前向指針b_back

設(shè)備緩沖區(qū)隊(duì)列后向指針av_forw

空閑緩沖區(qū)隊(duì)列前向指針av_back

空閑緩沖區(qū)隊(duì)列后向指針

ⅰ設(shè)備號(hào)dev緩沖區(qū)所包含的信息所屬設(shè)備的設(shè)備號(hào)

ⅱ塊號(hào)blkno由設(shè)備號(hào)指出的設(shè)備上相對(duì)于第0塊的塊號(hào)

ⅲ狀態(tài)flag——描述了緩沖區(qū)當(dāng)前的狀態(tài)忙標(biāo)志BUSY:緩沖區(qū)當(dāng)前正“忙”有效位AVE:緩沖包含的數(shù)據(jù)有效延遲寫DELWR:核心在某緩沖區(qū)重新分配出去之前必須把緩沖區(qū)內(nèi)容寫到磁盤上寫標(biāo)志W(wǎng)RITE:核心當(dāng)前正把緩沖區(qū)的內(nèi)容寫到磁盤讀標(biāo)志READ:核心當(dāng)前正從磁盤往緩沖區(qū)寫信息等待位

WAIT:一個(gè)進(jìn)程當(dāng)前正在等候緩沖區(qū)變?yōu)榭臻e2、

緩沖管理數(shù)據(jù)結(jié)構(gòu)23③緩沖區(qū)隊(duì)列結(jié)構(gòu)

ⅰ設(shè)備緩沖區(qū)隊(duì)列與某類設(shè)備有關(guān)的所有緩沖區(qū)組成的隊(duì)列稱為設(shè)備緩沖區(qū)隊(duì)列,簡稱b鏈。UNIX系統(tǒng)的緩沖區(qū)管理2.緩沖管理數(shù)據(jù)結(jié)構(gòu)b_forwb_backb_forwb_backb_forwb_backb_forwb_back設(shè)備緩沖區(qū)隊(duì)列24UNIX系統(tǒng)的緩沖區(qū)管理③緩沖區(qū)隊(duì)列結(jié)構(gòu)

ⅱ空閑緩沖區(qū)隊(duì)列可供重新分配使用的緩沖區(qū)組成的隊(duì)列稱為空閑緩沖區(qū)隊(duì)列,簡稱av鏈。

2.緩沖管理數(shù)據(jù)結(jié)構(gòu)av_forwav_backav_forwav_backav_forwav_backav_forwav_back空閑緩沖區(qū)隊(duì)列26(1)分配一個(gè)buf讀/寫某設(shè)備上的塊:①首先尋找該設(shè)備的b鏈,若找到:1)B_BUSY=0:移出av鏈,B_BUSY=1;使用完后,B_BUSY=0,鏈入av鏈隊(duì)尾。2)B_BUSY=1:緩沖區(qū)不在av鏈上,該進(jìn)程睡眠②若b鏈中找不到:取av鏈(空閑buf隊(duì)列)的首元素:1)若無延遲寫標(biāo)記,直接分配,插入b鏈,B_BUSY=1;用完后,鏈入av鏈隊(duì)尾,B_BUSY=02)若有延遲寫標(biāo)記:分配下一個(gè)空閑緩沖區(qū),然后同1)UNIX系統(tǒng)的緩沖區(qū)管理UNIX緩沖管理算法:LRU算法27(2)

對(duì)延遲寫的處理當(dāng)一個(gè)具有延遲寫標(biāo)記的buf移到av鏈頭,要用于分配時(shí),立即進(jìn)行寫操作:從av鏈上摘除,使用完后又送入av頭部,同時(shí)仍保留在原b鏈中。(3)釋放一個(gè)緩沖區(qū):

緩沖區(qū)讀寫操作結(jié)束后,保留在b鏈,并插入av鏈尾UNIX系統(tǒng)的緩沖區(qū)管理UNIX緩沖管理算法27UNIX系統(tǒng)的緩沖區(qū)管理緩沖區(qū)的檢索算法(1)分配一個(gè)緩沖區(qū):27UNIX系統(tǒng)的緩沖區(qū)管理緩沖區(qū)的檢索算法(2)釋放一個(gè)緩沖區(qū):27UNIX系統(tǒng)的緩沖區(qū)管理5.讀磁盤塊與寫次盤塊(1)讀磁盤塊:27UNIX系統(tǒng)的緩沖區(qū)管理5.讀磁盤塊與寫次盤塊(2)寫磁盤塊:I/O應(yīng)答進(jìn)行I/O調(diào)用;格式化I/O命名、保護(hù)、緩沖、分配設(shè)備驅(qū)動(dòng)+中斷處理當(dāng)I/O結(jié)束時(shí),進(jìn)行中斷處理執(zhí)行I/O操作I/O請(qǐng)求用戶層軟件設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動(dòng)程序中斷處理程序硬件5.4I/O軟件I/O軟件的組成:I/O控制模塊邏輯I/O層設(shè)備I/O層內(nèi)核空間40二.I/O控制模塊的實(shí)現(xiàn)方式:即驅(qū)動(dòng)程序的調(diào)用方式

1、以設(shè)備處理進(jìn)程的方式:2、

將設(shè)備與文件一樣對(duì)待:UNIX、linux將設(shè)備與文件一樣對(duì)待,使用文件系統(tǒng)的系統(tǒng)調(diào)用命令進(jìn)行設(shè)備的讀、寫,由文件系統(tǒng)統(tǒng)一管理。

5.4I/O軟件I/O控制模塊I/O進(jìn)程:接口程序,面向用戶

設(shè)備處理進(jìn)程:設(shè)備驅(qū)動(dòng)程序,面向設(shè)備

設(shè)備文件名

目錄檢索i節(jié)點(diǎn)

設(shè)備驅(qū)動(dòng)程序Linux塊設(shè)備處理:用戶層軟件:read()虛擬文件系統(tǒng)VFS:通過塊設(shè)備文件操作表調(diào)用相關(guān)VFS的sys_read()磁盤高速緩存文件系統(tǒng)映射層:字節(jié)偏移量→邏輯塊號(hào)→物理塊號(hào),對(duì)塊設(shè)備發(fā)讀請(qǐng)求通用塊層:以物理塊號(hào)、操作類型為參數(shù),向I/O調(diào)度程序發(fā)啟動(dòng)磁盤讀操作命令塊設(shè)備驅(qū)動(dòng)程序塊設(shè)備驅(qū)動(dòng)程序磁盤磁盤413.設(shè)備處理進(jìn)程方式的I/O控制過程:

(1)用戶進(jìn)程請(qǐng)求I/O的系統(tǒng)功能調(diào)用

系統(tǒng)功能調(diào)用的形式:doio(ldev,mode,amount,addr); ldev:邏輯設(shè)備名

mode:操作模式

amount:傳輸數(shù)據(jù)的數(shù)目

addr:傳送地址

例如:fd1=open(“/dev/lp”,O_WRONLY);n=write(fd1,buf1,count1);

5.4I/O軟件二.I/O控制模塊的實(shí)現(xiàn)方式423.設(shè)備處理進(jìn)程方式的I/O控制過程:(2)I/O進(jìn)程處理過程:I/O接口程序①

將邏輯設(shè)備轉(zhuǎn)換為物理設(shè)備

ⅰ獲得I/O系統(tǒng)調(diào)用中給出的邏輯設(shè)備名(ldev);

ⅱ根據(jù)邏輯設(shè)備描述器,將邏輯設(shè)備名轉(zhuǎn)換為物理設(shè)備名。②

合法性檢查

ⅰ獲得I/O系統(tǒng)調(diào)用中給出的操作模式mode;

ⅱ根據(jù)DCB中命令轉(zhuǎn)換表中允許的操作,檢查操作的合法性。③

形成I/O請(qǐng)求塊,發(fā)消息給對(duì)應(yīng)的設(shè)備處理進(jìn)程

ⅰ根據(jù)請(qǐng)求的參數(shù)形成I/O請(qǐng)求塊(IORB);

ⅱ將I/O請(qǐng)求塊(IORB)掛到對(duì)應(yīng)的設(shè)備請(qǐng)求隊(duì)列。二.I/O控制模塊的實(shí)現(xiàn)方式44{while(該進(jìn)程的邏輯設(shè)備描述器隊(duì)列不空){if(與ldev相聯(lián)結(jié)的物理設(shè)備找到)break;/*找到*/}if(該進(jìn)程的邏輯設(shè)備描述器隊(duì)列為空)return(錯(cuò)誤碼);/*設(shè)備邏輯名錯(cuò)*/

檢查參數(shù)與該設(shè)備特性是否一致;if(不一致)return(錯(cuò)誤碼);/*傳送參數(shù)錯(cuò)*/

構(gòu)造iorb;把iorb插入到該設(shè)備的請(qǐng)求隊(duì)列中;喚醒因等待I/O請(qǐng)求塊而睡眠的設(shè)備處理進(jìn)程;

}④I/O進(jìn)程的處理算法描述:45(3)設(shè)備處理進(jìn)程:

processio{l:while(設(shè)備請(qǐng)求隊(duì)列不空){取一個(gè)iorb;提取請(qǐng)求的詳細(xì)信息;啟動(dòng)I/O操作;

sleep(事件:I/O完成)/*I/O操作*//*等I/O完成后,進(jìn)入中斷處理程序,并在那里喚醒設(shè)備處理進(jìn)程*/if(出錯(cuò))將錯(cuò)誤信息寫在該設(shè)備的dcb中;傳送數(shù)據(jù)到目的地;喚醒請(qǐng)求此I/O操作的進(jìn)程;刪除iorb;

}sleep(事件:因無I/O請(qǐng)求);

gotol;

}3.設(shè)備處理進(jìn)程方式的I/O控制過程:46中斷處理程序

doio(ldev,mode,amount,addr);/*等I/O完成*/

標(biāo)識(shí)設(shè)備;執(zhí)行出錯(cuò)檢查;構(gòu)成iocb;將iocb送入設(shè)備請(qǐng)求隊(duì)列;喚醒因等待I/O請(qǐng)求塊而睡眠的I/O處理進(jìn)程;取iocb;如無iocb則等待;啟動(dòng)I/O操作;/*等I/O完成*/執(zhí)行出錯(cuò)檢查;

喚醒等待I/O完成的進(jìn)程;I/O設(shè)備

中斷服務(wù);喚醒I/O處理進(jìn)程;

用戶進(jìn)程I/O進(jìn)程I/O處理進(jìn)程啟動(dòng)設(shè)備中斷信號(hào)控制關(guān)系同步關(guān)系用戶進(jìn)程調(diào)用外部設(shè)備的過程3.設(shè)備處理進(jìn)程方式的I/O控制過程:(4)請(qǐng)求I/O的進(jìn)程、I/O進(jìn)程、設(shè)備處理進(jìn)程、中斷處理程序之間的同步關(guān)系

5.4I/O軟件三.中斷處理程序:喚醒被阻塞的驅(qū)動(dòng)程序進(jìn)程對(duì)被中斷進(jìn)程的CPU環(huán)境進(jìn)行保護(hù)中斷請(qǐng)求信號(hào)PSW程序狀態(tài)字PC程序計(jì)數(shù)器R0Rn…寄存器中斷棧PSWPCR0……Rn硬件完成軟件完成分析中斷原因,轉(zhuǎn)入相應(yīng)的中斷處理程序終端中斷處理程序打印機(jī)中斷處理程序磁盤中斷處理程序…恢復(fù)被中斷進(jìn)程的CPU現(xiàn)場…5.4I/O軟件四.設(shè)備驅(qū)動(dòng)程序:1.設(shè)備驅(qū)動(dòng)程序的功能:(1)接收由上層軟件發(fā)來的抽象命令,將其轉(zhuǎn)換為具體要求,并插入請(qǐng)求隊(duì)列。

(2)完成I/O操作的初始化工作:檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。

(3)發(fā)出I/O命令,啟動(dòng)I/O設(shè)備。

(4)及時(shí)響應(yīng)由控制器或通道發(fā)來的中斷請(qǐng)求。

(5)根據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。

(1)驅(qū)動(dòng)程序是請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之間的一個(gè)通信和轉(zhuǎn)換程序。

(2)驅(qū)動(dòng)程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對(duì)不同類型的設(shè)備應(yīng)配置不同的驅(qū)動(dòng)程序。

(3)驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。

(4)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分代碼必須用匯編語言書寫。

(5)驅(qū)動(dòng)程序不允許系統(tǒng)調(diào)用2.設(shè)備驅(qū)動(dòng)程序的特點(diǎn)

五.設(shè)備獨(dú)立性軟件

設(shè)備獨(dú)立性的概念(1)什么是設(shè)備獨(dú)立性是指用戶在程序中使用的設(shè)備與實(shí)際使用的設(shè)備無關(guān),即在用戶程序中僅使用邏輯設(shè)備名。也稱為設(shè)備無關(guān)性。物理設(shè)備名物理設(shè)備名用戶給出的可變的不變的系統(tǒng)給出的——設(shè)備地址物理設(shè)備名邏輯設(shè)備名邏輯名與物理設(shè)備名分開5.4I/O軟件五.設(shè)備獨(dú)立性軟件

設(shè)備獨(dú)立性的概念(2)物理設(shè)備名是系統(tǒng)提供的設(shè)備的標(biāo)準(zhǔn)名稱,它是永久的、不可更改的。(3)邏輯設(shè)備名是用戶自己指定的設(shè)備名(或設(shè)備號(hào)),它是暫時(shí)的、可更改的。fd=open(“/dev/lp”,mode);fd=open(“./file1.txt”,mode);5.4I/O軟件五.設(shè)備獨(dú)立性軟件

2.兩種類型的設(shè)備獨(dú)立性(1)一個(gè)程序獨(dú)立于分配給它的某種類型的具體設(shè)備

系統(tǒng)可以根據(jù)設(shè)備的使用情況,動(dòng)態(tài)地分配給程序某類設(shè)備中的任一臺(tái)物理設(shè)備,程序都能正確地執(zhí)行。(2)程序應(yīng)盡可能與它所使用的I/O設(shè)備類型無關(guān)

在輸入(或輸出)信息時(shí),信息可以從不同類型的輸入(或輸出)設(shè)備上輸入(或輸出),若要改變輸入(或輸出)設(shè)備的類型,程序只需進(jìn)行最少的修改。5.4I/O軟件73、設(shè)備獨(dú)立性的實(shí)現(xiàn)(1)在高級(jí)語言中用軟通道實(shí)現(xiàn)使用高級(jí)語言提供的指派語句,通過指派一個(gè)邏輯設(shè)備名

(通道號(hào))來定義一個(gè)設(shè)備或文件。如:fd=open(“/dev/lp”,mode);n=write(fd,buf1,count);(2)在交互系統(tǒng)中,用指派命令來定義

如:PDP系列機(jī)上的RT11系統(tǒng)

ASSIGN設(shè)備物理名設(shè)備邏輯名

如:assignlp:7

則程序中所有對(duì)邏輯設(shè)備號(hào)7的引用都在行式打印機(jī)上輸出。五.設(shè)備獨(dú)立性軟件

5.4I/O軟件73、設(shè)備獨(dú)立性的實(shí)現(xiàn)(3)邏輯設(shè)備描述器ldd(又稱邏輯設(shè)備表ldt)描述了進(jìn)程中邏輯設(shè)備名與物理設(shè)備名的對(duì)應(yīng)關(guān)系。

每個(gè)進(jìn)程建立一個(gè)ldd鏈表。五.設(shè)備獨(dú)立性軟件

5.4I/O軟件73、引入設(shè)備獨(dú)立性的優(yōu)點(diǎn)方便用戶改善設(shè)備利用率提高系統(tǒng)的可擴(kuò)展性和可適應(yīng)性五.設(shè)備獨(dú)立性軟件

5.4I/O軟件判斷題1.設(shè)備獨(dú)立性是指設(shè)備由用戶獨(dú)占使用答案:錯(cuò)5.5設(shè)備分配

1.設(shè)備控制塊系統(tǒng)為每一臺(tái)設(shè)備都配置了一個(gè)用來記錄設(shè)備的硬件特性、連接和使用情況的一組數(shù)據(jù),稱為設(shè)備控制塊。設(shè)備名設(shè)備屬性指向設(shè)備開關(guān)表的指針在I/O總線上的設(shè)備地址設(shè)備狀態(tài)當(dāng)前用戶進(jìn)程指針I(yè)/O請(qǐng)求隊(duì)列指針①

設(shè)備名

設(shè)備的系統(tǒng)名,即設(shè)備的物理名。②設(shè)備屬性描述設(shè)備現(xiàn)行狀態(tài)的一組屬性。③設(shè)備開關(guān)表轉(zhuǎn)換表包含設(shè)備特定的I/O例程入口地址,不具備相應(yīng)功能的設(shè)備在其例程地址上可以填“-1”。一.設(shè)備分配概述:2.設(shè)備分配算法先來先服務(wù)。(2)優(yōu)先級(jí)高者優(yōu)先。

3.設(shè)備分配中的安全性

(1)安全分配方式(2)不安全分配方式

5.5設(shè)備分配

一.設(shè)備分配概述:4.設(shè)備分配方式:

獨(dú)占分配:靜態(tài)分配,在作業(yè)調(diào)度一級(jí):獨(dú)占設(shè)

溫馨提示

  • 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)論