輸入輸出設(shè)備管理.ppt
《輸入輸出設(shè)備管理.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《輸入輸出設(shè)備管理.ppt(73頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
計(jì)算機(jī)操作系統(tǒng)主講 四川大學(xué)計(jì)算機(jī)學(xué)院杜忠軍 第八章設(shè)備管理 DevicesManagement 教學(xué)目的 設(shè)備管理不但要管理實(shí)際I O操作的設(shè)備 如磁盤(pán)機(jī) 打印機(jī) 還要管理諸如設(shè)備控制器 DMA控制器 中斷控制器 I O處理機(jī) 通道 等支持設(shè)備 設(shè)備管理包括各種設(shè)備分配 緩沖區(qū)管理和實(shí)際物理I O設(shè)備操作 通過(guò)管理達(dá)到提高設(shè)備利用率和方便用戶 教學(xué)要求 了解設(shè)備的分類(lèi) 熟悉設(shè)備管理的目標(biāo)和功能 熟悉程序I O方式 中斷方式 DMA方式和通道方式四種I O的控制方式 掌握通道的概念 熟悉通道類(lèi)型 熟悉緩沖的概念 熟悉單緩沖 雙緩沖和多緩沖和緩沖池工作原理 了解在進(jìn)行設(shè)備分配時(shí)應(yīng)考慮的設(shè)備的固有屬性 設(shè)備的分配算法 設(shè)備分配的安全性和設(shè)備的獨(dú)立性等因素 掌握設(shè)備分配中數(shù)據(jù)結(jié)構(gòu) 熟悉設(shè)備分配的流程 掌握SPOOLing技術(shù)概念和SPOOLing系統(tǒng)的組成 熟悉設(shè)備處理程序的功能和處理方式 熟悉設(shè)備處理程序的處理過(guò)程 本章的主要內(nèi)容如下 輸入 輸出系統(tǒng)設(shè)備控制器輸入 輸出控制方式緩沖管理輸入 輸出軟件設(shè)備分配與回收 8 1輸入輸出系統(tǒng) 8 1 1I O系統(tǒng)1 大型機(jī)通道系統(tǒng) 圖8 1大型計(jì)算機(jī)組織結(jié)構(gòu) 圖8 2通過(guò)網(wǎng)絡(luò)共享系統(tǒng)之間的設(shè)備 8 1 1I O系統(tǒng) 1 2 小型計(jì)算機(jī)和微型計(jì)算機(jī)總線系統(tǒng) 圖8 3小型機(jī)總線的組織結(jié)構(gòu) 8 1 1I O系統(tǒng) 2 1984年推出的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)ISA IndustryStandardArchitecture 總線 其帶寬為2Mb s 適用于處理器為80286的計(jì)算機(jī) 1988年推出的擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)EISA ExpansionIndustryStandardArchitecture 總線 帶寬可以達(dá)到32Mb s 適用于處理器為80386類(lèi)的計(jì)算機(jī) 1990年 為了適應(yīng)多媒體 高質(zhì)量圖形處理技術(shù)和網(wǎng)絡(luò)應(yīng)用 推出了適合處理器為80486類(lèi)計(jì)算機(jī)的VESA VideoElectronicStandardAssociation 總線 帶寬增加到132Mb s 1992年 隨著Pentium系列CPU的出現(xiàn) 單總線結(jié)構(gòu)已經(jīng)不能滿足系統(tǒng)性能要求 推出了的具有全局總線和局部總線的PCI總線 如圖8 4所示 8 1 1I O系統(tǒng) 3 圖8 4通用計(jì)算機(jī)組織結(jié)構(gòu) 8 1 2設(shè)備分類(lèi) I O設(shè)備的種類(lèi)繁多 從OS觀點(diǎn)來(lái)看 其重要的性能指標(biāo)有 數(shù)據(jù)傳輸速率 數(shù)據(jù)的傳輸單位 設(shè)備的共享屬性等 1 按傳輸速率分類(lèi)低速設(shè)備 指?jìng)鬏斔俾蕿槊棵腌妿讉€(gè)字節(jié)到數(shù)百個(gè)字節(jié)的設(shè)備 典型的設(shè)備有鍵盤(pán) 鼠標(biāo) 語(yǔ)音的輸入等 中速設(shè)備 指?jìng)鬏斔俾试诿棵腌姅?shù)千個(gè)字節(jié)至數(shù)十千個(gè)字節(jié)的設(shè)備 典型的設(shè)備有行式打印機(jī) 激光打印機(jī)等 高速設(shè)備 指?jìng)鬏斔俾试跀?shù)百千個(gè)字節(jié)至數(shù)兆字節(jié)的設(shè)備 典型的設(shè)備有磁帶機(jī) 磁盤(pán)機(jī) 光盤(pán)機(jī)等 8 1 2設(shè)備分類(lèi) 1 2 按信息交換的單位分類(lèi)塊設(shè)備 BlockDevice 指以數(shù)據(jù)塊為單位來(lái)組織和傳送數(shù)據(jù)信息的設(shè)備 這類(lèi)設(shè)備用于存儲(chǔ)信息 有磁盤(pán)和磁帶等 它屬于有結(jié)構(gòu)設(shè)備 典型的塊設(shè)備是磁盤(pán) 每個(gè)盤(pán)塊的大小為512B 4KB 磁盤(pán)設(shè)備的基本特征是 傳輸速率較高 通常每秒鐘為幾兆位 它是可尋址的 即可隨機(jī)地讀 寫(xiě)任意一塊 磁盤(pán)設(shè)備的I O采用DMA方式 字符設(shè)備 CharacterDevice 指以單個(gè)字符為單位來(lái)傳送數(shù)據(jù)信息的設(shè)備 這類(lèi)設(shè)備一般用于數(shù)據(jù)的輸入和輸出 有交互式終端 打印機(jī)等 它屬于無(wú)結(jié)構(gòu)設(shè)備 字符設(shè)備的基本特征是 傳輸速率較低 不可尋址 即不能指定輸入時(shí)的源地址或輸出時(shí)的目標(biāo)地址 字符設(shè)備的I O常采用中斷驅(qū)動(dòng)方式 8 1 2設(shè)備分類(lèi) 2 3 按資源分配的角度分類(lèi)獨(dú)占設(shè)備 指在一段時(shí)間內(nèi)只允許一個(gè)用戶 進(jìn)程 訪問(wèn)的設(shè)備 大多數(shù)低速的I O設(shè)備 如用戶終端 打印機(jī)等屬于這類(lèi)設(shè)備 因?yàn)楠?dú)占設(shè)備屬于臨界資源 所以多個(gè)并發(fā)進(jìn)程必須互斥地進(jìn)行訪問(wèn) 共享設(shè)備 指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同時(shí)訪問(wèn)的設(shè)備 顯然 共享設(shè)備必須是可尋址的和可隨機(jī)訪問(wèn)的設(shè)備 典型的共享設(shè)備是磁盤(pán) 共享設(shè)備不僅可以獲得良好的設(shè)備利用率 而且是實(shí)現(xiàn)文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的物質(zhì)基礎(chǔ) 虛擬設(shè)備 指通過(guò)虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備變換為若干臺(tái)供多個(gè)用戶 進(jìn)程 共享的邏輯設(shè)備 一般可以利用假脫機(jī)技術(shù) SPOOLing技術(shù) 實(shí)現(xiàn)虛擬設(shè)備 8 1 3設(shè)備管理的目標(biāo)和功能 1 設(shè)備管理的目標(biāo)提高設(shè)備的利用率 為此 應(yīng)盡量提高CPU與I O設(shè)備之間的并行操作程度 主要利用的技術(shù)有 中斷技術(shù) DMA技術(shù) 通道技術(shù) 緩沖技術(shù) 為用戶提供方便 統(tǒng)一的界面 所謂方便 是指用戶能獨(dú)立于具體設(shè)備的復(fù)雜物理特性之外而方便地使用設(shè)備 所謂統(tǒng)一 是指對(duì)不同的設(shè)備盡量使用統(tǒng)一的操作方式 例如各種字符設(shè)備用一種I O操作方式 這就要求用戶操作的是簡(jiǎn)便的邏輯設(shè)備 而具體的I O物理設(shè)備由操作系統(tǒng)去實(shí)現(xiàn) 這種性能常常被稱(chēng)為設(shè)備的獨(dú)立性 8 1 3設(shè)備管理的目標(biāo)和功能 1 2 設(shè)備管理功能設(shè)備分配 指設(shè)備管理程序按照一定的算法把某一個(gè)I O設(shè)備 及其相應(yīng)的設(shè)備控制器和通道分配給某一用戶 進(jìn)程 對(duì)于未分配到的進(jìn)程 則插入等待隊(duì)列中 緩沖區(qū)管理 為了解決CPU與I O之間速度不匹配的矛盾 在它們之間配置了緩沖區(qū) 這樣設(shè)備管理程序又要負(fù)責(zé)管理緩沖區(qū)的建立 分配和釋放 實(shí)現(xiàn)物理I O設(shè)備的操作 對(duì)于具有通道的系統(tǒng) 設(shè)備管理程序根據(jù)用戶提出的I O請(qǐng)求 生成相應(yīng)的通道程序并提交給通道 然后用專(zhuān)門(mén)的通道指令啟動(dòng)通道 對(duì)指定的設(shè)備進(jìn)行I O操作 并能響應(yīng)通道的中斷請(qǐng)求 對(duì)于未設(shè)置通道的系統(tǒng) 設(shè)備管理程序直接驅(qū)動(dòng)設(shè)備進(jìn)行I O操作 8 1 3設(shè)備管理的目標(biāo)和功能 2 虛擬設(shè)備 通過(guò)SPOOLing技術(shù)將獨(dú)占設(shè)備改造成多個(gè)邏輯設(shè)備 可以實(shí)現(xiàn)對(duì)獨(dú)占設(shè)備的共享 8 2設(shè)備控制器 為了便于設(shè)計(jì)和計(jì)算機(jī)實(shí)現(xiàn) 通常將輸入 輸出設(shè)備分為機(jī)械部分和電子部分 機(jī)械部分為通常意義上的輸入 輸出設(shè)備本身的硬件組成和結(jié)構(gòu) 如打印機(jī) 掃描儀等 電子部分為設(shè)備控制器 也稱(chēng)為適配器 輸入 輸出設(shè)備通過(guò)設(shè)備控制器進(jìn)入計(jì)算機(jī)系統(tǒng) 操作系統(tǒng)通過(guò)設(shè)備控制器管理設(shè)備 8 2 1設(shè)備控制器及其主要功能 接收和識(shí)別處理器命令 設(shè)備控制器具有命令寄存器和譯碼器 將處理器的命令接收到命令寄存器中并對(duì)命令進(jìn)行譯碼 設(shè)備控制 根據(jù)接收和譯碼后的處理器命令對(duì)設(shè)備采取相應(yīng)的控制 數(shù)據(jù)交換 實(shí)現(xiàn)處理器與設(shè)備控制器之間 設(shè)備控制器與設(shè)備之間的數(shù)據(jù)交換 識(shí)別設(shè)備地址 系統(tǒng)中的每一個(gè)設(shè)備都有一個(gè)地址 設(shè)備控制器能夠識(shí)別所控制設(shè)備的地址 了解和報(bào)告設(shè)備的狀態(tài) 設(shè)備控制器中的控制 狀態(tài)寄存器能夠存儲(chǔ)接收到的設(shè)備狀態(tài)信息 并將信息上傳給處理器 8 2 2設(shè)備控制器的組成 圖8 5設(shè)備控制器組成 設(shè)備控制器實(shí)現(xiàn)了處理器與設(shè)備之間的數(shù)據(jù) 控制和地址信息等信息的傳輸 設(shè)備控制器的組成如圖8 5所示 設(shè)備控制器由控制 狀態(tài)寄存器 數(shù)據(jù)寄存器 與處理機(jī)接口 與設(shè)備接口等構(gòu)成 8 2 2設(shè)備控制器的組成 1 一個(gè)設(shè)備控制器接口連接一臺(tái)設(shè)備 一臺(tái)設(shè)備控制器有多個(gè)接口 可以連接多個(gè)設(shè)備 在設(shè)備控制器與設(shè)備的接口中存在數(shù)據(jù) 控制和狀態(tài)三種類(lèi)型的信號(hào) 設(shè)備控制器與設(shè)備之間的接口通常是低級(jí)的字符接口 設(shè)備控制器將字符數(shù)據(jù)封裝成數(shù)據(jù)塊 以更大的數(shù)據(jù)格式傳送到計(jì)算機(jī)的內(nèi)存 在編址方式上存在有內(nèi)存映像編址和輸入 輸出獨(dú)立編址兩種形式 控制器端口和內(nèi)存進(jìn)行統(tǒng)一地編址 主機(jī)把輸入 輸出端口看作一個(gè)存儲(chǔ)單元 對(duì)輸入 輸出設(shè)備的讀寫(xiě)操作等同于對(duì)存儲(chǔ)器的操作 優(yōu)點(diǎn)是不需要專(zhuān)門(mén)的輸入 輸出指令 缺點(diǎn)是對(duì)輸入 輸出端口操作的指令需要占用內(nèi)存空間 控制器端口獨(dú)立分配地址空間 與內(nèi)存的地址空間沒(méi)有關(guān)系 主機(jī)使用專(zhuān)門(mén)的輸入 輸出指令對(duì)端口進(jìn)行操作 獨(dú)立編址的優(yōu)點(diǎn)是外部設(shè)備不占用內(nèi)存的地址空間 缺點(diǎn)是對(duì)輸入 輸出端口操作的指令類(lèi)型少 操作不靈活 Intel8086 8088 分配給輸入 輸出端口的地址空間為64K 即 0000H 0FFFFH 只能用IN和OUT指令對(duì)其進(jìn)行讀寫(xiě)操作 8 3I O控制方式 隨著計(jì)算機(jī)技術(shù)的發(fā)展 I O的控制方式也在不斷地發(fā)展 一般可分為 程序I O方式 中斷方式 DMA方式和通道方式 I O的控制方式發(fā)展的目標(biāo)是盡量減少主機(jī)對(duì)I O控制的干預(yù) 8 3 1程序輪詢方式在早期的計(jì)算機(jī)系統(tǒng)中 由于沒(méi)有中斷機(jī)構(gòu) 處理機(jī)對(duì)I O設(shè)備直接進(jìn)行控制 采取程序輪詢I O ProgrammedI O 方式或稱(chēng)為忙 等待方式 即在CPU向設(shè)備控制器發(fā)出一條I O指令啟動(dòng)I O設(shè)備進(jìn)行數(shù)據(jù)傳輸時(shí) 要同時(shí)把狀態(tài)寄存器中的忙 閑標(biāo)志busy置為1 然后便不斷地循環(huán)測(cè)試busy 當(dāng)busy l時(shí) 表示該I O設(shè)備尚未輸入完一個(gè)字 符 CPU應(yīng)繼續(xù)對(duì)該標(biāo)志進(jìn)行測(cè)試 直至busy 0 表示該I O設(shè)備已將輸入數(shù)據(jù)送入到I O控制器的數(shù)據(jù)寄存器中 于是CPU將從數(shù)據(jù)寄存器中取出數(shù)據(jù) 送入內(nèi)存的指定單元 接著 再啟動(dòng)去讀下一個(gè)數(shù)據(jù) 并置busy l 8 3 1程序輪詢方式 1 8 3 1程序輪詢方式 2 在程序I O方式中 由于CPU的速度遠(yuǎn)遠(yuǎn)高于I O設(shè)備 導(dǎo)致CPU的絕大部分時(shí)間都處于等待I O設(shè)備完成而循環(huán)測(cè)試之中 造成了CPU的極大浪費(fèi) 但是它管理簡(jiǎn)單 在要求不高的場(chǎng)合可以被采用 8 3 2中斷控制 Interrupt drivenI O 方式在現(xiàn)代計(jì)算機(jī)系統(tǒng)中 對(duì)I O設(shè)備的控制 廣泛地采用中斷驅(qū)動(dòng)方式 即當(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è)備 此時(shí) CPU與I O設(shè)備處于并行工作狀態(tài) 例如 在輸入時(shí) 當(dāng)設(shè)備控制器收到CPU發(fā)來(lái)的讀命令后 便準(zhǔn)備接收從相應(yīng)輸入設(shè)備送來(lái)的數(shù)據(jù) 一旦數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器 控制器便通過(guò)控制線向CPU發(fā)送一中斷信號(hào) 由CPU檢查輸入過(guò)程中是否出錯(cuò) 若無(wú)錯(cuò) 便向控制器發(fā)取走數(shù)據(jù)的信號(hào) 然后便通過(guò)控制器將數(shù)據(jù)寫(xiě)入指定內(nèi)存單元 8 3 2中斷控制 Interrupt drivenI O 方式 1 8 3 2中斷控制 Interrupt drivenI O 方式 2 圖8 6個(gè)人計(jì)算機(jī)的部分設(shè)備控制器信息 8 3 2中斷控制 Interrupt drivenI O 方式 3 所以 中斷驅(qū)動(dòng)方式在I O設(shè)備輸入數(shù)據(jù)的過(guò)程中 無(wú)需CPU干預(yù) 可以使CPU與I O設(shè)備并行工作 僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí) 才需CPU花費(fèi)極短的時(shí)間去進(jìn)行中斷處理 從而大大地提高了整個(gè)系統(tǒng)的資源利用率及吞吐量 特別是CPU的利用率 8 3 3DMA DirectMemoryAccess 控制方式中斷驅(qū)動(dòng)I O方式雖然大大提高了主機(jī)的利用率 但是它以字 節(jié) 為單位進(jìn)行數(shù)據(jù)傳送 每完成一個(gè)字 節(jié) 的傳送 控制器便要向CPU請(qǐng)求一次中斷 做保存現(xiàn)場(chǎng)信息 恢復(fù)現(xiàn)場(chǎng)等工作 仍然占用了CPU的許多時(shí)間 這種方式對(duì)于高速的塊設(shè)備的I O控制顯然是不適合 為了進(jìn)一步減少CPU對(duì)I O的干預(yù) 引入了直接存儲(chǔ)器訪問(wèn) DirectMemoryAccess 控制方式 該方式的特點(diǎn)是 1 它作為高速的外圍設(shè)備與內(nèi)存之間成批的數(shù)據(jù)交換 但是不對(duì)數(shù)據(jù)再做加工處理 數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊 I O操作的類(lèi)型比較簡(jiǎn)單 8 3 3DMA控制方式 1 2 它需要使用一個(gè)專(zhuān)門(mén)的DMA控制器 DMAC DMAC中有控制 狀態(tài)寄存器 傳送字節(jié)計(jì)數(shù)器 內(nèi)存地址寄存器和數(shù)據(jù)緩沖寄存器 3 它采用盜竊總線控制權(quán)的方法 由DMAC送出內(nèi)存地址和發(fā)出內(nèi)存讀 設(shè)備寫(xiě)或設(shè)備讀 內(nèi)存寫(xiě)的控制信號(hào)來(lái)完成內(nèi)存與設(shè)備之間的直接數(shù)據(jù)傳送 而不用CPU的干預(yù) 有的DMA傳送甚至不經(jīng)過(guò)DMAC的數(shù)據(jù)緩沖寄存器的再吞吐 傳輸速率非常高 4 僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開(kāi)始和結(jié)束時(shí) 才需CPU干預(yù) 整塊數(shù)據(jù)的傳送是在控制器的控制下完成的 可見(jiàn) DMA方式較之中斷驅(qū)動(dòng)方式 又是成百倍地減少了CPU對(duì)I O控制的干預(yù) 進(jìn)一步提高了CPU與I O設(shè)備的并行操作程度 8 3 3DMA控制方式 2 圖8 7DMA方式 8 3 3DMA控制方式 3 圖8 8DMA控制器組成 DMA控制器由內(nèi)存地址寄存器 MAR 數(shù)據(jù)寄存器 DR 命令 狀態(tài)寄存器 CR 數(shù)據(jù)計(jì)數(shù)器 DC 以及中斷和控制邏輯等構(gòu)成 如圖8 8所示 8 3 4I O通道控制方式 1 I O通道控制方式的引入雖然DMA方式比中斷驅(qū)動(dòng)方式已顯著地減少了CPU的干預(yù) 即由以字 節(jié) 為單位的干預(yù)減少到以數(shù)據(jù)塊為單位的干預(yù) 但是CPU每發(fā)出一條I O指令 也只能去讀 或?qū)?一個(gè)連續(xù)的數(shù)據(jù)塊 而當(dāng)我們需要一次去讀多個(gè)離散的數(shù)據(jù)塊且將它們分別傳送到不同的內(nèi)存區(qū)域 或者相反時(shí) 則需由CPU分別發(fā)出多條I O指令及進(jìn)行多次中斷處理 才能完成 由于DMA每次只能執(zhí)行一條I O指令 不能滿足復(fù)雜的I O操作要求 在大 中型計(jì)算機(jī)系統(tǒng)中 普遍采用由專(zhuān)用的I O處理機(jī)來(lái)接受CPU的委托 獨(dú)立執(zhí)行自己的通道程序來(lái)實(shí)現(xiàn)I O設(shè)備與內(nèi)存之間的信息交換 這就是通道技術(shù) 通道技術(shù)可以進(jìn)一步減少CPU的干預(yù) 即把對(duì)一個(gè)數(shù)據(jù)塊為單位的讀 或?qū)?的干預(yù) 減少到對(duì)一組數(shù)據(jù)塊為單位的讀 或?qū)?的有關(guān)的控制和管理的干預(yù) 這樣可實(shí)現(xiàn)CPU 通道和I O設(shè)備三者之間的并行工作 從而更有效地提高了整個(gè)系統(tǒng)的資源利用率和運(yùn)行速度 8 3 4I O通道控制方式 1 2 通道程序通道是通過(guò)執(zhí)行通道程序 并與設(shè)備控制器來(lái)共同實(shí)現(xiàn)對(duì)I O設(shè)備的控制 通道程序是由一系列的通道指令 或稱(chēng)為通道命令 所構(gòu)成 通道指令與一般的機(jī)器指令不同 在每條指令中包含的信息較多 有操作碼 內(nèi)存地址 計(jì)數(shù) 讀或?qū)憯?shù)據(jù)的字節(jié)數(shù) 通道程序結(jié)束位P和記錄結(jié)束標(biāo)志R 3 通道類(lèi)型由于外圍設(shè)備的種類(lèi)較多 且其傳輸速率相差很大 所以通道也具有多種類(lèi)型 根據(jù)信息交換方式 可以把通道分成以下三種類(lèi)型 字節(jié)多路通道 ByteMultiplexorChannel 在這種通道中 通常都含有較多個(gè) 8 16 32 非分配型子通道 每一個(gè)子通道連接一臺(tái)I O設(shè)備 這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道 一個(gè)子通道完成一個(gè)字節(jié)的傳送后 立即讓出字節(jié)多路通道 主通道 給另一個(gè)子通道使用 它適用于連接低速或中速設(shè)備 如打印機(jī) 終端等 8 3 4I O通道控制方式 2 圖8 9字節(jié)多路通道 8 3 4I O通道控制方式 3 數(shù)組選擇通道 BlockSelectorChannel 這種通道雖然可以連接多臺(tái)I O設(shè)備 但是它只有一個(gè)分配型子通道 在一段時(shí)間內(nèi)只能執(zhí)行一道通道程序 控制一臺(tái)設(shè)備進(jìn)行數(shù)據(jù)傳送 其數(shù)據(jù)傳送是按數(shù)組方式進(jìn)行 即當(dāng)某臺(tái)設(shè)備一旦占用了該通道 就被它獨(dú)占 直至該設(shè)備傳送完畢釋放該通道為止 可見(jiàn) 它適于連接高速設(shè)備 如磁盤(pán)機(jī) 磁帶機(jī) 但是這種通道的利用率較低 圖8 10數(shù)組選擇通道 8 3 4I O通道控制方式 4 數(shù)組多路通道 BlockMultiplexorChannel 數(shù)組選擇通道雖然有很高的傳輸速率 但它每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù) 數(shù)組多路通道是將數(shù)組選擇通道的傳輸速率高和字節(jié)多路通道的分時(shí)并行操作的優(yōu)點(diǎn)結(jié)合起來(lái) 形成的一種新的通道 它含有多個(gè)非分配型子通道 可以連接多臺(tái)高 中速的外圍設(shè)備 其數(shù)據(jù)傳送卻是按數(shù)組方式進(jìn)行 所以這種通道既具有很高的數(shù)據(jù)傳輸速率 又能獲得令人滿意的通道利用率 圖8 11數(shù)組多路通道 8 3 4I O通道控制方式 5 3 通道的工作過(guò)程通道中的運(yùn)算控制部件有 用于記錄通道程序在內(nèi)存地址的通道地址字CAW 用于保存正在執(zhí)行的通道指令的通道命令字CCW 用于存放通道執(zhí)行后返回結(jié)果的通道狀態(tài)字CSW 用于存放傳輸數(shù)據(jù)的通道數(shù)據(jù)字CDW 通道有專(zhuān)門(mén)的通道指令 這些指令可以完成空操作 讀操作 寫(xiě)操作 控制 轉(zhuǎn)移操作 用這些指令可以編寫(xiě)通道程序 并在通道中執(zhí)行程序 命令格式一般包括操作碼 數(shù)據(jù)傳輸內(nèi)存地址 特征位 計(jì)數(shù)器 通道輸入 輸出的工作過(guò)程如下 1 當(dāng)處理器執(zhí)行用戶程序中遇到輸入 輸出請(qǐng)求時(shí) 根據(jù)請(qǐng)求生成通道程序放入內(nèi)存 也可事先編好放入內(nèi)存 并將該通道程序的首地址放入通道的CAW中 2 處理器執(zhí)行 啟動(dòng)輸入 輸出 指令 并啟動(dòng)通道工作 當(dāng)通道接收到 啟動(dòng)輸入 輸出 指令后 從通道的CAW中取出通道程序的首地址 根據(jù)首地址取出第一條指令放入通道的CCW中 并向處理器發(fā)應(yīng)答信號(hào) 此時(shí)處理器可繼續(xù)執(zhí)行其他程序 而通道則開(kāi)始執(zhí)行通道程序 8 3 4I O通道控制方式 6 3 通道程序完成輸入 輸出 啟動(dòng)輸入 輸出設(shè)備 執(zhí)行完成 4 如果還有下一條指令 則繼續(xù)執(zhí)行 否則輸入 輸出完成 5 當(dāng)通道傳輸完最后一條指令時(shí) 向處理器發(fā)輸入 輸出中斷 通道停止工作 6 處理器接收中斷信號(hào) 從通道的CSW中取得有關(guān)信息 決定下一步做什么 4 具有通道的計(jì)算機(jī)系統(tǒng)在計(jì)算機(jī)系統(tǒng)中 一個(gè)處理器可以連接若干個(gè)通道 一個(gè)通道可以連接若干個(gè)設(shè)備控制器 一個(gè)設(shè)備控制器可以連接若干個(gè)設(shè)備 處理器通過(guò)執(zhí)行輸入 輸出指令實(shí)現(xiàn)對(duì)通道的控制 通道通過(guò)執(zhí)行通道指令實(shí)現(xiàn)對(duì)設(shè)備控制器的控制 設(shè)備控制器發(fā)出讀寫(xiě)和管理操作實(shí)施對(duì)設(shè)備的控制和完成輸入 輸出 8 3 4I O通道控制方式 7 在一般的主機(jī)系統(tǒng)中 單通道輸入 輸出的可靠性不高 為了增加系統(tǒng)的可靠性 可采用多通道 并在通道和設(shè)備控制器之間采用交叉連接 如圖8 12所示 圖8 12交叉連接的系統(tǒng) 8 3 4I O通道控制方式 8 IBM390計(jì)算機(jī)系統(tǒng)的輸入 輸出系統(tǒng)采用的是通道子系統(tǒng) 如圖8 13所示 通道路徑可以分為并行通道路徑和串行通道路徑 右邊部分為串行通道路徑 左邊部分則為并發(fā)通道路徑 分別連接不同速度的輸入 輸出設(shè)備 圖8 13IBM390系統(tǒng) 8 4緩沖 Buffering 技術(shù) 目前為了解決CPU與I O設(shè)備間速度不匹配的矛盾 提高的I O速度和設(shè)備利用率 在所有的I O設(shè)備與處理機(jī) 內(nèi)存 之間 都使用了緩沖區(qū)來(lái)交換數(shù)據(jù) 所以O(shè)S必須組織和管理好這些緩沖區(qū) 8 4 1緩沖的引入1 改善CPU與I O設(shè)備間速度不匹配的矛盾例如一個(gè)程序 它時(shí)而進(jìn)行長(zhǎng)時(shí)間的計(jì)算而沒(méi)有輸出 時(shí)而又陣發(fā)性把輸出送到打印機(jī) 由于打印機(jī)的速度跟不上CPU 而使得CPU長(zhǎng)時(shí)間的等待 如果設(shè)置了緩沖區(qū) 程序輸出的數(shù)據(jù)先送到緩沖區(qū)暫存 然后由打印機(jī)慢慢地輸出 這時(shí) CPU不必等待 可以繼續(xù)執(zhí)行程序 實(shí)現(xiàn)了CPU與I O設(shè)備之間的并行工作 事實(shí)上 凡在數(shù)據(jù)的到達(dá)速率與其離去速率不同的地方 都可設(shè)置緩沖 以緩和它們之間速度不匹配的矛盾 眾所周知 通常的程序都是時(shí)而計(jì)算 時(shí)而輸出的 8 4 1緩沖的引入 1 2 可以減少對(duì)CPU的中斷頻率 放寬對(duì)中斷響應(yīng)時(shí)間的限制如果I O操作每傳送一個(gè)字節(jié)就要產(chǎn)生一次中斷 那么設(shè)置了n個(gè)字節(jié)的緩沖區(qū)后 則可以等到緩沖區(qū)滿才產(chǎn)生中斷 這樣中斷次數(shù)就減少到1 n 而且中斷響應(yīng)的時(shí)間也可以相應(yīng)的放寬 3 提高CPU和I O設(shè)備之間的并行性緩沖的引入可顯著提高CPU和設(shè)備的并行操作程度 提高系統(tǒng)的吞吐量和設(shè)備的利用率 8 4 2單緩沖 SingleBuffer 每當(dāng)一個(gè)用戶進(jìn)程發(fā)出一個(gè)I O請(qǐng)求時(shí) OS便在主存中為之分配一個(gè)緩沖區(qū) 例如 CPU要從磁盤(pán)上讀一塊數(shù)據(jù)進(jìn)行計(jì)算 先從磁盤(pán)把一塊數(shù)據(jù)讀入到緩沖區(qū)中 然后由OS將緩沖區(qū)的數(shù)據(jù)傳送到用戶區(qū) 最后由CPU對(duì)這一塊數(shù)據(jù)進(jìn)行計(jì)算 可見(jiàn)第一步和最后一步是可以并行執(zhí)行的 這樣就提高了CPU和外設(shè)的利用率 但是對(duì)緩沖區(qū)中數(shù)據(jù)的輸入和提取是串行工作的 如下圖所示 操作系統(tǒng)用戶進(jìn)程輸入傳送I O設(shè)備 8 4 2單緩沖 SingleBuffer 1 平均每批數(shù)據(jù)的處理 輸入 傳輸 計(jì)算 時(shí)間 max 輸入時(shí)間 計(jì)算時(shí)間 傳輸時(shí)間 8 4 3雙緩沖 DoubleBuffer 雙緩沖工作方式基本方法是在設(shè)備輸入時(shí) 先將數(shù)據(jù)輸入到緩沖區(qū)A 裝滿后便轉(zhuǎn)向緩沖區(qū)B 此時(shí)OS可以從緩沖區(qū)A中提取數(shù)據(jù)傳送到用戶區(qū) 最后由CPU對(duì)數(shù)據(jù)進(jìn)行計(jì)算 如下圖所示 操作系統(tǒng)用戶進(jìn)程C輸入T傳送MI O設(shè)備 平均每批數(shù)據(jù)的處理 輸入 傳輸 計(jì)算 時(shí)間 max 輸入時(shí)間 計(jì)算時(shí)間 傳輸時(shí)間 A輸入 傳輸 計(jì)算 B輸入 8 4 4多緩沖 CircularBuffer 雙緩沖可以實(shí)現(xiàn)對(duì)緩沖區(qū)中數(shù)據(jù)的輸入和提取 與CPU的計(jì)算 三者并行工作 所以雙緩沖進(jìn)一步加快了I O的速度 提高了設(shè)備的利用率 當(dāng)對(duì)緩沖區(qū)中數(shù)據(jù)的輸入和提取的速度基本相匹配時(shí) 采用雙緩沖可使兩者并行工作 獲得較好的效果 但是如果兩者的速度相差甚遠(yuǎn)時(shí) 雙緩沖的效果就不夠理想了 如果增加緩沖區(qū)的個(gè)數(shù) 情況就會(huì)有所改善 8 4 4多緩沖 CircularBuffer 1 我們可以將多個(gè)緩沖區(qū)組織成循環(huán)隊(duì)列的形式 如下圖所示 例如對(duì)于用作輸入的循環(huán)緩沖區(qū) 通常提供給輸入進(jìn)程和計(jì)算進(jìn)程使用 輸入進(jìn)程不斷向空緩沖區(qū)中輸入數(shù)據(jù) 計(jì)算進(jìn)程則從滿緩沖區(qū)中提取數(shù)據(jù)用于計(jì)算 操作系統(tǒng)用戶進(jìn)程輸入傳送I O設(shè)備 8 4 4多緩沖 CircularBuffer 2 循環(huán)緩沖的組織 1空 2空 3空 4滿 5滿 6滿 空緩沖隊(duì)列頭指針E 有數(shù)據(jù)緩沖隊(duì)列頭指針F 8 4 4多緩沖 CircularBuffer 3 進(jìn)程同步 1 無(wú)空緩沖 E 1 F 輸入進(jìn)程阻塞 計(jì)算進(jìn)程在消耗一個(gè)緩沖后喚醒它 2 無(wú)數(shù)據(jù) E F 計(jì)算進(jìn)程阻塞 輸入進(jìn)程在裝滿一個(gè)緩沖后喚醒它 緩沖使用設(shè)置兩個(gè)過(guò)程 1 GetDatabuf 取有數(shù)據(jù)的緩沖 在取之前要檢查有無(wú)數(shù)據(jù) 見(jiàn)進(jìn)程同步 F F 1 modN 2 GetEmptybuf 取空緩沖 在取之前要檢查有無(wú)空緩沖 見(jiàn)進(jìn)程同步 E E 1 modN 8 4 5緩沖池 當(dāng)系統(tǒng)配置較多的設(shè)備時(shí) 使用專(zhuān)用緩沖區(qū)就要消耗大量的內(nèi)存空間 且其利用率不高 為了提高緩沖區(qū)的利用率 目前廣泛使用公用緩沖池 池中的緩沖區(qū)可供多個(gè)進(jìn)程共享 對(duì)于同時(shí)用于輸入 輸出的公用緩沖池 至少含有三種類(lèi)型的緩沖區(qū) 空緩沖區(qū) 裝滿輸入數(shù)據(jù)的緩沖區(qū)和裝滿輸出數(shù)據(jù)的緩沖區(qū) 為了管理上的方便 可將相同類(lèi)型的緩沖區(qū)鏈成一個(gè)隊(duì)列 于是就形成三個(gè)隊(duì)列 空緩沖區(qū)隊(duì)列 輸入緩沖區(qū)隊(duì)列和輸出緩沖區(qū)隊(duì)列 另外還應(yīng)具有四種工作緩沖區(qū) 用于收容輸入數(shù)據(jù)的工作緩沖區(qū) hin 用于提取輸入數(shù)據(jù)的工作緩沖區(qū) sin 用于收容輸出數(shù)據(jù)的工作緩沖區(qū) hout 用于提取輸出數(shù)據(jù)的工作緩沖區(qū) sout 可見(jiàn) 緩沖區(qū)工作在收容輸入 提取輸入 收容輸出和提取輸出四種工作方式下 如下圖5所示 申請(qǐng)和歸還緩沖區(qū) 1 getbuf type 2 putbuf type bufnum beginbeginP RS type P MS type P MS type addbuf type bufnum takebuf type V MS type V MS type V RS type endend 8 4 5緩沖池 1 其中 RS type 是為每種緩沖隊(duì)列設(shè)置的同步信號(hào)量 MS type 是為每種緩沖隊(duì)列設(shè)置的互斥信號(hào)量 8 5輸入 輸出軟件 I O軟件的分層 輸入 輸出軟件是實(shí)現(xiàn)輸入 輸出管理的軟件部分 輸入 輸出軟件設(shè)計(jì)目標(biāo)是改善輸入 輸出設(shè)備的效率 實(shí)現(xiàn)統(tǒng)一標(biāo)準(zhǔn)的輸入 輸出設(shè)備管理方式 目前 輸入 輸出軟件設(shè)計(jì)最常用的方法是分層設(shè)計(jì) 分為四層 如下圖所示 8 5 1中斷處理程序 在設(shè)備控制器控制下 I O設(shè)備完成了I O操作后 控制器 或通道 便向CPU發(fā)出一中斷請(qǐng)求 CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序 中斷處理程序大致包含以下幾步 當(dāng)中斷處理程序開(kāi)始執(zhí)行時(shí) 都必須去喚醒阻塞的驅(qū)動(dòng) 程序 進(jìn)程 在采用信號(hào)量機(jī)制時(shí) 可通過(guò)執(zhí)行V操作 將處于阻塞狀態(tài)的驅(qū)動(dòng) 程序 進(jìn)程喚醒 保護(hù)被中斷進(jìn)程的CPU現(xiàn)場(chǎng) 分析中斷原因 轉(zhuǎn)入相應(yīng)的設(shè)備中斷處理程序 進(jìn)程中斷處理 判別此次I O完成是正常結(jié)束中斷還是異常結(jié)束中斷 分別作相應(yīng)處理 恢復(fù)被中斷進(jìn)程或由調(diào)度程序選中的進(jìn)程的CPU的現(xiàn)場(chǎng) 返回被中斷的進(jìn)程 或進(jìn)入新選中的進(jìn)程繼續(xù)運(yùn)行 在UNIX中將以上對(duì)各類(lèi)設(shè)備處理相同的部分集中起來(lái) 形成中斷總控程序 每當(dāng)要進(jìn)行中斷處理時(shí) 都要首先進(jìn)入中斷總控程序 再按需要轉(zhuǎn)入不同的設(shè)備處理程序 8 5 2設(shè)備驅(qū)動(dòng)程序 設(shè)備驅(qū)動(dòng)程序通常又稱(chēng)為設(shè)備處理程序 它是輸入 輸出進(jìn)程與設(shè)備控制器之間的通信程序 簡(jiǎn)稱(chēng)為設(shè)備驅(qū)動(dòng)進(jìn)程 它的主要任務(wù)是接收上層軟件發(fā)來(lái)的抽象要求并將設(shè)備控制器發(fā)來(lái)的信號(hào)傳送給上層軟件 1 設(shè)備驅(qū)動(dòng)程序的功能設(shè)備驅(qū)動(dòng)程序包括所有與設(shè)備相關(guān)的代碼 因此 每個(gè)設(shè)備都有自己專(zhuān)用的驅(qū)動(dòng)程序 設(shè)備驅(qū)動(dòng)程序的主要功能如下 將上層軟件傳送來(lái)的用戶作業(yè)的邏輯輸入 輸出請(qǐng)求轉(zhuǎn)換為設(shè)備的具體要求 驗(yàn)證用戶作業(yè)輸入 輸出請(qǐng)求的合法性 了解輸入 輸出設(shè)備的狀態(tài) 傳遞有關(guān)參數(shù) 設(shè)置設(shè)備的工作方式 發(fā)出輸入 輸出命令 啟動(dòng)分配的輸入 輸出設(shè)備工作 執(zhí)行指定的輸入 輸出操作 8 5 2設(shè)備驅(qū)動(dòng)程序 1 及時(shí)響應(yīng)設(shè)備控制器或通道發(fā)來(lái)的中斷請(qǐng)求 根據(jù)中斷類(lèi)型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理 如果計(jì)算機(jī)系統(tǒng)設(shè)置有通道 設(shè)備驅(qū)動(dòng)程序還應(yīng)能夠根據(jù)用戶作業(yè)的輸入 輸出請(qǐng)求 自動(dòng)地構(gòu)成通道程序 設(shè)備出錯(cuò)處理2 設(shè)備驅(qū)動(dòng)程序的特點(diǎn) 設(shè)備驅(qū)動(dòng)程序是請(qǐng)求輸入 輸出的進(jìn)程與設(shè)備控制器之間的一個(gè)通信程序 它將進(jìn)程的輸入 輸出請(qǐng)求傳送給設(shè)備控制器 把設(shè)備控制器中所記錄的設(shè)備狀態(tài) 輸入 輸出操作完成情況傳送給請(qǐng)求輸入 輸出的進(jìn)程 設(shè)備驅(qū)動(dòng)程序與輸入 輸出控制方式緊密相關(guān) 常用的設(shè)備控制方式是中斷和DMA方式 設(shè)備驅(qū)動(dòng)程序針對(duì)一類(lèi)具體的設(shè)備工作 與設(shè)備硬件緊密相關(guān) 通常情況下 設(shè)備驅(qū)動(dòng)程序需要用匯編語(yǔ)言書(shū)寫(xiě) 目前有很多驅(qū)動(dòng)程序的基本部分已經(jīng)固化在ROM中 8 5 2設(shè)備驅(qū)動(dòng)程序 2 3 設(shè)備驅(qū)動(dòng)程序的處理過(guò)程將用戶和上層軟件對(duì)設(shè)備控制的抽象要求轉(zhuǎn)換成對(duì)設(shè)備的具體要求 如對(duì)抽象要求的盤(pán)塊號(hào)轉(zhuǎn)換為磁盤(pán)的盤(pán)面 磁道及扇區(qū) 檢查I O請(qǐng)求的合理性 讀出和檢查設(shè)備的狀態(tài) 確保設(shè)備處于就緒態(tài) 傳送必要的參數(shù) 如傳送的字節(jié)數(shù) 數(shù)據(jù)在主存的首址等 工作方式的設(shè)置 啟動(dòng)I O設(shè)備 并檢查啟動(dòng)是否成功 如成功則將控制返回給I O控制系統(tǒng) 在I O設(shè)備忙于傳送數(shù)據(jù)時(shí) 該用戶進(jìn)程把自己阻塞 直至中斷到來(lái)才將它喚醒 而CPU可干別的事 8 5 2設(shè)備驅(qū)動(dòng)程序 3 4 設(shè)備出錯(cuò)處理設(shè)備出錯(cuò)處理由設(shè)備驅(qū)動(dòng)程序完成 在設(shè)備使用上 大多數(shù)的設(shè)備出錯(cuò)情況 只有驅(qū)動(dòng)程序知道該如何處理 一般來(lái)講 設(shè)備驅(qū)動(dòng)程序會(huì)根據(jù)使用出錯(cuò)的情況不同 采用不同的處理方法 如果發(fā)生的錯(cuò)誤很小 不影響設(shè)備的正常使用 設(shè)備驅(qū)動(dòng)程序會(huì)忽略錯(cuò)誤 如果發(fā)生的錯(cuò)誤不能忽略 則設(shè)備驅(qū)動(dòng)程序會(huì)采取重試的方法或報(bào)警的方法 如何報(bào)警 如何處理錯(cuò)誤則與操作系統(tǒng)無(wú)關(guān) 可能需要人工解決 例如 使用打印機(jī)時(shí)出錯(cuò) 打印機(jī)驅(qū)動(dòng)程序通過(guò)系統(tǒng)通知用戶重試確認(rèn) 如果打印機(jī)缺紙出錯(cuò) 打印機(jī)驅(qū)動(dòng)程序通過(guò)系統(tǒng)通知用戶處理 處理好后可繼續(xù)運(yùn)行 使用磁盤(pán)時(shí)由于位示圖等關(guān)鍵信息出錯(cuò) 則磁盤(pán)驅(qū)動(dòng)程序通過(guò)系統(tǒng)打印出錯(cuò)誤信息并終止執(zhí)行 驅(qū)動(dòng)程序自身不能處理 8 5 3與設(shè)備無(wú)關(guān)的操作系統(tǒng)軟件 1 設(shè)備無(wú)關(guān)的軟件定義設(shè)備驅(qū)動(dòng)程序與設(shè)備之間存在著緊密關(guān)系 即設(shè)備驅(qū)動(dòng)程序不能獨(dú)立于設(shè)備 而最上層的用戶級(jí)輸入 輸出軟件卻要求用戶程序?qū)υO(shè)備的使用獨(dú)立于具體使用的物理設(shè)備 實(shí)現(xiàn)設(shè)備獨(dú)立性 因此 在設(shè)備驅(qū)動(dòng)程序與用戶級(jí)輸入 輸出軟件之間需要再加上一層軟件 這層軟件是與設(shè)備無(wú)關(guān)的軟件 也稱(chēng)為設(shè)備獨(dú)立性軟件 2 設(shè)備的邏輯名與物理名之間的映射正如用戶程序中要使用邏輯地址而不使用物理地址一樣 在用戶程序中使用設(shè)備的邏輯名而不使用設(shè)備的物理名 設(shè)備的邏輯名是系統(tǒng)中預(yù)先設(shè)計(jì)的統(tǒng)一名稱(chēng) 不依賴(lài)于設(shè)備 可以是一個(gè)簡(jiǎn)單的字符串或一個(gè)整數(shù) 應(yīng)用在與設(shè)備有關(guān)的所有軟件模塊中 設(shè)備的物理名是系統(tǒng)提供的標(biāo)準(zhǔn)名稱(chēng) 是永久的 不可改變的 設(shè)備驅(qū)動(dòng)程序需要將設(shè)備的邏輯名映射為物理名 并按照設(shè)備的邏輯名進(jìn)行設(shè)備的分配和回收 8 5 3與設(shè)備無(wú)關(guān)的操作系統(tǒng)軟件 1 邏輯設(shè)備表 logicalunittable 實(shí)現(xiàn)了設(shè)備的邏輯名到物理名的映射 對(duì)于單用戶單進(jìn)程系統(tǒng) 整個(gè)系統(tǒng)設(shè)置一個(gè)邏輯設(shè)備表 由于系統(tǒng)中所有進(jìn)程的設(shè)備分配情況都記錄在同一表中 不允許具有相同的邏輯設(shè)備名 對(duì)于多用戶多進(jìn)程系統(tǒng) 系統(tǒng)為每個(gè)用戶設(shè)置一個(gè)邏輯設(shè)備表 每當(dāng)用戶登錄時(shí) 便為用戶建立一個(gè)進(jìn)程 同時(shí)也為之建立一個(gè)邏輯設(shè)備表 并將該表放入進(jìn)程的進(jìn)程控制塊中 只需要查詢進(jìn)程控制塊即可實(shí)現(xiàn)邏輯名到物理名的映射 在邏輯設(shè)備表中包含有邏輯設(shè)備名 物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址等信息 當(dāng)進(jìn)程用邏輯設(shè)備名來(lái)請(qǐng)求分配輸入 輸出設(shè)備時(shí) 系統(tǒng)為它分配相應(yīng)的物理設(shè)備 并在邏輯設(shè)備表上建立一個(gè)表目 寫(xiě)上應(yīng)用程序中使用的邏輯設(shè)備名和系統(tǒng)分配的物理設(shè)備名 以及該設(shè)備的驅(qū)動(dòng)程序入口地址 一個(gè)用戶程序在使用磁盤(pán) 打印機(jī)等設(shè)備時(shí) 無(wú)需因?yàn)槊恳环N設(shè)備類(lèi)型的變化而修改程序 操作系統(tǒng)可以根據(jù)當(dāng)時(shí)設(shè)備的配置情況自由分配適當(dāng)類(lèi)型的設(shè)備 一臺(tái)設(shè)備不能提供使用 可以用相同種類(lèi)的設(shè)備來(lái)提供 8 5 3與設(shè)備無(wú)關(guān)的操作系統(tǒng)軟件 2 3 設(shè)備獨(dú)立性軟件為用戶使用設(shè)備提供了統(tǒng)一操作 通過(guò)限制操作的權(quán)限達(dá)到保護(hù)設(shè)備的目的有了設(shè)備獨(dú)立性軟件 無(wú)論何種設(shè)備 都可以向用戶輸入 輸出程序?qū)犹峁┙y(tǒng)一的接口 對(duì)所有的設(shè)備 用戶的操作都是相同的 都通過(guò)read實(shí)現(xiàn)讀操作 從輸入設(shè)備讀取數(shù)據(jù) 通過(guò)write實(shí)現(xiàn)寫(xiě)操作 將數(shù)據(jù)輸出到輸出設(shè)備 系統(tǒng)對(duì)每個(gè)設(shè)備設(shè)置讀寫(xiě)權(quán)限 最終實(shí)現(xiàn)保護(hù)設(shè)備的目的 4 實(shí)現(xiàn)設(shè)備獨(dú)立性軟件的優(yōu)點(diǎn)實(shí)現(xiàn)設(shè)備獨(dú)立性軟件具有如下優(yōu)點(diǎn) 使得設(shè)備分配時(shí)具有靈活性 提高了設(shè)備的利用率 易于實(shí)現(xiàn)輸入 輸出重定向 提高系統(tǒng)的可適用性用于輸入 輸出操作的設(shè)備可以更換 即重定向 而不必改變應(yīng)用程序 8 5 4用戶級(jí)輸入 輸出軟件 大多數(shù)的輸入 輸出軟件都在操作系統(tǒng)核心中實(shí)現(xiàn) 只有與用戶程序鏈接在一起的庫(kù)函數(shù)以及運(yùn)行在操作系統(tǒng)核心之外的其它程序才在用戶層實(shí)現(xiàn) 1 庫(kù)文件對(duì)輸入 輸出系統(tǒng)進(jìn)行調(diào)用的系統(tǒng)函數(shù)屬于用戶級(jí) 如對(duì)設(shè)備的read write操作 2 spooling程序技術(shù) 1 spooling程序技術(shù)定義脫機(jī)輸入 輸出是通過(guò)外圍控制機(jī)實(shí)現(xiàn)信息的輸入 輸出 輸入 輸出不需要主機(jī)的參與 使得主機(jī)的處理與輸入 輸出過(guò)程并行進(jìn)行 提高了系統(tǒng)的效率 特別是處理器的效率 8 5 4用戶級(jí)輸入 輸出軟件 1 隨著計(jì)算機(jī)處理速度的提高 特別是多道程序的引入 外圍控制機(jī)的輸入 輸出控制功能可以用程序來(lái)模擬 用程序來(lái)替代外圍控制機(jī) 模擬輸入程序?qū)⒋罅啃枰幚淼男畔㈩A(yù)先輸入到磁盤(pán)中暫存 實(shí)現(xiàn)了 預(yù)輸入 當(dāng)用戶作業(yè)需要輸入信息時(shí)則直接從磁盤(pán)中輸入 同樣 當(dāng)用戶作業(yè)需要輸出信息時(shí) 會(huì)暫時(shí)將信息保存到磁盤(pán)中 待作業(yè)完成后 模擬輸出程序再將磁盤(pán)中的輸出信息輸出到輸出設(shè)備 實(shí)現(xiàn)了 緩輸出 這樣的輸入 輸出是在主機(jī)的控制下 實(shí)現(xiàn)的脫機(jī)輸入 輸出 稱(chēng)為spooling simultaneausperiphernaloperationson line 也稱(chēng)為假脫機(jī) 8 5 4用戶級(jí)輸入 輸出軟件 2 2 spooling系統(tǒng)的組成 8 5 4用戶級(jí)輸入 輸出軟件 3 spooling系統(tǒng)主要包括如下四個(gè)部分 輸入井和輸出井 輸入緩沖區(qū)和輸出緩沖區(qū) 預(yù)輸入進(jìn)程SPI和緩輸出進(jìn)程SPO 井管理程序在作業(yè)執(zhí)行過(guò)程中 進(jìn)程如果請(qǐng)求啟動(dòng)某臺(tái)輸入 輸出設(shè)備操作 操作系統(tǒng)得到該請(qǐng)求并調(diào)出井管理程序 控制從相應(yīng)的輸入井讀取數(shù)據(jù)或?qū)⑿畔⑤敵龅捷敵鼍?輸入井中的信息被作業(yè)取走后 輸入井應(yīng)該歸還 同樣 如果輸出井中的信息被送入到輸出緩沖區(qū)后 輸出井也應(yīng)該歸還 操作系統(tǒng)通過(guò)預(yù)輸入表和緩輸出表管理輸入作業(yè)和輸出作業(yè) 表中有作業(yè)名 作業(yè)狀態(tài) 文件名 設(shè)備類(lèi) 數(shù)據(jù)起始位置 數(shù)據(jù)當(dāng)前位置等信息 當(dāng)輸入井或輸出井刪除時(shí) 作業(yè)信息也從表中刪除 井管理程序的主要工作就是管理預(yù)輸入表和緩輸出表及回收輸入井和輸出井 8 5 4用戶級(jí)輸入 輸出軟件 4 3 應(yīng)用spooling技術(shù)實(shí)現(xiàn)共享打印機(jī)打印機(jī)屬于獨(dú)享設(shè)備 但利用spooling技術(shù) 可將它改造為一臺(tái)可供多個(gè)用戶共享的設(shè)備 從而提高設(shè)備的利用率 方便用戶的使用 當(dāng)用戶進(jìn)程申請(qǐng)打印輸出時(shí) spooling系統(tǒng)同意為進(jìn)程打印輸出 但并不真正分配打印機(jī)給該進(jìn)程 而只為該進(jìn)程做了兩件事 輸出進(jìn)程在輸出井中為之申請(qǐng)一空閑盤(pán)塊區(qū) 并將要打印的數(shù)據(jù)送入其中 輸出進(jìn)程再為用戶進(jìn)程請(qǐng)求一張空白的緩輸出表 并將用戶的打印要求填入表中 如果還有作業(yè)打印輸出 系統(tǒng)仍可以接收請(qǐng)求并將其寫(xiě)入表中 打印機(jī)可能使用時(shí)間非常長(zhǎng) 在用戶使用期間 其他用戶無(wú)法打印 為解決該問(wèn)題 大多數(shù)操作系統(tǒng)都為打印機(jī)創(chuàng)建了一個(gè)特殊的守護(hù)進(jìn)程 由守護(hù)進(jìn)程從輸出井中取出用戶作業(yè)進(jìn)行打印 而不需要用戶進(jìn)程參與打印 這樣 用戶進(jìn)程在將打印數(shù)據(jù)送入輸出井之后不需要等待打印 繼續(xù)運(yùn)行 8 5 4用戶級(jí)輸入 輸出軟件 續(xù) 4 spooling技術(shù)的特點(diǎn) 提高了輸入 輸出速度如同脫機(jī)輸入輸出一樣 spooling提高了輸入 輸出速度 緩和了處理器與低速輸入 輸出設(shè)備之間速度不匹配的矛盾 將獨(dú)占設(shè)備改造為共享設(shè)備通過(guò)輸入井和輸出井實(shí)現(xiàn)了獨(dú)占設(shè)備向共享設(shè)備的轉(zhuǎn)變 實(shí)現(xiàn)了虛擬設(shè)備功能實(shí)現(xiàn)了將獨(dú)占設(shè)備變換為若干個(gè)對(duì)應(yīng)的邏輯設(shè)備 8 6設(shè)備的分配和回收 在多道程序環(huán)境下 設(shè)備必須由系統(tǒng)分配 每當(dāng)進(jìn)程向系統(tǒng)提出I O請(qǐng)求時(shí) 設(shè)備分配程序按照一定的策略 把其所需的設(shè)備及其有關(guān)資源 如緩沖區(qū) 控制器和通道 分配給該進(jìn)程 在分配設(shè)備時(shí)還必須考慮系統(tǒng)的安全性 避免發(fā)生死鎖現(xiàn)象 8 6 1設(shè)備分配原則1 根據(jù)設(shè)備的固有屬性而采取的策略獨(dú)享方式 獨(dú)享方式是指將一個(gè)設(shè)備分配給某進(jìn)程后 便一直由它獨(dú)占 直至該進(jìn)程完成或釋放該設(shè)備為止 系統(tǒng)才能將該設(shè)備分配給其它進(jìn)程使用 這種分配方式是對(duì)獨(dú)占設(shè)備采用的分配策略 它不僅往往造成設(shè)備利用率低 而且還會(huì)引起系統(tǒng)死鎖 8 6 1設(shè)備分配原則 1 共享方式共享方式是指將共享設(shè)備 磁盤(pán) 同時(shí)分配給多個(gè)進(jìn)程使用 但是這些進(jìn)程對(duì)設(shè)備的訪問(wèn)需進(jìn)行合理的調(diào)度 虛擬方式虛擬方式是指通過(guò)高速的共享設(shè)備 把一臺(tái)慢速的以獨(dú)占方式工作的物理設(shè)備改造成若干臺(tái)虛擬的同類(lèi)邏輯設(shè)備 這就需要引入SPOOLing技術(shù) 虛擬設(shè)備屬于邏輯設(shè)備 2 設(shè)備分配算法 與進(jìn)程的調(diào)度算法相似 先來(lái)先服務(wù) 當(dāng)多個(gè)進(jìn)程同時(shí)向某一設(shè)備提出I O請(qǐng)求時(shí) 該算法就根據(jù)對(duì)該設(shè)備提出請(qǐng)求的先后次序?qū)⑦@些進(jìn)程排列成一個(gè)設(shè)備請(qǐng)求隊(duì)列 設(shè)備分配程序把設(shè)備首先分配給隊(duì)首進(jìn)程 優(yōu)先級(jí)高者優(yōu)先 對(duì)優(yōu)先權(quán)高的進(jìn)程所提出的I O請(qǐng)求賦予高優(yōu)先權(quán) 在形成設(shè)備隊(duì)列時(shí) 將優(yōu)先級(jí)高的進(jìn)程排在設(shè)備隊(duì)列前面 先得到分配 而對(duì)于優(yōu)先權(quán)相同的I O請(qǐng)求 則按先來(lái)先服務(wù)原則排隊(duì)分配 8 6 1設(shè)備分配原則 2 3 設(shè)備分配中的安全性安全分配方式每當(dāng)進(jìn)程發(fā)出一個(gè)I O請(qǐng)求后 便進(jìn)入阻塞狀態(tài) 直到其I O操作完成時(shí)才被喚醒 當(dāng)它運(yùn)行時(shí)不保持任何設(shè)備資源 打破了產(chǎn)生死鎖一個(gè)必要條件 請(qǐng)求和保持 所以這種分配方式是安全的 但是這種分配算法使得CPU與I O設(shè)備串行工作 設(shè)備的利用率比較低 不安全分配方式進(jìn)程發(fā)出一個(gè)I O請(qǐng)求后仍可以繼續(xù)運(yùn)行 需要時(shí)還可以發(fā)第二個(gè)I O請(qǐng)求 第三個(gè)I O請(qǐng)求 只有當(dāng)進(jìn)程所請(qǐng)求的設(shè)備已被另一個(gè)進(jìn)程占用時(shí) 進(jìn)程才進(jìn)入阻塞狀態(tài) 這種分配方式是不安全 因?yàn)樗赡芫邆?請(qǐng)求和保持 條件 從而可能造成系統(tǒng)死鎖 8 6 2設(shè)備數(shù)據(jù)結(jié)構(gòu) 設(shè)備分配程序是負(fù)責(zé)向?qū)ο到y(tǒng)提出I O請(qǐng)求的進(jìn)程分配設(shè)備 及其相應(yīng)的控制器和通道 數(shù)據(jù)結(jié)構(gòu)有 系統(tǒng)設(shè)備表 SDT 設(shè)備控制表 DCT 控制器控制表 COCT 通道控制表 CHCT 每個(gè)表的具體內(nèi)容如下圖所示 在整個(gè)系統(tǒng)中 有一張系統(tǒng)設(shè)備表 SDT 用于記錄系統(tǒng)中全部設(shè)備的信息 每個(gè)設(shè)備占一個(gè)表目 其中包括設(shè)備類(lèi)型 設(shè)備標(biāo)識(shí)符 設(shè)備控制表指針及設(shè)備驅(qū)動(dòng)程序的入口地址等表項(xiàng) 系統(tǒng)為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表 DCT 用于記錄該設(shè)備的情況 表中除了有用于指示設(shè)備類(lèi)型的字段和設(shè)備標(biāo)識(shí)符字段外 還應(yīng)有下列字段 8 6 2設(shè)備數(shù)據(jù)結(jié)構(gòu) 1 設(shè)備隊(duì)列的隊(duì)首指針 凡因請(qǐng)求本設(shè)備而未得到滿足的進(jìn)程 其PCB都應(yīng)按照一定的策略排成一個(gè)隊(duì)列 稱(chēng)為設(shè)備請(qǐng)求隊(duì)列或簡(jiǎn)稱(chēng)為設(shè)備隊(duì)列 其隊(duì)首指針指向隊(duì)首PCB 在有的系統(tǒng)中還設(shè)置了隊(duì)尾指針 設(shè)備狀態(tài) 當(dāng)設(shè)備自身處于 忙 狀態(tài)時(shí) 將設(shè)備的忙標(biāo)志置 l 若與該設(shè)備相連接的控制器或通道處于 忙 狀態(tài) 而不能啟動(dòng)該設(shè)備 則將設(shè)備的等待標(biāo)志置 l COCT表指針 該指針指向與該設(shè)備相連接的控制器的控制表 在具有多條通路的情況下 一個(gè)設(shè)備可與多個(gè)控制器相連接 此時(shí) 在DCT中應(yīng)設(shè)置多個(gè)控制器表指針 重復(fù)執(zhí)行次數(shù) 外部設(shè)備在傳送數(shù)據(jù)時(shí) 若發(fā)生信息傳送錯(cuò)誤 系統(tǒng)并不立即認(rèn)為傳送失敗 而是允許它重新傳送 只要在規(guī)定的重復(fù)次數(shù)或時(shí)間內(nèi)恢復(fù)正常傳送 則仍認(rèn)為傳送成功 否則才認(rèn)為傳送失敗 8 6 2設(shè)備數(shù)據(jù)結(jié)構(gòu) 2 SDT集合SDTDCT集合DCTCOCT集合COCTCHCT集合CHCT 8 6 3設(shè)備分配和回收過(guò)程 1 設(shè)備分配的流程對(duì)于具有單通道的系統(tǒng) 則當(dāng)進(jìn)程提出I O請(qǐng)求后 系統(tǒng)進(jìn)行設(shè)備分配的流程圖如下圖 2 設(shè)備分配程序的改進(jìn)為了獲得設(shè)備的獨(dú)立性 進(jìn)程應(yīng)用邏輯設(shè)備名請(qǐng)求I O 這樣 系統(tǒng)首先從SDT中找出第一個(gè)該類(lèi)設(shè)備的DCT 如忙 則查找第二個(gè)該類(lèi)設(shè)備的DCT 當(dāng)所有該類(lèi)設(shè)備都忙時(shí) 才把進(jìn)程掛在該類(lèi)設(shè)備的等待隊(duì)列中 實(shí)際上 系統(tǒng)為了提高可靠性和靈活性 通常采用多通路的I O系統(tǒng)結(jié)構(gòu) 此時(shí)對(duì)多個(gè)控制器和通道的分配 必須查找所有的控制器和通道 才能決定是否將該進(jìn)程掛起 單通道系統(tǒng)的設(shè)備分配流程若忙不忙不安全安全不忙忙忙不忙 進(jìn)程P提出所需的I O設(shè)備 根據(jù)物理設(shè)備名 從SDT中找出該設(shè)備的DCT 由DCT的設(shè)備狀態(tài)字段 檢查該設(shè)備是否忙 將該進(jìn)程的PCB插入到該設(shè)備的等待隊(duì)列中 檢查本次設(shè)備分配是否安全性 將此設(shè)備分配給該進(jìn)程 從其DCT中找出與該設(shè)備連接的控制器的COCT 檢查該控制器是否忙 將該進(jìn)程的PCB插入到該控制器的的等待隊(duì)列中 將該控制器分配給進(jìn)程 從COCT中找到與該控制器連接的通道的CHCT 檢查該通道是否忙 將該進(jìn)程的PCB插入到該通道的的等待隊(duì)列中 將該通道分配給進(jìn)程 至此 設(shè)備 控制器和通道三者都已分配成功 啟動(dòng)I O設(shè)備 進(jìn)行具體的I O操作 練習(xí)8 8 1設(shè)備管理的主要目標(biāo)是什么 設(shè)備管理的基本功能包括哪些 8 2敘述設(shè)備控制器的結(jié)構(gòu)及其工作原理 8 3敘述輸入 輸出控制方式有幾種 各有何特點(diǎn) 8 4輸入 輸出軟件包括哪幾層 各有何功能 8 5通道的功能是什么 8 6敘述循環(huán)緩沖的工作原理 8 7敘述spooling技術(shù)的實(shí)現(xiàn)思想 8 8敘述設(shè)備分配的步驟 8 9什么是設(shè)備的獨(dú)立性 為什么要引入設(shè)備的獨(dú)立性 8 10敘述設(shè)備分配中可能出現(xiàn)死鎖的情況- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 輸入輸出 設(shè)備管理
鏈接地址:http://m.italysoccerbets.com/p-4017736.html