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

下載本文檔

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

文檔簡介

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

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

I/O設(shè)備和設(shè)備控制器6.3中斷機構(gòu)和中斷處理程序6.4設(shè)備驅(qū)動程序6.5與設(shè)備無關(guān)的I/O軟件6.6用戶層的I/O軟件6.7緩沖區(qū)管理6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的組成直接用于I/O和存儲信息的設(shè)備相應(yīng)的設(shè)備控制器I/O通道(大、中型計算機)總線I/O系統(tǒng)的結(jié)構(gòu)微型機I/O系統(tǒng)主機I/O系統(tǒng)6.1I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)的結(jié)構(gòu)微型機I/O系統(tǒng)微型機比較簡單,多采用總線I/O系統(tǒng)結(jié)構(gòu)。CPU和內(nèi)存是直接連接到總線上的。I/O設(shè)備是通過設(shè)備控制器連接到總線上,CPU并不直接與I/O設(shè)備進行通信,而是與設(shè)備控制器進行通信,設(shè)備控制器是處理機和設(shè)備之間的接口。主機I/O系統(tǒng)在I/O系統(tǒng)中采用總線結(jié)構(gòu),而是增加一級I/O通道。其中,I/O系統(tǒng)共分為4級:最低級為I/O設(shè)備,次低級為設(shè)備控制器,次高級為I/O通道,最高級是計算機。因而也稱這樣的I/O系統(tǒng)結(jié)構(gòu)為四級結(jié)構(gòu)。6.1.1I/O系統(tǒng)的基本功能隱藏物理設(shè)備的細節(jié)與設(shè)備的無關(guān)性提高處理機和I/O設(shè)備的利用率對I/O設(shè)備進行控制確保對設(shè)備的正確性錯誤處理執(zhí)行I/O操作設(shè)置設(shè)備寄存器、檢查寄存器狀態(tài)映射、保護、分塊、緩沖、分配產(chǎn)生I/O請求、格式化I/O、Spooling6.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型實現(xiàn)與用戶交互的接口。用戶可直接調(diào)用在I/O操作有關(guān)的庫函數(shù),對設(shè)備進行操作。與硬件直接相關(guān),負責(zé)實現(xiàn)系統(tǒng)對設(shè)備發(fā)出的操作指令,驅(qū)動I/O設(shè)備工作。保存被中斷進程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進行處理,處理完后再恢復(fù)被中斷進程的現(xiàn)場后返回到被中斷進程。I/O軟件的層次式結(jié)構(gòu)用戶層軟件設(shè)備獨立性軟件設(shè)備驅(qū)動程序中斷處理程序硬件I/O請求I/O應(yīng)答實現(xiàn)與設(shè)備驅(qū)動器的統(tǒng)一接口、設(shè)備命名、設(shè)備的保護以及分配與釋放等,同時為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲空間。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)的底層,直接與硬件進行交互設(shè)備驅(qū)動程序進程與控制器之間的通信程序。功能:接收用戶的I/O請求命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求。設(shè)備獨立性軟件6.1.3I/O接口塊設(shè)備接口塊設(shè)備。數(shù)據(jù)的存取和傳輸都是以數(shù)據(jù)塊為單位的設(shè)備。基本特征是傳輸速率高、可尋址。磁盤設(shè)備的I/O常采用DMA方式。特點隱藏磁盤的二維結(jié)構(gòu);將抽象命令映射為低層操作。6.1.3I/O接口流設(shè)備接口字符設(shè)備。數(shù)據(jù)的存取和傳輸都是以字符為單位的設(shè)備?;咎卣魇莻鬏斔俾实?、不可尋址,常采用中斷驅(qū)動方式。get和put操作常采用順序存取方式,(用戶程序)獲取或輸出字符的方法是采用get和put操作。in-control指令包含了許多參數(shù),每個參數(shù)表示一個與具體設(shè)備相關(guān)的特定功能。6.1.3I/O接口網(wǎng)絡(luò)通信接口現(xiàn)代OS都提供了面向網(wǎng)絡(luò)的功能。還需要通過某種方式把計算機連接到網(wǎng)絡(luò)上。OS提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計算機能夠通過網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其他計算機通信或上網(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è)備每秒幾個字節(jié)至數(shù)百字節(jié)鍵盤、鼠標(biāo)、語音輸入輸出設(shè)備等中速設(shè)備每秒數(shù)千至數(shù)萬字節(jié)行式打印機、激光打印機等高速設(shè)備每秒數(shù)百K至數(shù)十M字節(jié)磁盤機、磁帶機、光盤機等6.2.1I/O設(shè)備I/O設(shè)備的類型按信息交換的單位分類塊設(shè)備(BlockDevice)信息的存取總是以數(shù)據(jù)塊為單位可尋址如,磁盤,盤塊的大小為512B~4KB字符設(shè)備(CharacterDevice)基本單位是字符不可尋址如,交互式終端、打印機6.2.1I/O設(shè)備I/O設(shè)備的類型按資源分配角度分類(共享屬性)獨占設(shè)備多數(shù)低速設(shè)備屬獨占設(shè)備,如打印機共享設(shè)備可供多個進程同時訪問,如磁盤虛擬設(shè)備通過虛擬技術(shù)將一臺獨占設(shè)備變換為若干個邏輯設(shè)備,供若干個進程同時使用6.2.1I/O設(shè)備I/O設(shè)備的類型按操作特性存儲設(shè)備存儲信息,如磁盤等I/O設(shè)備用來向CPU傳送信息或輸出加工處理后的信息,如顯示器、打印機6.2.1I/O設(shè)備設(shè)備與控制器之間的接口由外界輸入的信號經(jīng)轉(zhuǎn)換器轉(zhuǎn)換后送入緩沖器,數(shù)據(jù)達到一定的字符數(shù)后,再從緩沖器通過一組數(shù)據(jù)信號線送到控制器用于在設(shè)備和設(shè)備控制器之間傳送數(shù)據(jù)。從設(shè)備控制器經(jīng)過數(shù)據(jù)信號線傳送來的數(shù)據(jù)先暫存在緩沖器,經(jīng)轉(zhuǎn)換器經(jīng)過適當(dāng)轉(zhuǎn)換后,逐個字符輸出作為由設(shè)備控制器向I/O設(shè)備發(fā)送控制信號時的通路。規(guī)定設(shè)備要執(zhí)行的操作用于傳送指示設(shè)備當(dāng)前狀態(tài)的信號:正在讀、寫或完成接口6.2.2設(shè)備控制器CPU與I/O設(shè)備之間的接口接收CPU發(fā)來的命令,控制一個或多個I/O設(shè)備工作,以實現(xiàn)I/O設(shè)備和計算機之間的數(shù)據(jù)交換,減輕CPU的負擔(dān)可編址的設(shè)備分類控制字符設(shè)備控制塊設(shè)備6.2.2設(shè)備控制器基本功能接收和識別命令控制寄存器存放接受的命令和參數(shù),并對其譯碼數(shù)據(jù)交換實現(xiàn)CPU與控制器、控制器與設(shè)備之間的數(shù)據(jù)交換,需設(shè)置數(shù)據(jù)寄存器標(biāo)識和報告設(shè)備的狀態(tài):需設(shè)置狀態(tài)寄存器地址識別識別所控制的設(shè)備,需設(shè)置地址譯碼器數(shù)據(jù)緩沖:解決I/O設(shè)備速率低的問題差錯控制:對I/O設(shè)備發(fā)送的數(shù)據(jù)進行差錯檢測6.2.2設(shè)備控制器設(shè)備控制器的組成設(shè)備(輸入)或CPU(輸出)送來的數(shù)據(jù)CPU送來的控制信息或設(shè)備的狀態(tài)信息CPU發(fā)送啟動命令,同時,CPU發(fā)送地址,對地址譯碼,選擇相應(yīng)設(shè)備控制6.2.3內(nèi)存映像I/O驅(qū)動程序?qū)⒊橄驣/O命令轉(zhuǎn)換出一系列具體的命令、參數(shù)等數(shù)據(jù)裝入設(shè)備控制器的相應(yīng)寄存器,由控制器來執(zhí)行這些命令,具體實施對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之間時,被認為是內(nèi)存地址,否則就是設(shè)備控制器的寄存器地址。例,將CPU寄存器的內(nèi)容復(fù)制到控制器0的第一個寄存器opcode,指令是

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論