版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)的設(shè)備管理1目標(biāo)和功能I/O管理是操作系統(tǒng)的主要功能之一,負(fù)責(zé)管理所有I/O設(shè)備。計(jì)算機(jī)系統(tǒng)中存在著大量的I/O設(shè)備,其性能和應(yīng)用特點(diǎn)可能完全不同,所以要建立一個(gè)通用的、一致的設(shè)備訪問接口,使用戶和應(yīng)用程序開發(fā)人員能夠方便地使用I/O設(shè)備,而無(wú)須關(guān)心每種設(shè)備各自的特性。I/O管理是管理I/O設(shè)備,控制I/O操作26.1I/O硬件組成6.2I/O軟件的組成6.3設(shè)備分配6.4磁盤管理36.1I/O硬件組成6.1.1I/O設(shè)備按信息交換的單位分類:塊設(shè)備:把信息存儲(chǔ)在固定大小的塊中,每個(gè)塊有自己的地址,可獨(dú)立地讀寫。通常塊的大小為512B~32KB。如磁盤、磁帶、光盤和電子盤。字符設(shè)備:以字符為單位發(fā)送和接收字符流。是不可尋址的。鍵盤、鼠標(biāo)、掃描器、打印機(jī)、繪圖儀、網(wǎng)絡(luò)接口等。時(shí)鐘既不是塊可尋址的,也不產(chǎn)生或接收字符流,只是按預(yù)先規(guī)定好的時(shí)間間隔產(chǎn)生中斷。4I/O設(shè)備一般由機(jī)械和電子兩部分組成。機(jī)械部分是設(shè)備本身。電子部分叫做設(shè)備控制器。設(shè)備控制器處于CPU和I/O設(shè)備之間,接收從CPU發(fā)來(lái)的命令,控制I/O設(shè)備工作。很多控制器可以連接兩個(gè)、四個(gè),甚至八個(gè)相同的設(shè)備。控制器與設(shè)備之間的接口是一個(gè)標(biāo)準(zhǔn)接口,符合國(guó)際標(biāo)準(zhǔn)。6.1.2設(shè)備控制器5接收OS的命令,控制設(shè)備實(shí)現(xiàn)指定的功能。每個(gè)控制器有幾個(gè)寄存器,用來(lái)與CPU通信,即存放設(shè)備驅(qū)動(dòng)程序向設(shè)備發(fā)送的命令和參數(shù)??刂萍拇嫫鳎罕恢鳈C(jī)用來(lái)向設(shè)備發(fā)送命令。狀態(tài)寄存器:包含主機(jī)可讀取的狀態(tài)信息。數(shù)據(jù)緩沖寄存器每個(gè)寄存器被分配一個(gè)端口號(hào)。處理機(jī)通過(guò)I/O端口地址找到對(duì)應(yīng)的I/O部件和設(shè)備寄存器,以實(shí)現(xiàn)對(duì)設(shè)備的控制和數(shù)據(jù)傳輸??刂破鞯淖饔?控制器的作用除了幾個(gè)寄存器外,許多設(shè)備控制器還有一個(gè)操作系統(tǒng)可以讀寫的數(shù)據(jù)緩沖區(qū)。如在屏幕上顯示像素的常規(guī)方法是使用一個(gè)視頻RAM,該RAM基本上只是一個(gè)數(shù)據(jù)緩沖區(qū)。磁盤控制器:從磁盤驅(qū)動(dòng)器出來(lái)的是一連串的位流,控制器把串行的位流組裝為字節(jié),存入控制器內(nèi)部的數(shù)據(jù)緩沖區(qū)中,形成以字節(jié)為單位的塊。對(duì)塊驗(yàn)證后,復(fù)制到主存。7內(nèi)存映射I/O單獨(dú)的I/O和內(nèi)存空間
INR0,4 MOVR0,4
前者讀取I/O端口4的內(nèi)容并將其存入R0,后者讀取內(nèi)存字4的內(nèi)容并將其存入R0。內(nèi)存I/O端口兩個(gè)地址空間8內(nèi)存映射I/O內(nèi)存映射I/O:將所有設(shè)備控制器寄存器映射到內(nèi)存空間。每個(gè)控制器寄存器被分配唯一的一個(gè)內(nèi)存地址。通常分配給控制器寄存器的地址位于地址空間的頂端。優(yōu)點(diǎn):對(duì)內(nèi)存的操作指令都可用于對(duì)I/O端口的操作,不需要專門的I/O指令。I/O設(shè)備驅(qū)動(dòng)程序可以完全用C語(yǔ)言編寫。如UNIX。內(nèi)存一個(gè)地址空間9內(nèi)存映射I/O--混合方案內(nèi)存映射I/O的數(shù)據(jù)緩沖區(qū),控制器寄存器則具有單獨(dú)的I/O端口。Pentium處理器使用的就是這一體系結(jié)構(gòu)。內(nèi)存I/O端口兩個(gè)地址空間10計(jì)算機(jī)系統(tǒng)對(duì)I/O設(shè)備的4種控制方式程序查詢方式(輪詢(polling))程序中斷方式直接存儲(chǔ)器訪問(DMA)方式通道控制方式11程序查詢方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/O控制器中讀入字節(jié)向存儲(chǔ)器中寫字節(jié)CPUI/OI/OCPU未就緒出錯(cuò)就緒I/OCPUCPU內(nèi)存?zhèn)魉屯瓿蓹z查狀態(tài)是,停止設(shè)備未完從外部設(shè)備讀取一塊數(shù)據(jù)到存儲(chǔ)器,每次讀幾個(gè)字節(jié)的數(shù)據(jù)。CPU忙等串行工作122.程序中斷方式CPU/設(shè)備并行工作向設(shè)備控制器發(fā)寫命令CPU轉(zhuǎn)去執(zhí)行其它程序?qū)⒖刂苽鬟f給中斷服務(wù)例程無(wú)重試或故障終止中斷服務(wù)例程檢查本次傳輸是否有錯(cuò)傳輸有錯(cuò)?中斷返回,繼續(xù)執(zhí)行被中斷的進(jìn)程CPU響應(yīng)中斷傳輸完成?無(wú)完CPU工作情況設(shè)備完成數(shù)據(jù)傳輸或出錯(cuò),產(chǎn)生中斷設(shè)備驅(qū)動(dòng)程序啟動(dòng)設(shè)備工作I/O設(shè)備工作情況有13支持大量數(shù)據(jù)傳輸?shù)膲K設(shè)備,其控制器支持直接存儲(chǔ)器存取(DMA,DirectMemoryAccess)。通常,CPU控制地址總線,進(jìn)行與主存儲(chǔ)器的數(shù)據(jù)交換。允許DMA控制器接管地址總線的控制權(quán),直接控制與主存的數(shù)據(jù)交換。3.直接存儲(chǔ)器訪問(DMA)14整塊數(shù)據(jù)的傳輸是在控制器的控制下完成的。僅在開始和結(jié)束時(shí)才需CPU干預(yù)。向磁盤O控制器發(fā)讀塊命令讀DMA控制器的狀態(tài)下條指令CPUDMACPU做其它事中斷DMACPUDMA方式15數(shù)據(jù)緩沖寄存器主存地址寄存器MAR傳送字節(jié)個(gè)數(shù)計(jì)數(shù)器DC控制/狀態(tài)寄存器數(shù)據(jù)總線地址總線DMA控制器主存CPU數(shù)據(jù)緩沖存儲(chǔ)區(qū)磁盤控制器獨(dú)立地進(jìn)行DMA傳送控制總線16DMA工作過(guò)程:設(shè)置MAR和DC初值啟動(dòng)DMA傳送命令挪用CPU工作周期傳送數(shù)據(jù)主存地址增1數(shù)據(jù)計(jì)數(shù)器減1DC=0?請(qǐng)求中斷NY每當(dāng)磁盤把一塊數(shù)據(jù)讀入控制器的數(shù)據(jù)緩沖區(qū)時(shí),檢驗(yàn)校驗(yàn)和。DMA控制器取代CPU,接管地址總線的控制權(quán),直接控制與主存的數(shù)據(jù)交換。使CPU訪問總線時(shí)速度會(huì)變慢。17與DMA方式相比,通道所需的CPU干預(yù)更少,且可以做到一個(gè)通道控制多臺(tái)設(shè)備,進(jìn)一步減輕了CPU的負(fù)擔(dān)。
通道是一種專用的I/O處理機(jī)。通道有自己的指令系統(tǒng),若干條通道命令連接成通道程序。4.通道控制方式18CPU主存儲(chǔ)器磁盤控制器軟盤控制器磁帶控制器讀卡機(jī)磁盤控制器控制器控制器磁盤控制器打印機(jī)控制器終端數(shù)組多路通道選擇通道字節(jié)多路通道CPU、通道和I/O設(shè)備并行工作總線191.字節(jié)多路通道:以字節(jié)為單位傳輸信息,可以分時(shí)地執(zhí)行多個(gè)通道程序,一個(gè)通道程序?qū)?yīng)一臺(tái)設(shè)備。主要用來(lái)連接大量慢速設(shè)備。2.選擇通道:以成組方式工作,即每次傳送一批數(shù)據(jù),故傳送速度很高。在一段時(shí)間內(nèi)只能執(zhí)行一個(gè)通道程序,只允許一臺(tái)設(shè)備傳輸數(shù)據(jù)。可用于連接高速設(shè)備,如固定頭磁盤等。3.數(shù)組多路通道:結(jié)合了選擇通道傳送速度高和字節(jié)多路通道能夠分時(shí)的優(yōu)點(diǎn)。先為一臺(tái)設(shè)備執(zhí)行一條通道指令,自動(dòng)轉(zhuǎn)接,再為另一臺(tái)設(shè)備執(zhí)行一條通道指令。可連接多臺(tái)活動(dòng)頭磁盤機(jī)。通道的三種類型20工作過(guò)程:CPU向I/O通道發(fā)出一條I/O指令,給出所要執(zhí)行的通道程序的首地址和要訪問的I/O設(shè)備。通道接到CPU發(fā)來(lái)的指令,通過(guò)執(zhí)行通道程序便可完成CPU指定的I/O任務(wù)。完成任務(wù)后,通道與設(shè)備一起發(fā)出中斷請(qǐng)求信號(hào),請(qǐng)求CPU處理。216.2I/O軟件的組成I/O軟件的基本思想:按分層構(gòu)建,較低層的軟件為較高層的軟件服務(wù),使較高層軟件獨(dú)立于硬件,為用戶提供統(tǒng)一接口。22設(shè)備獨(dú)立性。用戶在編寫使用磁盤上文件的程序時(shí),無(wú)需為不同的設(shè)備類型而修改程序,就可以使用。用戶程序中給出的是一個(gè)邏輯設(shè)備名,由OS實(shí)現(xiàn)邏輯設(shè)備與物理設(shè)備的映射。設(shè)備的統(tǒng)一命名。與設(shè)備獨(dú)立性密切相關(guān)。一個(gè)設(shè)備的邏輯名字只應(yīng)是一個(gè)簡(jiǎn)單的字符串或一個(gè)整數(shù),如PRN,不依賴于具體的設(shè)備。6.2.1I/O軟件的目標(biāo)23出錯(cuò)處理。數(shù)據(jù)傳輸中的錯(cuò)誤應(yīng)盡可能地在接近硬件層上處理,可重試多次。僅當(dāng)?shù)蛯榆浖o(wú)能為力時(shí),才將錯(cuò)誤上交高層軟件處理。緩沖技術(shù)。其目的就是設(shè)法使數(shù)據(jù)的到達(dá)率和離去率相匹配,以提高系統(tǒng)的吞吐量。設(shè)備的分配。涉及到共享設(shè)備和獨(dú)占設(shè)備的分配問題。246.2.2I/O軟件的功能中斷處理程序設(shè)備驅(qū)動(dòng)程序獨(dú)立于設(shè)備的軟件用戶空間的I/O軟件I/O軟件的分層:在I/O軟件中,大部分軟件是與設(shè)備無(wú)關(guān)的。251.中斷處理程序每個(gè)進(jìn)程在啟動(dòng)一個(gè)I/O操作后阻塞起來(lái),I/O操作完成,控制器產(chǎn)生一個(gè)中斷。CPU響應(yīng)中斷,執(zhí)行中斷處理程序。檢查設(shè)備狀態(tài)。若是正常完成,就喚醒等待該I/O的進(jìn)程。然后檢查是否還有I/O請(qǐng)求,若有,就啟動(dòng)下一個(gè)請(qǐng)求。若傳輸出錯(cuò),再發(fā)啟動(dòng)傳輸命令,或向上層報(bào)告“設(shè)備錯(cuò)誤”的信息。26每個(gè)設(shè)備驅(qū)動(dòng)程序處理一種類型設(shè)備。由一些與設(shè)備密切相關(guān)的代碼組成。提供一些與文件類似的API:open,close,read,write,control等是OS中唯一知道設(shè)備控制器的配置情況,如設(shè)置有多少個(gè)寄存器以及這些寄存器作用的。2.設(shè)備驅(qū)動(dòng)程序通常包含三部分功能:①設(shè)備初始化。②啟動(dòng)設(shè)備進(jìn)行數(shù)據(jù)傳輸例程。③中斷處理例程:處理設(shè)備發(fā)出的各種中斷。27工作過(guò)程設(shè)備驅(qū)動(dòng)程序接收來(lái)自上層軟件的抽象請(qǐng)求,并執(zhí)行這個(gè)請(qǐng)求。若忙,則排到I/O請(qǐng)求隊(duì)列中。將請(qǐng)求轉(zhuǎn)換成應(yīng)向控制器發(fā)送的命令和設(shè)備的具體參數(shù)。通常,驅(qū)動(dòng)程序進(jìn)程等待命令完成,阻塞自己,直到中斷處理時(shí)將其喚醒。有時(shí)不必等待,如滾屏操作,把幾個(gè)字節(jié)寫到控制器中即可。檢查數(shù)據(jù)傳輸是否有錯(cuò);向上層傳送數(shù)據(jù)。繼續(xù)未完成的I/O請(qǐng)求。283.獨(dú)立于設(shè)備的軟件(1)基本任務(wù):實(shí)現(xiàn)所有設(shè)備都需要的公共功能,且向用戶級(jí)軟件提供一個(gè)統(tǒng)一接口。(2)設(shè)備命名。把設(shè)備的符號(hào)名映射到正確的設(shè)備驅(qū)動(dòng)上。UNIX,/dev/tty01
i節(jié)點(diǎn)主設(shè)備號(hào)(用來(lái)定位終端設(shè)備驅(qū)動(dòng)程序),次設(shè)備號(hào)(作為參數(shù)用來(lái)確定設(shè)備驅(qū)動(dòng)程序要讀/寫的具體終端)。29(3)設(shè)備保護(hù)。防止無(wú)權(quán)存取設(shè)備的用戶使用設(shè)備。UNIX的I/O設(shè)備作為文件用“rw”位進(jìn)行保護(hù)。禁止用戶進(jìn)程對(duì)I/O設(shè)備直接訪問,必須通過(guò)OS提供的系統(tǒng)調(diào)用命令進(jìn)行I/O操作。(4)提供與設(shè)備無(wú)關(guān)的塊尺寸。不同磁盤可以采用不同的扇區(qū)尺寸。應(yīng)向較高層的軟件掩蓋這一事實(shí)并提供大小統(tǒng)一的塊尺寸。較高層軟件只與抽象磁盤打交道,使用等長(zhǎng)的邏輯塊。30(5)緩沖技術(shù) 緩解CPU與I/O設(shè)備間速度不匹配的矛盾,減少對(duì)CPU的中斷次數(shù)。用戶進(jìn)程發(fā)出一個(gè)I/O請(qǐng)求時(shí),OS便在主存分配緩沖區(qū),緩存輸入或輸出的數(shù)據(jù)。以空間換取時(shí)間。單緩沖:OS為I/O請(qǐng)求分配一個(gè)緩沖區(qū)。雙緩沖:建立兩個(gè)緩沖區(qū),可以平滑I/O設(shè)備和進(jìn)程之間的數(shù)據(jù)流,改善系統(tǒng)效率。多緩沖和緩沖池:多進(jìn)程共享緩沖池。31高速緩存(補(bǔ))(cache)是可以保留數(shù)據(jù)拷貝的高速內(nèi)存。有時(shí)一塊內(nèi)存區(qū)域可以同時(shí)用于兩個(gè)目的。例如,為了有效調(diào)度磁盤I/O,在內(nèi)存開辟了緩沖區(qū)來(lái)保留磁盤數(shù)據(jù)。這些緩沖區(qū)也可以用作高速緩存,可被多個(gè)進(jìn)程共享。當(dāng)內(nèi)核收到I/O請(qǐng)求時(shí),會(huì)首先檢查高速緩存里是否有。32(6)負(fù)責(zé)設(shè)備分配靜態(tài)分配:進(jìn)程運(yùn)行前,將需要的設(shè)備全部分配給它。簡(jiǎn)單,不死鎖,但利用率低。動(dòng)態(tài)分配:在進(jìn)程運(yùn)行過(guò)程中,分配設(shè)備。設(shè)備利用率高,但容易引起死鎖。33獨(dú)占方式分配:對(duì)獨(dú)占型設(shè)備的分配。共享分配:對(duì)共享型設(shè)備的分配。磁盤。
虛擬設(shè)備。常用可共享的高速設(shè)備來(lái)模擬獨(dú)占的慢速設(shè)備。能有效提高獨(dú)占型設(shè)備的利用率。Spooling技術(shù)是實(shí)現(xiàn)虛擬設(shè)備的具體技術(shù)。它利用可共享磁盤的一部分空間,模擬獨(dú)占的輸入/輸出設(shè)備。以空間換時(shí)間。34假脫機(jī)輸出:以打印機(jī)為例 Spooling實(shí)際是一種緩沖技術(shù)。進(jìn)程要打印時(shí),系統(tǒng)并不為它分配打印機(jī),而是在磁盤上申請(qǐng)一個(gè)空閑區(qū),把待打印的數(shù)據(jù)緩沖到空閑區(qū),再把打印請(qǐng)求掛到打印隊(duì)列上。打印機(jī)空閑時(shí),從打印隊(duì)列上取出一個(gè)請(qǐng)求,再?gòu)拇疟P上的指定區(qū)域取出數(shù)據(jù),送打印機(jī)打印。這種技術(shù)又叫緩輸出技術(shù)。35(7)出錯(cuò)處理絕大多數(shù)錯(cuò)誤是與設(shè)備密切相關(guān)的,一般由設(shè)備驅(qū)動(dòng)程序來(lái)處理。處理設(shè)備驅(qū)動(dòng)程序處理不了的錯(cuò)誤(重試幾次操作后,仍有錯(cuò)誤)。將錯(cuò)誤信息報(bào)告調(diào)用者。36I/O軟件。(1)大部分都包含在操作系統(tǒng)中。(2)一小部分是由與用戶程序連接在一起的庫(kù)函數(shù)構(gòu)成的。[例]
用戶程序中的庫(kù)函數(shù):
count=read(fd,buffer,nbytes);程序運(yùn)行期間,庫(kù)函數(shù)read將與該程序連接在一起形成一個(gè)可執(zhí)行文件裝入主存。這些函數(shù)通常只是將系統(tǒng)調(diào)用時(shí)所需要的參數(shù)放在合適的位置,由其他的I/O函數(shù)實(shí)現(xiàn)真正的操作。如“Printf”將調(diào)用“write”系統(tǒng)調(diào)用。4.用戶空間的I/O軟件375.I/O系統(tǒng)的層次結(jié)構(gòu)用戶進(jìn)程獨(dú)立于設(shè)備的軟件設(shè)備驅(qū)動(dòng)程序中斷處理程序硬件I/O請(qǐng)求I/O完成后的回答38讀文件的I/O操作步驟用戶進(jìn)程發(fā)出一個(gè)讀文件的系統(tǒng)調(diào)用。設(shè)備獨(dú)立I/O軟件檢查參數(shù)的正確性。若正確,再檢查高速緩存中有無(wú)要讀的信息塊。若有,則從緩沖區(qū)直接讀到用戶區(qū)。若無(wú),轉(zhuǎn)3)執(zhí)行物理I/O。獨(dú)立于設(shè)備的I/O軟件將設(shè)備的邏輯名轉(zhuǎn)換成物理名,檢查設(shè)備操作權(quán)限。將I/O請(qǐng)求排隊(duì),阻塞用戶進(jìn)程且等待I/O完成。核心執(zhí)行設(shè)備驅(qū)動(dòng)程序,分配緩沖區(qū),準(zhǔn)備接收數(shù)據(jù),且向設(shè)備控制寄存器發(fā)啟動(dòng)讀命令。39設(shè)備控制器控制設(shè)備,執(zhí)行數(shù)據(jù)傳輸。當(dāng)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 肺結(jié)核試題及答案
- (護(hù)士)實(shí)踐能力模擬題及答案
- 育嬰培訓(xùn)考試題及答案
- 2026字節(jié)跳動(dòng)招聘真題及答案
- 初一人教版音標(biāo)試題及答案
- 中國(guó)華錄集團(tuán)有限公司2026屆校園招聘參考題庫(kù)必考題
- 云南省2026年面向華中農(nóng)業(yè)大學(xué)定向選調(diào)生招錄備考題庫(kù)必考題
- 北京市信息管理學(xué)校招聘(高中政治教師、計(jì)算機(jī)專業(yè)教師)備考題庫(kù)附答案
- 北川縣2025年機(jī)關(guān)事業(yè)單位縣內(nèi)公開考調(diào)工作人員(8人)考試備考題庫(kù)附答案
- 吉安市2025年工會(huì)社會(huì)工作者公開招聘【8人】參考題庫(kù)附答案
- 道路運(yùn)輸安全重大風(fēng)險(xiǎn)辨識(shí)分級(jí)管控清單
- 滲透現(xiàn)象課件
- 2025年國(guó)家電網(wǎng)內(nèi)蒙古東部電力高校畢業(yè)生招聘約226人(第二批)筆試參考題庫(kù)附帶答案詳解(3卷合一版)
- 收藏 各行業(yè)標(biāo)準(zhǔn)及其歸口的行業(yè)部門
- 基因組病相關(guān)妊娠并發(fā)癥的監(jiān)測(cè)方案
- MDT指導(dǎo)下IBD生物制劑的個(gè)體化給藥方案
- 導(dǎo)游畢業(yè)設(shè)計(jì)路線方案
- JJG 1148-2022 電動(dòng)汽車交流充電樁(試行)
- 2025年路由器市場(chǎng)調(diào)研:Mesh款需求與全屋覆蓋分析
- 周黑鴨加盟合同協(xié)議
- 外賬會(huì)計(jì)外賬協(xié)議書
評(píng)論
0/150
提交評(píng)論