第6章輸入輸出系統(tǒng)_第1頁(yè)
第6章輸入輸出系統(tǒng)_第2頁(yè)
第6章輸入輸出系統(tǒng)_第3頁(yè)
第6章輸入輸出系統(tǒng)_第4頁(yè)
第6章輸入輸出系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章輸入輸出系統(tǒng)I/O系統(tǒng)是計(jì)算機(jī)系統(tǒng)的重要組成部分I/O系統(tǒng)包括用于實(shí)現(xiàn)信息輸入、輸出和存儲(chǔ)功能的設(shè)備和相應(yīng)的控制器I/O系統(tǒng)的基本任務(wù):完成用戶提出的I/O請(qǐng)求,提高I/O速率以及改善I/O的利用率I/O系統(tǒng)的主要功能:緩沖區(qū)管理、設(shè)備分配、設(shè)備處理、虛擬設(shè)備及實(shí)現(xiàn)設(shè)備獨(dú)立性。第六章輸入輸出系統(tǒng)6.1

I/O系統(tǒng)的功能、模型和接口6.2

I/O設(shè)備和設(shè)備控制器6.3中斷機(jī)構(gòu)和中斷處理程序6.4設(shè)備驅(qū)動(dòng)程序6.5與設(shè)備無(wú)關(guān)的I/O軟件6.6用戶層的I/O軟件6.7緩沖區(qū)管理6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的組成直接用于I/O和存儲(chǔ)信息的設(shè)備相應(yīng)的設(shè)備控制器I/O通道(大、中型計(jì)算機(jī))總線I/O系統(tǒng)的結(jié)構(gòu)微型機(jī)I/O系統(tǒng)主機(jī)I/O系統(tǒng)6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的結(jié)構(gòu)微型機(jī)I/O系統(tǒng)微型機(jī)比較簡(jiǎn)單,多采用總線I/O系統(tǒng)結(jié)構(gòu)。CPU和內(nèi)存是直接連接到總線上的。I/O設(shè)備是通過(guò)設(shè)備控制器連接到總線上,CPU并不直接與I/O設(shè)備進(jìn)行通信,而是與設(shè)備控制器進(jìn)行通信,設(shè)備控制器是處理機(jī)和設(shè)備之間的接口。主機(jī)I/O系統(tǒng)在I/O系統(tǒng)中采用總線結(jié)構(gòu),而是增加一級(jí)I/O通道。其中,I/O系統(tǒng)共分為4級(jí):最低級(jí)為I/O設(shè)備,次低級(jí)為設(shè)備控制器,次高級(jí)為I/O通道,最高級(jí)是計(jì)算機(jī)。因而也稱這樣的I/O系統(tǒng)結(jié)構(gòu)為四級(jí)結(jié)構(gòu)。6.1.1I/O系統(tǒng)的基本功能隱藏物理設(shè)備的細(xì)節(jié)與設(shè)備的無(wú)關(guān)性提高處理機(jī)和I/O設(shè)備的利用率對(duì)I/O設(shè)備進(jìn)行控制確保對(duì)設(shè)備的正確性錯(cuò)誤處理執(zhí)行I/O操作設(shè)置設(shè)備寄存器、檢查寄存器狀態(tài)映射、保護(hù)、分塊、緩沖、分配產(chǎn)生I/O請(qǐng)求、格式化I/O、Spooling6.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型實(shí)現(xiàn)與用戶交互的接口。用戶可直接調(diào)用在I/O操作有關(guān)的庫(kù)函數(shù),對(duì)設(shè)備進(jìn)行操作。與硬件直接相關(guān),負(fù)責(zé)實(shí)現(xiàn)系統(tǒng)對(duì)設(shè)備發(fā)出的操作指令,驅(qū)動(dòng)I/O設(shè)備工作。保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,處理完后再恢復(fù)被中斷進(jìn)程的現(xiàn)場(chǎng)后返回到被中斷進(jìn)程。I/O軟件的層次式結(jié)構(gòu)用戶層軟件設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動(dòng)程序中斷處理程序硬件I/O請(qǐng)求I/O應(yīng)答實(shí)現(xiàn)與設(shè)備驅(qū)動(dòng)器的統(tǒng)一接口、設(shè)備命名、設(shè)備的保護(hù)以及分配與釋放等,同時(shí)為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲(chǔ)空間。6.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O系統(tǒng)中各種模塊之間的層次視圖I/O系統(tǒng)的上、下接口6.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O系統(tǒng)中各種模塊之間的層次視圖I/O系統(tǒng)的分層中斷處理程序處于I/O系統(tǒng)的底層,直接與硬件進(jìn)行交互設(shè)備驅(qū)動(dòng)程序進(jìn)程與控制器之間的通信程序。功能:接收用戶的I/O請(qǐng)求命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求。設(shè)備獨(dú)立性軟件6.1.3I/O接口塊設(shè)備接口塊設(shè)備。數(shù)據(jù)的存取和傳輸都是以數(shù)據(jù)塊為單位的設(shè)備?;咎卣魇莻鬏斔俾矢摺⒖蓪ぶ?。磁盤設(shè)備的I/O常采用DMA方式。特點(diǎn)隱藏磁盤的二維結(jié)構(gòu);將抽象命令映射為低層操作。6.1.3I/O接口流設(shè)備接口字符設(shè)備。數(shù)據(jù)的存取和傳輸都是以字符為單位的設(shè)備?;咎卣魇莻鬏斔俾实?、不可尋址,常采用中斷驅(qū)動(dòng)方式。get和put操作常采用順序存取方式,(用戶程序)獲取或輸出字符的方法是采用get和put操作。in-control指令包含了許多參數(shù),每個(gè)參數(shù)表示一個(gè)與具體設(shè)備相關(guān)的特定功能。6.1.3I/O接口網(wǎng)絡(luò)通信接口現(xiàn)代OS都提供了面向網(wǎng)絡(luò)的功能。還需要通過(guò)某種方式把計(jì)算機(jī)連接到網(wǎng)絡(luò)上。OS提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計(jì)算機(jī)能夠通過(guò)網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其他計(jì)算機(jī)通信或上網(wǎng)瀏覽。6.2I/O設(shè)備和設(shè)備控制器6.2.1I/O設(shè)備6.2.2設(shè)備控制器6.2.3內(nèi)存映像I/O6.2.4I/O通道6.2.1I/O設(shè)備I/O設(shè)備的類型按從屬關(guān)系分類系統(tǒng)設(shè)備用戶設(shè)備6.2.1I/O設(shè)備I/O設(shè)備的類型

按傳輸速率分類低速設(shè)備每秒幾個(gè)字節(jié)至數(shù)百字節(jié)鍵盤、鼠標(biāo)、語(yǔ)音輸入輸出設(shè)備等中速設(shè)備每秒數(shù)千至數(shù)萬(wàn)字節(jié)行式打印機(jī)、激光打印機(jī)等高速設(shè)備每秒數(shù)百K至數(shù)十M字節(jié)磁盤機(jī)、磁帶機(jī)、光盤機(jī)等6.2.1I/O設(shè)備I/O設(shè)備的類型按信息交換的單位分類塊設(shè)備(BlockDevice)信息的存取總是以數(shù)據(jù)塊為單位可尋址如,磁盤,盤塊的大小為512B~4KB字符設(shè)備(CharacterDevice)基本單位是字符不可尋址如,交互式終端、打印機(jī)6.2.1I/O設(shè)備I/O設(shè)備的類型按資源分配角度分類(共享屬性)獨(dú)占設(shè)備多數(shù)低速設(shè)備屬獨(dú)占設(shè)備,如打印機(jī)共享設(shè)備可供多個(gè)進(jìn)程同時(shí)訪問,如磁盤虛擬設(shè)備通過(guò)虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備變換為若干個(gè)邏輯設(shè)備,供若干個(gè)進(jìn)程同時(shí)使用6.2.1I/O設(shè)備I/O設(shè)備的類型按操作特性存儲(chǔ)設(shè)備存儲(chǔ)信息,如磁盤等I/O設(shè)備用來(lái)向CPU傳送信息或輸出加工處理后的信息,如顯示器、打印機(jī)6.2.1I/O設(shè)備設(shè)備與控制器之間的接口由外界輸入的信號(hào)經(jīng)轉(zhuǎn)換器轉(zhuǎn)換后送入緩沖器,數(shù)據(jù)達(dá)到一定的字符數(shù)后,再?gòu)木彌_器通過(guò)一組數(shù)據(jù)信號(hào)線送到控制器用于在設(shè)備和設(shè)備控制器之間傳送數(shù)據(jù)。從設(shè)備控制器經(jīng)過(guò)數(shù)據(jù)信號(hào)線傳送來(lái)的數(shù)據(jù)先暫存在緩沖器,經(jīng)轉(zhuǎn)換器經(jīng)過(guò)適當(dāng)轉(zhuǎn)換后,逐個(gè)字符輸出作為由設(shè)備控制器向I/O設(shè)備發(fā)送控制信號(hào)時(shí)的通路。規(guī)定設(shè)備要執(zhí)行的操作用于傳送指示設(shè)備當(dāng)前狀態(tài)的信號(hào):正在讀、寫或完成接口6.2.2設(shè)備控制器CPU與I/O設(shè)備之間的接口接收CPU發(fā)來(lái)的命令,控制一個(gè)或多個(gè)I/O設(shè)備工作,以實(shí)現(xiàn)I/O設(shè)備和計(jì)算機(jī)之間的數(shù)據(jù)交換,減輕CPU的負(fù)擔(dān)可編址的設(shè)備分類控制字符設(shè)備控制塊設(shè)備6.2.2設(shè)備控制器基本功能接收和識(shí)別命令控制寄存器存放接受的命令和參數(shù),并對(duì)其譯碼數(shù)據(jù)交換實(shí)現(xiàn)CPU與控制器、控制器與設(shè)備之間的數(shù)據(jù)交換,需設(shè)置數(shù)據(jù)寄存器標(biāo)識(shí)和報(bào)告設(shè)備的狀態(tài):需設(shè)置狀態(tài)寄存器地址識(shí)別識(shí)別所控制的設(shè)備,需設(shè)置地址譯碼器數(shù)據(jù)緩沖:解決I/O設(shè)備速率低的問題差錯(cuò)控制:對(duì)I/O設(shè)備發(fā)送的數(shù)據(jù)進(jìn)行差錯(cuò)檢測(cè)6.2.2設(shè)備控制器設(shè)備控制器的組成設(shè)備(輸入)或CPU(輸出)送來(lái)的數(shù)據(jù)CPU送來(lái)的控制信息或設(shè)備的狀態(tài)信息CPU發(fā)送啟動(dòng)命令,同時(shí),CPU發(fā)送地址,對(duì)地址譯碼,選擇相應(yīng)設(shè)備控制6.2.3內(nèi)存映像I/O驅(qū)動(dòng)程序?qū)⒊橄驣/O命令轉(zhuǎn)換出一系列具體的命令、參數(shù)等數(shù)據(jù)裝入設(shè)備控制器的相應(yīng)寄存器,由控制器來(lái)執(zhí)行這些命令,具體實(shí)施對(duì)I/O設(shè)備的控制。兩種完成方法利用特定的I/O指令內(nèi)存映像I/O6.2.3內(nèi)存映像I/O利用特定的I/O指令訪問內(nèi)存和設(shè)備需要使用兩種不同的指令例,將CPU寄存器的內(nèi)容復(fù)制到控制器寄存器,指令是

io-storecpu-reg,dev-no,dev-reg將CPU寄存器內(nèi)容存入內(nèi)存單元k的指令是

storecpu-reg,k6.2.3內(nèi)存映像I/O內(nèi)存映像I/O不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k處于0~n-1之間時(shí),被認(rèn)為是內(nèi)存地址,否則就是設(shè)備控制器的寄存器地址。例,將CPU寄存器的內(nèi)容復(fù)制到控制器0的第一個(gè)寄存器opcode,指令是

Storecpu-reg,n6.2.4I/O通道I/O通道(I/OChannel)設(shè)備的引入一種特殊處理機(jī),專門負(fù)責(zé)輸入/輸出工作有自己簡(jiǎn)單的指令系統(tǒng),只有數(shù)據(jù)傳送指令和設(shè)備控制指令主要目的是為了建立獨(dú)立的I/O操作,使有關(guān)對(duì)I/O操作的組織、管理及其結(jié)束處理也獨(dú)立于CPUCPU向I/O通道發(fā)送I/O命令,由通道執(zhí)行程序通道與一般處理機(jī)的區(qū)別指令單一沒有獨(dú)立的內(nèi)存6.2.4I/O通道通道類型 字節(jié)多路通道(ByteMultiplexorChannel)以字節(jié)交換方式工作,分時(shí)并行操作主要用來(lái)連接多個(gè)中低速設(shè)備6.2.4I/O通道通道類型 數(shù)組選擇通道(BlockSelectorChannel)以成組方式工作,高速傳輸數(shù)據(jù)可以連接多臺(tái)高速設(shè)備僅含有一個(gè)分配型子通道,在一段時(shí)間內(nèi)只能執(zhí)行一個(gè)通道程序,控制一臺(tái)I/O設(shè)備由于設(shè)備獨(dú)占使用,利用率較低6.2.4I/O通道通道類型 數(shù)組多路通道(BlockMultiplexorChannel)將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道分時(shí)并行操作的優(yōu)點(diǎn)相結(jié)合而形成的一種新通道。它含有多個(gè)非分配型子通道,因而這種通道既具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿意的通道利用率。6.2.4I/O通道“瓶頸”問題價(jià)格昂貴,所設(shè)置的通道數(shù)量較少;往往使它成了I/O的瓶頸,進(jìn)而造成整個(gè)系統(tǒng)吞吐量的下降。6.2.4I/O通道“瓶頸”問題解決方法增加設(shè)備到主機(jī)間的通路而不增加通道。即,把一個(gè)設(shè)備連接到多個(gè)控制器上,而一個(gè)控制器又連接到多個(gè)通道上。6.3中斷機(jī)構(gòu)和中斷處理程序6.3.1中斷簡(jiǎn)介6.3.2中斷處理程序6.3.1中斷簡(jiǎn)介中斷和陷入中斷。CPU硬件有一條中斷請(qǐng)求線(interrupt-requestline,IRL),由I/O設(shè)備觸發(fā)。設(shè)備控制器通過(guò)中斷請(qǐng)求線發(fā)送信號(hào)而引起中斷,CPU捕獲中斷并派遣到中斷處理程序,中斷處理程序通過(guò)處理設(shè)備來(lái)清除中斷。陷入。CPU內(nèi)部事件所引起的中斷。若系統(tǒng)發(fā)現(xiàn)有陷入事件,CPU也將暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行該事件的處理程序。區(qū)別:信號(hào)的來(lái)源。6.3.1中斷簡(jiǎn)介中斷向量表和中斷優(yōu)先級(jí)中斷向量表。為了處理上的方便,為每種設(shè)備配以相應(yīng)的處理程序,并把該程序的入口放置在一個(gè)二維表(中斷號(hào),入口地址)中。6.3.1中斷簡(jiǎn)介中斷向量表和中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)每個(gè)中斷源對(duì)服務(wù)要求的緊急程度并不相同。能夠使CPU延遲處理低優(yōu)先級(jí)中斷而不屏蔽所有中斷,這也可以讓高優(yōu)先級(jí)中斷搶占低優(yōu)先級(jí)中斷處理。對(duì)中斷源的處理方式屏蔽中斷。中斷分為非屏蔽中斷和可屏蔽中斷。嵌套中斷。6.3.2中斷處理程序I/O中斷處理程序的基本工作保留現(xiàn)行進(jìn)程的執(zhí)行現(xiàn)場(chǎng);通知等待該I/O操作完成的進(jìn)程;最終轉(zhuǎn)入進(jìn)程調(diào)度程序進(jìn)行重新調(diào)度。6.3.2中斷處理程序工作步驟喚醒被阻塞的驅(qū)動(dòng)(程序)進(jìn)程保護(hù)被中斷進(jìn)程的CPU環(huán)境轉(zhuǎn)入相應(yīng)的設(shè)備處理程序中斷處理恢復(fù)被中斷進(jìn)程的現(xiàn)場(chǎng)中斷現(xiàn)場(chǎng)保護(hù)示意圖不同的設(shè)備中斷處理程序不同6.3.2中斷處理程序I/O完成后,驅(qū)動(dòng)程序必須檢查本次I/O操作中是否發(fā)生了錯(cuò)誤,并向上層軟件報(bào)告,最終向調(diào)用者報(bào)告本次I/O的執(zhí)行情況6.4設(shè)備驅(qū)動(dòng)程序6.4.1設(shè)備驅(qū)動(dòng)程序概述6.4.2設(shè)備驅(qū)動(dòng)程序的處理過(guò)程6.4.3對(duì)I/O設(shè)備的控制方式6.4.1設(shè)備驅(qū)動(dòng)概述設(shè)備處理程序又稱為設(shè)備驅(qū)動(dòng)程序,是I/O進(jìn)程與設(shè)備控制器之間的通信程序設(shè)備驅(qū)動(dòng)程序的功能接收用戶的I/O請(qǐng)求命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求(I/O請(qǐng)求塊)。檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。發(fā)出I/O命令并檢查設(shè)備狀態(tài),空閑則啟動(dòng)I/O完成指定的操作,忙碌則將請(qǐng)求者的請(qǐng)求塊掛到相應(yīng)設(shè)備的I/O請(qǐng)求隊(duì)列。及時(shí)響應(yīng)由控制器或通道發(fā)來(lái)的中斷請(qǐng)求并處理若計(jì)算機(jī)系統(tǒng)設(shè)置有通道,則驅(qū)動(dòng)程序根據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。6.4.1設(shè)備驅(qū)動(dòng)概述注意每類設(shè)備有一個(gè)I/O請(qǐng)求隊(duì)列,在系統(tǒng)初始化時(shí),將系統(tǒng)中所有設(shè)備的I/O請(qǐng)求隊(duì)列置為空。在系統(tǒng)初啟時(shí),系統(tǒng)為每類設(shè)備創(chuàng)建一個(gè)進(jìn)程(其中的一種方式),執(zhí)行程序就是該設(shè)備的設(shè)備驅(qū)動(dòng)程序。由于系統(tǒng)初啟時(shí),相應(yīng)的I/O請(qǐng)求隊(duì)列為空,則在該隊(duì)列上睡眠。一旦有I/O請(qǐng)求塊掛入,喚醒該設(shè)備驅(qū)動(dòng)進(jìn)程。它被調(diào)度到時(shí),從隊(duì)列中取出一個(gè)I/O請(qǐng)求塊,并按該塊的內(nèi)容執(zhí)行一次I/O操作,發(fā)出I/O完成(或出錯(cuò))中斷信號(hào)。然后,檢查請(qǐng)求隊(duì),若為空,則進(jìn)入睡眠狀態(tài),否則,取下一個(gè)請(qǐng)求塊。6.4.1設(shè)備驅(qū)動(dòng)概述設(shè)備驅(qū)動(dòng)程序的特點(diǎn)驅(qū)動(dòng)程序主要是指在請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之間的一個(gè)通信和轉(zhuǎn)換程序驅(qū)動(dòng)程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對(duì)不同類型的設(shè)備應(yīng)配置不同的驅(qū)動(dòng)程序驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語(yǔ)言書寫驅(qū)動(dòng)程序應(yīng)允許可重入。一個(gè)正在運(yùn)行的驅(qū)動(dòng)程序常會(huì)在一次調(diào)用完成前被再次調(diào)用。驅(qū)動(dòng)程序不允許系統(tǒng)調(diào)用。6.4.1設(shè)備驅(qū)動(dòng)概述設(shè)備處理方式在整個(gè)系統(tǒng)中設(shè)置一個(gè)I/O進(jìn)程,統(tǒng)一負(fù)責(zé)所有設(shè)備的驅(qū)動(dòng)工作。專門用于執(zhí)行系統(tǒng)中所有各類設(shè)備的I/O操作。為每一類設(shè)備設(shè)置一個(gè)進(jìn)程,專門用于負(fù)責(zé)該類設(shè)備的驅(qū)動(dòng)工作(I/O操作)。為每臺(tái)設(shè)備建立一個(gè)設(shè)備驅(qū)動(dòng)進(jìn)程,它們分別負(fù)責(zé)專門設(shè)備的驅(qū)動(dòng)工作。同類設(shè)備的各驅(qū)動(dòng)進(jìn)程共享該類設(shè)備的設(shè)備驅(qū)動(dòng)程序。不設(shè)置專門的設(shè)備處理進(jìn)程,而只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊),供用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。6.4.2設(shè)備驅(qū)動(dòng)程序的處理過(guò)程將抽象要求轉(zhuǎn)換為具體要求。設(shè)置控制器中的寄存器。檢查I/O請(qǐng)求的合法性。若請(qǐng)求的設(shè)備不支持本次的I/O請(qǐng)求,認(rèn)為是非法操作。讀出和檢查設(shè)備的狀態(tài)。檢查設(shè)備是否空閑或就緒。傳送必要的參數(shù)。如數(shù)據(jù)量、起始地址等設(shè)置工作方式。對(duì)于有多種工作方式的設(shè)備進(jìn)行設(shè)置啟動(dòng)I/O設(shè)備。驅(qū)動(dòng)進(jìn)程將自己阻塞起來(lái),直到中斷到來(lái)時(shí)將其喚醒6.4.3對(duì)I/O設(shè)備的控制方式使用輪詢的可編程I/O方式使用中斷的可編程I/O方式直接存儲(chǔ)器訪問方式I/O通道控制方式1.使用輪詢的可編程I/O方式CPU通過(guò)I/O測(cè)試指令測(cè)試設(shè)備接口中的狀態(tài)位:“忙”,則一直測(cè)試;“閑”,進(jìn)行數(shù)據(jù)傳送,每次傳送一個(gè)字符又稱為忙—等方式。1.使用輪詢的可編程I/O方式①不斷地讀取忙位,直到該位被清除(此過(guò)程稱為輪詢,亦稱忙等待-busywaiting)②a主機(jī)設(shè)置命令寄存器中的寫位②b主機(jī)寫入一個(gè)字節(jié)③主機(jī)設(shè)置命令就緒位④當(dāng)控制器注意到命令就緒位已被設(shè)置,則設(shè)置忙位。⑤a控制器讀取命令寄存器,并看到寫入命令⑤b控制器讀取讀取一個(gè)字節(jié)⑤c控制器向設(shè)備執(zhí)行I/O操作⑥a控制器清除命令就緒位⑥b清除狀態(tài)寄存器的故障位,清除忙位1.使用輪詢的可編程I/O方式適用場(chǎng)合沒有中斷機(jī)構(gòu)的微機(jī)系統(tǒng)存在的問題CPU的絕大部分時(shí)間都處于等待I/O設(shè)備完成數(shù)據(jù)I/O的循環(huán)測(cè)試中外設(shè)不能合理使用,也無(wú)法支持多道程序2.使用中斷的可編程I/O方式中斷驅(qū)動(dòng)(InterruptDriven)方式,即當(dāng)某進(jìn)程要啟動(dòng)某個(gè)I/O設(shè)備工作時(shí),便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來(lái)的任務(wù)。設(shè)備控制器按命令要求去控制指定的I/O設(shè)備,完成后,通過(guò)中斷向CPU發(fā)送一中斷信號(hào)。在I/O設(shè)備輸入輸出數(shù)據(jù)的過(guò)程中,無(wú)須CPU干預(yù),每次傳送一個(gè)字符。2.使用中斷的可編程I/O方式2.使用中斷的可編程I/O方式適用場(chǎng)合適用于低速設(shè)備I/O,并可配合DMA和通道方式實(shí)現(xiàn)I/O。存在的問題在每個(gè)數(shù)據(jù)傳送完后中斷CPU。3.直接存儲(chǔ)器訪問方式特點(diǎn)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí)才需CPU干預(yù)除了具有中斷機(jī)構(gòu)外,還增加了DMA控制器數(shù)據(jù)傳送方向、存放數(shù)據(jù)的內(nèi)存地址及傳送數(shù)據(jù)長(zhǎng)度需CPU控制每個(gè)設(shè)備需配置一個(gè)DMA控制器3.直接存儲(chǔ)器訪問方式DMA控制器的組成接收CPU發(fā)送的I/O命令有關(guān)控制信息設(shè)備狀態(tài)輸入:數(shù)據(jù)存放到內(nèi)存的起始目標(biāo)地址輸出:存放數(shù)據(jù)由內(nèi)存到設(shè)備的內(nèi)存源地址暫存從設(shè)備到內(nèi)存/內(nèi)存到設(shè)備的數(shù)據(jù)存放本次CPU要讀或?qū)懙淖郑ü?jié))數(shù)DMA傳輸?shù)牧鶄€(gè)步驟①設(shè)備驅(qū)動(dòng)程序被告知傳輸磁盤數(shù)據(jù)到內(nèi)存地址X的緩沖區(qū)②驅(qū)動(dòng)程序通知設(shè)備控制器從磁盤傳輸C個(gè)字節(jié)數(shù)據(jù)到內(nèi)存地址X的緩沖區(qū)③磁盤控制器初始化DMA傳輸④磁盤控制器向DMA控制器發(fā)送每個(gè)字節(jié)⑤DMA控制器向緩沖區(qū)傳輸字節(jié),增加內(nèi)存地址并減少C,直到C=0⑥當(dāng)C=0時(shí),DMA直到CPU,通知傳輸完畢3.直接存儲(chǔ)器訪問方式適用場(chǎng)合適用于高速外設(shè)I/O,一次可以在外設(shè)與內(nèi)存之間傳輸一個(gè)或多個(gè)數(shù)據(jù)快,傳輸完畢后才需CPU干預(yù)。存在的問題傳送方向、始址、長(zhǎng)度等由CPU控制,一個(gè)設(shè)備一個(gè)DMA,成本高。3.直接存儲(chǔ)器訪問方式DMA與中斷方式的主要區(qū)別中斷方式在每個(gè)數(shù)據(jù)傳送完后中斷CPU,DMA方式則是在所要求傳送的一批數(shù)據(jù)全部傳送完時(shí)中斷CPU。中斷方式的數(shù)據(jù)傳送時(shí)在中斷處理時(shí)由CPU控制完成的,而DMA則是在DMA控制下完成的4.I/O通道控制方式I/O通道控制方式的引入

以內(nèi)存為中心的數(shù)據(jù)交換方式進(jìn)一步減少了CPU的干預(yù),把對(duì)一個(gè)數(shù)據(jù)塊的讀(或?qū)?為單位的干預(yù),減少為對(duì)一組數(shù)據(jù)塊的讀(或?qū)?及有關(guān)的控制和管理為單位的干預(yù)一個(gè)通道控制多臺(tái)設(shè)備CPU僅在I/O操作的開始和結(jié)束時(shí)花費(fèi)少量時(shí)間處理與I/O有關(guān)的工作可實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行操作,從而更有效地提高整個(gè)系統(tǒng)的資源利用率4.I/O通道控制方式通道程序指令格式:操作碼,P,R,計(jì)數(shù),內(nèi)存地址操作碼規(guī)定指令所執(zhí)行的操作,如讀、寫、控制等內(nèi)存地址標(biāo)明字符送入內(nèi)存或從內(nèi)存取出的內(nèi)存首址計(jì)數(shù)本條指令所要讀/寫的字節(jié)數(shù)通道程序結(jié)束位標(biāo)識(shí)通道程序是否結(jié)束,P=1表示結(jié)束記錄結(jié)束標(biāo)志R=0,表示本指令與下一指令處理同一個(gè)記錄R=1,表示處理某記錄的最后一條指令4.I/O通道控制方式72025011WRITE185025000WRITE200030010WRITE58306010WRITE103414000WRITE8138000WRITE內(nèi)存地址計(jì)數(shù)RP操作碼CPU與通道之間的通信4.I/O通道控制方式適用場(chǎng)合系統(tǒng)預(yù)先要將I/O的過(guò)程編制為通道程序,置于內(nèi)存的特定位置,然后啟動(dòng)通道。由通道負(fù)責(zé)執(zhí)行通道程序?qū)ν庠O(shè)進(jìn)行I/O控制,CPU轉(zhuǎn)其他程序運(yùn)行。存在的問題需要通道硬件,成本高。6.5與設(shè)備無(wú)關(guān)的I/O軟件6.5.1與設(shè)備無(wú)關(guān)軟件的基本概念6.5.2與設(shè)備無(wú)關(guān)的軟件6.5.3設(shè)備分配6.5.4邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)6.5.1與設(shè)備無(wú)關(guān)軟件的基本概念物理設(shè)備名采用單通路I/O系統(tǒng)結(jié)構(gòu),容易產(chǎn)生瓶頸邏輯設(shè)備名問題解決方法進(jìn)程用物理設(shè)備名提出I/O請(qǐng)求邏輯設(shè)備表進(jìn)程以邏輯設(shè)備名提出I/O請(qǐng)求系統(tǒng)實(shí)際執(zhí)行時(shí),用物理設(shè)備名6.5.2與設(shè)備無(wú)關(guān)的軟件設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口緩沖區(qū)管理差錯(cuò)控制對(duì)獨(dú)立設(shè)備的分配與回收獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊①設(shè)備驅(qū)動(dòng)程序與OS有相同(相近)接口②將抽象的設(shè)備名映射到適當(dāng)?shù)尿?qū)動(dòng)程序?qū)ψ址O(shè)備和塊設(shè)備的緩沖區(qū)進(jìn)行有效的管理,以提高I/O的效率①暫時(shí)性錯(cuò)誤②持久性錯(cuò)誤①獨(dú)立設(shè)備②共享設(shè)備不同設(shè)備數(shù)據(jù)交換單位不同6.5.3設(shè)備分配相關(guān)數(shù)據(jù)結(jié)構(gòu)設(shè)備控制表DCT設(shè)備類型:type設(shè)備標(biāo)識(shí)符:deviceid設(shè)備狀態(tài):等待/不等待忙/閑指向控制器表COCT的指針重復(fù)執(zhí)行次數(shù)或時(shí)間設(shè)備隊(duì)列的隊(duì)首指針DCT1DCT2DCTn設(shè)備控制表集合每個(gè)設(shè)備一張,記錄本設(shè)備的情況若與其相連的控制器或通道忙,則等待標(biāo)志置1正在使用,則忙標(biāo)志置1;請(qǐng)求本設(shè)備未滿足的進(jìn)程PCB隊(duì)列6.5.3設(shè)備分配相關(guān)數(shù)據(jù)結(jié)構(gòu)控制器控制表、通道控制表控制器標(biāo)識(shí)符:controllerid控制器狀態(tài):忙/閑與控制器連接的通道表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)尾指針通道標(biāo)識(shí)符:channelid通道狀態(tài):忙/閑與通道連接的控制器表首址通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)尾指針(a)控制器表COCT(b)通道表CHCT一個(gè)控制器一張一個(gè)通道一張6.5.3設(shè)備分配相關(guān)數(shù)據(jù)結(jié)構(gòu)系統(tǒng)設(shè)備表SDT系統(tǒng)設(shè)備表SDT表目1…表目i…設(shè)備類設(shè)備標(biāo)識(shí)符DCT驅(qū)動(dòng)程序入口整個(gè)系統(tǒng)一張,記錄已被連接到系統(tǒng)中的所有物理設(shè)備的情況6.5.3設(shè)備分配應(yīng)考慮的因素設(shè)備固有屬性獨(dú)占性一段時(shí)間內(nèi),只允許一個(gè)進(jìn)程獨(dú)占大多數(shù)低度速I/O設(shè)備都屬于獨(dú)享設(shè)備缺點(diǎn):設(shè)備得不到充分利用,可能產(chǎn)生死鎖共享性允許多個(gè)進(jìn)程同時(shí)共享如磁盤、磁鼓之類的外存儲(chǔ)器,既具有很能大的存儲(chǔ)容量,其定位操作的時(shí)間又短可虛擬性獨(dú)占設(shè)備經(jīng)某種技術(shù)處理,改造成虛擬設(shè)備。如采用SPOOLing技術(shù),變一臺(tái)為“多臺(tái)設(shè)備”6.5.3設(shè)備分配應(yīng)考慮的因素設(shè)備分配算法先來(lái)先服務(wù)優(yōu)先級(jí)高者優(yōu)先設(shè)備分配中的安全性安全分配方式每當(dāng)進(jìn)程發(fā)出I/O請(qǐng)求后,便進(jìn)入阻塞狀態(tài),I/O操作完成后喚醒優(yōu)點(diǎn):摒棄了“請(qǐng)求和保持”條件,不會(huì)產(chǎn)生死鎖不安全分配方式

進(jìn)程發(fā)出I/O請(qǐng)求后仍繼續(xù)運(yùn)行,繼續(xù)申請(qǐng)I/O設(shè)備優(yōu)點(diǎn):可操作多個(gè)設(shè)備,推進(jìn)迅速缺點(diǎn):推進(jìn)速度緩慢缺點(diǎn):可能產(chǎn)生死鎖6.5.3設(shè)備分配獨(dú)占設(shè)備的分配程序基本的設(shè)備分配程序分配設(shè)備、分配控制器、分配通道6.5.3設(shè)備分配獨(dú)占設(shè)備的分配程序分配設(shè)備1分配控制器1分配通道1申請(qǐng)?jiān)O(shè)備1按設(shè)備物理名查SDT由COCT查CHCT分配通道是由DCT查COCT分配控制器根據(jù)安全策略進(jìn)行分配否設(shè)備忙?由SDT查設(shè)備DCT6.5.3設(shè)備分配獨(dú)占設(shè)備的分配程序基本分配程序的問題進(jìn)程以物理設(shè)備名提出I/O請(qǐng)求采用單通路I/O系統(tǒng)結(jié)構(gòu),容易產(chǎn)生瓶頸改進(jìn)增加設(shè)備獨(dú)立性考慮多通路情況為進(jìn)程P分配所需的I/O設(shè)備從SDT表查該類設(shè)備的控制表DCT不忙分配此控制器給進(jìn)程P不忙分配此通道給進(jìn)程P啟動(dòng)I/O,進(jìn)行具體的I/O操作不安全進(jìn)程P的PCB放入此設(shè)備的等待隊(duì)列YN進(jìn)程P的PCB放入此控制器的等待隊(duì)列YNNN多通路設(shè)備分配流程示意圖由DCT檢查該設(shè)備忙否?不忙檢查分配此設(shè)備的安全性?忙最后一個(gè)DCT?忙最后一個(gè)COCT?Y最后一個(gè)DCT?此設(shè)備連接的COCT忙否?此控制器連接的CHCT忙否?進(jìn)程P的PCB放入此通道的等待隊(duì)列YY最后一個(gè)COCT?忙最后一個(gè)CHCT?N分配此設(shè)備給進(jìn)程P安全6.5.4邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)邏輯設(shè)備表(LUT,LogicalUnitTable)每個(gè)表目中包含:邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址。6.5.4邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)邏輯設(shè)備表的設(shè)置問題整個(gè)系統(tǒng)中只設(shè)置一張LUT。所有用戶都使用不相同的邏輯設(shè)備名。在多用戶環(huán)境下這通常是難以做到的,主要用于單用戶系統(tǒng)中。每個(gè)用戶設(shè)置一張LUT。用戶登錄時(shí),為該用戶建立一個(gè)進(jìn)程,同時(shí)建立一張LUT,并將該表放入進(jìn)程的PCB中。在多用戶系統(tǒng)中,通常都配置系統(tǒng)設(shè)備表。6.6用戶層的I/O軟件6.6.1系統(tǒng)調(diào)用和庫(kù)函數(shù)6.6.2假脫機(jī)(Spooling)系統(tǒng)6.6.1系統(tǒng)調(diào)用和庫(kù)函數(shù)系統(tǒng)調(diào)用提供進(jìn)程與操作系統(tǒng)之間的接口通常以匯編語(yǔ)言指令的形式提供;有些語(yǔ)言(如C,C++和Perl)已經(jīng)取代了匯編語(yǔ)言而直接用于系統(tǒng)編程。每個(gè)系統(tǒng)調(diào)用關(guān)聯(lián)一個(gè)數(shù)(系統(tǒng)調(diào)用表編號(hào));查詢系統(tǒng)調(diào)用表,以定位預(yù)定函數(shù);調(diào)用預(yù)定函數(shù)返回狀態(tài)和任意返回值;系統(tǒng)調(diào)用的實(shí)現(xiàn)對(duì)調(diào)用者是透明的。6.6.1系統(tǒng)調(diào)用和庫(kù)函數(shù)系統(tǒng)調(diào)用6.6.1系統(tǒng)調(diào)用和庫(kù)函數(shù)庫(kù)函數(shù)在許多現(xiàn)代操作系統(tǒng)中,系統(tǒng)調(diào)用本身已經(jīng)采用C語(yǔ)言編寫,并以函數(shù)形式提供,所以在使用C語(yǔ)言編寫的用戶程序中,可以直接使用這些系統(tǒng)調(diào)用。6.6.2假脫機(jī)(SPOOLing)系統(tǒng)SPOOLing技術(shù)為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾。在多道程序環(huán)境下,其中的一道程序模擬脫機(jī)輸入輸出時(shí)的外圍控制機(jī)功能。在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、輸出功能,外圍操作與CPU對(duì)數(shù)據(jù)的處理同時(shí)進(jìn)行。在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作稱為SPOOLing(SimultaneausPeriphernalOperatingOn-Line),或稱為假脫機(jī)操作。6.6.2假脫機(jī)(SPOOLing)系統(tǒng)SPOOLing系統(tǒng)的組成內(nèi)存內(nèi)存請(qǐng)求輸入數(shù)據(jù)啟動(dòng)請(qǐng)求輸出數(shù)據(jù)6.6.2假脫機(jī)(SPOOLing)系統(tǒng)SPOOLing系統(tǒng)特點(diǎn)提高了I/O的速度將獨(dú)占設(shè)備改造為共享設(shè)備實(shí)現(xiàn)了虛擬設(shè)備功能6.6.2假脫機(jī)(SPOOLing)系統(tǒng)例:假脫機(jī)打印機(jī)系統(tǒng)獲得空盤塊掛入滿盤塊隊(duì)列6.6.2假脫機(jī)(SPOOLing)系統(tǒng)SPOOLing技術(shù)仍被廣泛使用網(wǎng)絡(luò)文件傳送先把文件送到網(wǎng)絡(luò)SPOOLing目錄,然后網(wǎng)絡(luò)值班進(jìn)程把它取出并傳遞到目標(biāo)地址Internet電子郵件系統(tǒng)為了寄郵,調(diào)用電子郵件程序待發(fā)信存在SPOOLing中供以后傳輸注意:SPOOLing只提高設(shè)備利用率,縮短用戶程序執(zhí)行時(shí)間,并不提高CPU利用率6.7緩沖區(qū)管理6.7.1緩沖的引入6.7.2單緩沖區(qū)和雙緩沖區(qū)6.7.3環(huán)形緩沖區(qū)6.7.4緩沖池(BufferPool)6.7.1緩沖的引入緩和CPU與I/O設(shè)備間速度不匹配的矛盾。數(shù)據(jù)到達(dá)速率與其離去速率不同減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷響應(yīng)時(shí)間的限制。1位緩沖9.6Kb/s(a)中斷CPU的頻率為,每100s中斷一次CPUCPU必須在100s內(nèi)響應(yīng),否則數(shù)據(jù)會(huì)被沖掉8位緩沖寄存器送內(nèi)存9.6Kb/s(b)中斷CPU的頻率降低為9.6Kb/86.7.1緩沖的引入解決數(shù)據(jù)粒度不匹配問題提高CPU和I/O設(shè)備之間的并行性提高系統(tǒng)的吞吐量和設(shè)備的利用率8位緩沖寄存器9.6Kb/s送內(nèi)存(c)每800s中斷一次CPU6.7.2單緩沖區(qū)和雙緩沖區(qū)單緩沖區(qū)(SingleBuffer)輸入設(shè)備,緩沖區(qū)均空閑C>T時(shí),輸入先結(jié)束;反之,計(jì)算先結(jié)束。因此,每塊數(shù)據(jù)的處理時(shí)間為:max{C,T}+M6.7.2單緩沖區(qū)和雙緩沖區(qū)雙緩沖區(qū)(DoubleBuffer)輸入設(shè)備,緩沖區(qū)2均空閑C>T時(shí),輸入先結(jié)束;反之,計(jì)算先結(jié)束。因此,每塊數(shù)據(jù)的處理時(shí)間約為:max{C,T}例,兩臺(tái)機(jī)器間通信

只能實(shí)現(xiàn)單向的數(shù)據(jù)傳輸計(jì)算進(jìn)程正在使用的緩沖區(qū)計(jì)算進(jìn)程下一可用緩沖區(qū)輸入進(jìn)程下一可用空緩沖區(qū)6.7.3環(huán)形緩沖區(qū)環(huán)形緩沖區(qū)的引入當(dāng)輸入與輸出速度基本匹配時(shí),雙緩沖能獲得較好效果;當(dāng)速度相差較大時(shí),需要引入多個(gè)(大小相等)緩沖,組織成循環(huán)緩沖的形式環(huán)形緩沖區(qū)的組成NextiNextgCurrent6.7.3環(huán)形緩沖區(qū)6.7.3環(huán)形緩沖區(qū)環(huán)形緩沖區(qū)的使用Getbuf過(guò)程為計(jì)算進(jìn)程和輸入進(jìn)程提供緩沖區(qū),并移動(dòng)指針Releasebuf過(guò)程當(dāng)計(jì)算進(jìn)程或輸入使用完緩沖區(qū)后,調(diào)用過(guò)程將緩沖區(qū)釋放進(jìn)程同步——輸入、計(jì)算進(jìn)程并行Nexti指針追趕上Nextg指針輸入進(jìn)程速度大于計(jì)算進(jìn)程,全部空緩沖區(qū)已滿,無(wú)可用緩沖區(qū),輸入進(jìn)程阻塞(系統(tǒng)受計(jì)算限制)Nextg指針追趕上Nexti指針計(jì)算進(jìn)程速度大于輸入進(jìn)程,全部緩沖區(qū)空,無(wú)可用數(shù)據(jù),計(jì)算進(jìn)程阻塞(系統(tǒng)受I/O限制)6.7.4緩沖池(BufferPool)緩沖池的組成專用緩沖的利用率不高,與環(huán)形緩沖不同

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論