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