




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
操作系統(tǒng)的設(shè)備管理1操作系統(tǒng)的設(shè)備管理1目標和功能I/O管理是操作系統(tǒng)的主要功能之一,負責管理所有I/O設(shè)備。計算機系統(tǒng)中存在著大量的I/O設(shè)備,其性能和應(yīng)用特點可能完全不同,所以要建立一個通用的、一致的設(shè)備訪問接口,使用戶和應(yīng)用程序開發(fā)人員能夠方便地使用I/O設(shè)備,而無須關(guān)心每種設(shè)備各自的特性。I/O管理是管理I/O設(shè)備,控制I/O操作2目標和功能I/O管理是操作系統(tǒng)的主要功能之一,負責管理所有I6.1I/O硬件組成6.2I/O軟件的組成6.3設(shè)備分配6.4磁盤管理36.1I/O硬件組成36.1I/O硬件組成6.1.1I/O設(shè)備按信息交換的單位分類:塊設(shè)備:把信息存儲在固定大小的塊中,每個塊有自己的地址,可獨立地讀寫。通常塊的大小為512B~32KB。如磁盤、磁帶、光盤和電子盤。字符設(shè)備:以字符為單位發(fā)送和接收字符流。是不可尋址的。鍵盤、鼠標、掃描器、打印機、繪圖儀、網(wǎng)絡(luò)接口等。時鐘既不是塊可尋址的,也不產(chǎn)生或接收字符流,只是按預(yù)先規(guī)定好的時間間隔產(chǎn)生中斷。46.1I/O硬件組成6.1.1I/O設(shè)備時鐘既I/O設(shè)備一般由機械和電子兩部分組成。機械部分是設(shè)備本身。電子部分叫做設(shè)備控制器。設(shè)備控制器處于CPU和I/O設(shè)備之間,接收從CPU發(fā)來的命令,控制I/O設(shè)備工作。很多控制器可以連接兩個、四個,甚至八個相同的設(shè)備??刂破髋c設(shè)備之間的接口是一個標準接口,符合國際標準。6.1.2設(shè)備控制器5I/O設(shè)備一般由機械和電子兩部分組成。機械部分是設(shè)備本身。電接收OS的命令,控制設(shè)備實現(xiàn)指定的功能。每個控制器有幾個寄存器,用來與CPU通信,即存放設(shè)備驅(qū)動程序向設(shè)備發(fā)送的命令和參數(shù)??刂萍拇嫫鳎罕恢鳈C用來向設(shè)備發(fā)送命令。狀態(tài)寄存器:包含主機可讀取的狀態(tài)信息。數(shù)據(jù)緩沖寄存器每個寄存器被分配一個端口號。處理機通過I/O端口地址找到對應(yīng)的I/O部件和設(shè)備寄存器,以實現(xiàn)對設(shè)備的控制和數(shù)據(jù)傳輸。控制器的作用6接收OS的命令,控制設(shè)備實現(xiàn)指定的功能??刂破鞯淖饔?控制器的作用除了幾個寄存器外,許多設(shè)備控制器還有一個操作系統(tǒng)可以讀寫的數(shù)據(jù)緩沖區(qū)。如在屏幕上顯示像素的常規(guī)方法是使用一個視頻RAM,該RAM基本上只是一個數(shù)據(jù)緩沖區(qū)。磁盤控制器:從磁盤驅(qū)動器出來的是一連串的位流,控制器把串行的位流組裝為字節(jié),存入控制器內(nèi)部的數(shù)據(jù)緩沖區(qū)中,形成以字節(jié)為單位的塊。對塊驗證后,復(fù)制到主存。7控制器的作用除了幾個寄存器外,許多設(shè)備控制器還有一個操作系統(tǒng)內(nèi)存映射I/O單獨的I/O和內(nèi)存空間
INR0,4 MOVR0,4
前者讀取I/O端口4的內(nèi)容并將其存入R0,后者讀取內(nèi)存字4的內(nèi)容并將其存入R0。內(nèi)存I/O端口兩個地址空間8內(nèi)存映射I/O單獨的I/O和內(nèi)存空間內(nèi)存I/O端口兩個地址空內(nèi)存映射I/O內(nèi)存映射I/O:將所有設(shè)備控制器寄存器映射到內(nèi)存空間。每個控制器寄存器被分配唯一的一個內(nèi)存地址。通常分配給控制器寄存器的地址位于地址空間的頂端。優(yōu)點:對內(nèi)存的操作指令都可用于對I/O端口的操作,不需要專門的I/O指令。I/O設(shè)備驅(qū)動程序可以完全用C語言編寫。如UNIX。內(nèi)存一個地址空間9內(nèi)存映射I/O內(nèi)存映射I/O:將所有設(shè)備控制器寄存器映射到內(nèi)內(nèi)存映射I/O--混合方案內(nèi)存映射I/O的數(shù)據(jù)緩沖區(qū),控制器寄存器則具有單獨的I/O端口。Pentium處理器使用的就是這一體系結(jié)構(gòu)。內(nèi)存I/O端口兩個地址空間10內(nèi)存映射I/O--混合方案內(nèi)存映射I/O的數(shù)據(jù)緩沖區(qū),內(nèi)存I計算機系統(tǒng)對I/O設(shè)備的4種控制方式程序查詢方式(輪詢(polling))程序中斷方式直接存儲器訪問(DMA)方式通道控制方式11計算機系統(tǒng)對I/O設(shè)備的4種控制方式程序查詢方式(輪詢(po程序查詢方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/O控制器中讀入字節(jié)向存儲器中寫字節(jié)CPUI/OI/OCPU未就緒出錯就緒I/OCPUCPU內(nèi)存?zhèn)魉屯瓿蓹z查狀態(tài)是,停止設(shè)備未完從外部設(shè)備讀取一塊數(shù)據(jù)到存儲器,每次讀幾個字節(jié)的數(shù)據(jù)。CPU忙等串行工作12程序查詢方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/2.程序中斷方式CPU/設(shè)備并行工作向設(shè)備控制器發(fā)寫命令CPU轉(zhuǎn)去執(zhí)行其它程序?qū)⒖刂苽鬟f給中斷服務(wù)例程無重試或故障終止中斷服務(wù)例程檢查本次傳輸是否有錯傳輸有錯?中斷返回,繼續(xù)執(zhí)行被中斷的進程CPU響應(yīng)中斷傳輸完成?無完CPU工作情況設(shè)備完成數(shù)據(jù)傳輸或出錯,產(chǎn)生中斷設(shè)備驅(qū)動程序啟動設(shè)備工作I/O設(shè)備工作情況有132.程序中斷方式CPU/設(shè)備向設(shè)備控制器發(fā)寫命令CPU轉(zhuǎn)支持大量數(shù)據(jù)傳輸?shù)膲K設(shè)備,其控制器支持直接存儲器存?。―MA,DirectMemoryAccess)。通常,CPU控制地址總線,進行與主存儲器的數(shù)據(jù)交換。允許DMA控制器接管地址總線的控制權(quán),直接控制與主存的數(shù)據(jù)交換。3.直接存儲器訪問(DMA)14支持大量數(shù)據(jù)傳輸?shù)膲K設(shè)備,其控制器支持直接存儲器存?。―MA整塊數(shù)據(jù)的傳輸是在控制器的控制下完成的。僅在開始和結(jié)束時才需CPU干預(yù)。向磁盤O控制器發(fā)讀塊命令讀DMA控制器的狀態(tài)下條指令CPUDMACPU做其它事中斷DMACPUDMA方式15整塊數(shù)據(jù)的傳輸是在控制器的控制下完成的。僅在開始和結(jié)束時才需數(shù)據(jù)緩沖寄存器主存地址寄存器MAR傳送字節(jié)個數(shù)計數(shù)器DC控制/狀態(tài)寄存器數(shù)據(jù)總線地址總線DMA控制器主存CPU數(shù)據(jù)緩沖存儲區(qū)磁盤控制器獨立地進行DMA傳送控制總線16數(shù)據(jù)緩沖寄存器主存地址寄存器MAR傳送字節(jié)個數(shù)計數(shù)器DC控DMA工作過程:設(shè)置MAR和DC初值啟動DMA傳送命令挪用CPU工作周期傳送數(shù)據(jù)主存地址增1數(shù)據(jù)計數(shù)器減1DC=0?請求中斷NY每當磁盤把一塊數(shù)據(jù)讀入控制器的數(shù)據(jù)緩沖區(qū)時,檢驗校驗和。DMA控制器取代CPU,接管地址總線的控制權(quán),直接控制與主存的數(shù)據(jù)交換。使CPU訪問總線時速度會變慢。17DMA工作過程:設(shè)置MAR和DC初值啟動DMA傳送命令挪用C與DMA方式相比,通道所需的CPU干預(yù)更少,且可以做到一個通道控制多臺設(shè)備,進一步減輕了CPU的負擔。
通道是一種專用的I/O處理機。通道有自己的指令系統(tǒng),若干條通道命令連接成通道程序。4.通道控制方式18與DMA方式相比,通道所需的CPU干預(yù)更少,且可以做到一個CPU主存儲器磁盤控制器軟盤控制器磁帶控制器讀卡機磁盤控制器控制器控制器磁盤控制器打印機控制器終端數(shù)組多路通道選擇通道字節(jié)多路通道CPU、通道和I/O設(shè)備并行工作總線19CPU主存儲器磁盤控制器軟盤控制器磁帶控制器讀卡機磁盤控制器1.字節(jié)多路通道:以字節(jié)為單位傳輸信息,可以分時地執(zhí)行多個通道程序,一個通道程序?qū)?yīng)一臺設(shè)備。主要用來連接大量慢速設(shè)備。2.選擇通道:以成組方式工作,即每次傳送一批數(shù)據(jù),故傳送速度很高。在一段時間內(nèi)只能執(zhí)行一個通道程序,只允許一臺設(shè)備傳輸數(shù)據(jù)。可用于連接高速設(shè)備,如固定頭磁盤等。3.數(shù)組多路通道:結(jié)合了選擇通道傳送速度高和字節(jié)多路通道能夠分時的優(yōu)點。先為一臺設(shè)備執(zhí)行一條通道指令,自動轉(zhuǎn)接,再為另一臺設(shè)備執(zhí)行一條通道指令??蛇B接多臺活動頭磁盤機。通道的三種類型201.字節(jié)多路通道:以字節(jié)為單位傳輸信息,可以分時地執(zhí)行多工作過程:CPU向I/O通道發(fā)出一條I/O指令,給出所要執(zhí)行的通道程序的首地址和要訪問的I/O設(shè)備。通道接到CPU發(fā)來的指令,通過執(zhí)行通道程序便可完成CPU指定的I/O任務(wù)。完成任務(wù)后,通道與設(shè)備一起發(fā)出中斷請求信號,請求CPU處理。21工作過程:216.2I/O軟件的組成I/O軟件的基本思想:按分層構(gòu)建,較低層的軟件為較高層的軟件服務(wù),使較高層軟件獨立于硬件,為用戶提供統(tǒng)一接口。226.2I/O軟件的組成I/O軟件的基本思想:按分層構(gòu)建設(shè)備獨立性。用戶在編寫使用磁盤上文件的程序時,無需為不同的設(shè)備類型而修改程序,就可以使用。用戶程序中給出的是一個邏輯設(shè)備名,由OS實現(xiàn)邏輯設(shè)備與物理設(shè)備的映射。設(shè)備的統(tǒng)一命名。與設(shè)備獨立性密切相關(guān)。一個設(shè)備的邏輯名字只應(yīng)是一個簡單的字符串或一個整數(shù),如PRN,不依賴于具體的設(shè)備。6.2.1I/O軟件的目標23設(shè)備獨立性。用戶在編寫使用磁盤上文件的程序時,無需為不同的設(shè)出錯處理。數(shù)據(jù)傳輸中的錯誤應(yīng)盡可能地在接近硬件層上處理,可重試多次。僅當?shù)蛯榆浖o能為力時,才將錯誤上交高層軟件處理。緩沖技術(shù)。其目的就是設(shè)法使數(shù)據(jù)的到達率和離去率相匹配,以提高系統(tǒng)的吞吐量。設(shè)備的分配。涉及到共享設(shè)備和獨占設(shè)備的分配問題。24出錯處理。數(shù)據(jù)傳輸中的錯誤應(yīng)盡可能地在接近硬件層上處理,可重6.2.2I/O軟件的功能中斷處理程序設(shè)備驅(qū)動程序獨立于設(shè)備的軟件用戶空間的I/O軟件I/O軟件的分層:在I/O軟件中,大部分軟件是與設(shè)備無關(guān)的。256.2.2I/O軟件的功能中斷處理程序I/O軟件的分層1.中斷處理程序每個進程在啟動一個I/O操作后阻塞起來,I/O操作完成,控制器產(chǎn)生一個中斷。CPU響應(yīng)中斷,執(zhí)行中斷處理程序。檢查設(shè)備狀態(tài)。若是正常完成,就喚醒等待該I/O的進程。然后檢查是否還有I/O請求,若有,就啟動下一個請求。若傳輸出錯,再發(fā)啟動傳輸命令,或向上層報告“設(shè)備錯誤”的信息。261.中斷處理程序每個進程在啟動一個I/O操作后阻塞起來每個設(shè)備驅(qū)動程序處理一種類型設(shè)備。由一些與設(shè)備密切相關(guān)的代碼組成。提供一些與文件類似的API:open,close,read,write,control等是OS中唯一知道設(shè)備控制器的配置情況,如設(shè)置有多少個寄存器以及這些寄存器作用的。2.設(shè)備驅(qū)動程序通常包含三部分功能:①設(shè)備初始化。②啟動設(shè)備進行數(shù)據(jù)傳輸例程。③中斷處理例程:處理設(shè)備發(fā)出的各種中斷。27每個設(shè)備驅(qū)動程序處理一種類型設(shè)備。由一些與設(shè)備密切相關(guān)的代碼工作過程設(shè)備驅(qū)動程序接收來自上層軟件的抽象請求,并執(zhí)行這個請求。若忙,則排到I/O請求隊列中。將請求轉(zhuǎn)換成應(yīng)向控制器發(fā)送的命令和設(shè)備的具體參數(shù)。通常,驅(qū)動程序進程等待命令完成,阻塞自己,直到中斷處理時將其喚醒。有時不必等待,如滾屏操作,把幾個字節(jié)寫到控制器中即可。檢查數(shù)據(jù)傳輸是否有錯;向上層傳送數(shù)據(jù)。繼續(xù)未完成的I/O請求。28工作過程設(shè)備驅(qū)動程序接收來自上層軟件的抽象請求,并執(zhí)行這個請3.獨立于設(shè)備的軟件(1)基本任務(wù):實現(xiàn)所有設(shè)備都需要的公共功能,且向用戶級軟件提供一個統(tǒng)一接口。(2)設(shè)備命名。把設(shè)備的符號名映射到正確的設(shè)備驅(qū)動上。UNIX,/dev/tty01i節(jié)點主設(shè)備號(用來定位終端設(shè)備驅(qū)動程序),次設(shè)備號(作為參數(shù)用來確定設(shè)備驅(qū)動程序要讀/寫的具體終端)。293.獨立于設(shè)備的軟件(1)基本任務(wù):實現(xiàn)所有設(shè)備都需要的(3)設(shè)備保護。防止無權(quán)存取設(shè)備的用戶使用設(shè)備。UNIX的I/O設(shè)備作為文件用“rw”位進行保護。禁止用戶進程對I/O設(shè)備直接訪問,必須通過OS提供的系統(tǒng)調(diào)用命令進行I/O操作。(4)提供與設(shè)備無關(guān)的塊尺寸。不同磁盤可以采用不同的扇區(qū)尺寸。應(yīng)向較高層的軟件掩蓋這一事實并提供大小統(tǒng)一的塊尺寸。較高層軟件只與抽象磁盤打交道,使用等長的邏輯塊。30(3)設(shè)備保護。防止無權(quán)存取設(shè)備的用戶使用設(shè)備。UNIX的(5)緩沖技術(shù) 緩解CPU與I/O設(shè)備間速度不匹配的矛盾,減少對CPU的中斷次數(shù)。用戶進程發(fā)出一個I/O請求時,OS便在主存分配緩沖區(qū),緩存輸入或輸出的數(shù)據(jù)。以空間換取時間。單緩沖:OS為I/O請求分配一個緩沖區(qū)。雙緩沖:建立兩個緩沖區(qū),可以平滑I/O設(shè)備和進程之間的數(shù)據(jù)流,改善系統(tǒng)效率。多緩沖和緩沖池:多進程共享緩沖池。31(5)緩沖技術(shù) 緩解CPU與I/O設(shè)備間速度不匹配的矛盾,減高速緩存(補)(cache)是可以保留數(shù)據(jù)拷貝的高速內(nèi)存。有時一塊內(nèi)存區(qū)域可以同時用于兩個目的。例如,為了有效調(diào)度磁盤I/O,在內(nèi)存開辟了緩沖區(qū)來保留磁盤數(shù)據(jù)。這些緩沖區(qū)也可以用作高速緩存,可被多個進程共享。當內(nèi)核收到I/O請求時,會首先檢查高速緩存里是否有。32高速緩存(補)(cache)是可以保留數(shù)據(jù)拷貝的高速內(nèi)存。3(6)負責設(shè)備分配靜態(tài)分配:進程運行前,將需要的設(shè)備全部分配給它。簡單,不死鎖,但利用率低。動態(tài)分配:在進程運行過程中,分配設(shè)備。設(shè)備利用率高,但容易引起死鎖。33(6)負責設(shè)備分配靜態(tài)分配:進程運行前,將需要的設(shè)備全部分配獨占方式分配:對獨占型設(shè)備的分配。共享分配:對共享型設(shè)備的分配。磁盤。
虛擬設(shè)備。常用可共享的高速設(shè)備來模擬獨占的慢速設(shè)備。能有效提高獨占型設(shè)備的利用率。Spooling技術(shù)是實現(xiàn)虛擬設(shè)備的具體技術(shù)。它利用可共享磁盤的一部分空間,模擬獨占的輸入/輸出設(shè)備。以空間換時間。34獨占方式分配:對獨占型設(shè)備的分配。34假脫機輸出:以打印機為例 Spooling實際是一種緩沖技術(shù)。進程要打印時,系統(tǒng)并不為它分配打印機,而是在磁盤上申請一個空閑區(qū),把待打印的數(shù)據(jù)緩沖到空閑區(qū),再把打印請求掛到打印隊列上。打印機空閑時,從打印隊列上取出一個請求,再從磁盤上的指定區(qū)域取出數(shù)據(jù),送打印機打印。這種技術(shù)又叫緩輸出技術(shù)。35假脫機輸出:以打印機為例 Spooling實際是一種緩沖技術(shù)(7)出錯處理絕大多數(shù)錯誤是與設(shè)備密切相關(guān)的,一般由設(shè)備驅(qū)動程序來處理。處理設(shè)備驅(qū)動程序處理不了的錯誤(重試幾次操作后,仍有錯誤)。將錯誤信息報告調(diào)用者。36(7)出錯處理絕大多數(shù)錯誤是與設(shè)備密切相關(guān)的,一般由設(shè)備驅(qū)I/O軟件。(1)大部分都包含在操作系統(tǒng)中。(2)一小部分是由與用戶程序連接在一起的庫函數(shù)構(gòu)成的。[例]用戶程序中的庫函數(shù):count=read(fd,buffer,nbytes);程序運行期間,庫函數(shù)read將與該程序連接在一起形成一個可執(zhí)行文件裝入主存。這些函數(shù)通常只是將系統(tǒng)調(diào)用時所需要的參數(shù)放在合適的位置,由其他的I/O函數(shù)實現(xiàn)真正的操作。如“Printf”將調(diào)用“write”系統(tǒng)調(diào)用。4.用戶空間的I/O軟件37I/O軟件。(1)大部分都包含在操作系統(tǒng)中。(2)一小部分是5.I/O系統(tǒng)的層次結(jié)構(gòu)用戶進程獨立于設(shè)備的軟件設(shè)備驅(qū)動程序中斷處理程序硬件I/O請求I/O完成后的回答385.I/O系統(tǒng)的層次結(jié)構(gòu)用戶進程獨立于設(shè)備的軟件設(shè)備驅(qū)動讀文件的I/O操作步驟用戶進程發(fā)出一個讀文件的系統(tǒng)調(diào)用。設(shè)備獨立I/O軟件檢查參數(shù)的正確性。若正確,再檢查高速緩存中有無要讀的信息塊。若有,則從緩沖區(qū)直接讀到用戶區(qū)。若無,轉(zhuǎn)3)執(zhí)行物理I/O。獨立于設(shè)備的I/O軟件將設(shè)備的邏輯名轉(zhuǎn)換成物理名,檢查設(shè)備操作權(quán)限。將I/O請求排隊,阻塞用戶進程且等待I/O完成。核心執(zhí)行設(shè)備驅(qū)動程序,分配緩沖區(qū),準備接收數(shù)據(jù),且向設(shè)備控制寄存器發(fā)啟動讀命令。39讀文件的I/O操作步驟用戶進程發(fā)出一個讀文件的系統(tǒng)調(diào)用。39設(shè)備控制器控制設(shè)備,執(zhí)行數(shù)據(jù)傳輸。當采用DMA控制器控制傳輸時,一個塊傳輸完成,硬件產(chǎn)生一個中斷。CPU響應(yīng)中斷,轉(zhuǎn)磁盤的中斷處理程序。檢查中斷原因和設(shè)備的執(zhí)行狀態(tài),若出錯,則向設(shè)備驅(qū)動程序發(fā)信號,若可重試,則再啟動設(shè)備重傳一次;否則,向上報告錯誤。若傳輸正確,將數(shù)據(jù)傳輸給指定的用戶進程空間,將等待進程喚醒并且放入就緒隊列,等待調(diào)度。當用戶進程被調(diào)度執(zhí)行時,從I/O系
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村宅基贈與合同范例
- 會展展位服務(wù)合同范例
- 初級裝修服務(wù)合同范例
- 制作安裝門窗合同范例
- 使用冷庫合同范例
- 代理貨物合同范例
- 企業(yè)營銷管理咨詢合同范例
- 辦公器材購銷合同范例
- 光伏正規(guī)合同范例
- 光伏設(shè)計合同范例
- 機械設(shè)計說明書-激光熔覆送粉器設(shè)計
- 瀝青砼質(zhì)量控制點及措施
- imedical8 1 0醫(yī)生站配置手冊
- RB/T 089-2022綠色供應(yīng)鏈管理體系要求及使用指南
- 家用牙齒美白儀對牙齒漂白的臨床應(yīng)用效果研究
- 李博《生態(tài)學》課后習題答案
- 生化檢驗質(zhì)控及失控分析
- 永磁同步電機地設(shè)計與電磁分析報告
- 全國各大媒體的報料熱線電話號碼
- 催化材料智慧樹知到答案章節(jié)測試2023年南開大學
- 我是小小志愿者小學主題班會PPT
評論
0/150
提交評論