版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六章設(shè)備管理本章學(xué)習(xí)目標(biāo)了解I/O設(shè)備的幾種類型;掌握程序I/O方式,中斷驅(qū)動I/O方式,DMAI/O控制方式和I/O通道控制方式;重點(diǎn)掌握DMA方式和通道方式,做到能列舉中斷方式、DMA方式和通道方式之間的區(qū)別和聯(lián)系。理解緩沖的引入目的,了解緩沖區(qū)的類別和結(jié)構(gòu),理解緩沖區(qū)和快速緩存的區(qū)別;了解設(shè)備分配和回收;掌握Spooling技術(shù)的概念,理解引入Spooling技術(shù)的目的,做到能敘述出Spooling技術(shù)是如何實(shí)現(xiàn)的;了解磁盤的結(jié)構(gòu),能區(qū)分盤面、磁道、柱面、扇區(qū)等概念;理解磁盤訪問時間的構(gòu)成,做到會計(jì)算尋道時間和旋轉(zhuǎn)延遲時間;掌握幾種典型的磁盤調(diào)度算法,重點(diǎn)掌握SSTF和SCAN算法,理解它們各自優(yōu)缺點(diǎn),做到能按照這些算法調(diào)度給定的一組磁盤訪問請求;了解幾種提高磁盤I/O速度的方法,理解延遲寫的過程;了解I/O應(yīng)用接口、出錯處理Contents目錄I/O系統(tǒng)的功能、模型和接口1I/O設(shè)備和設(shè)備控制器2中斷機(jī)構(gòu)和中斷處理程序3設(shè)備驅(qū)動程序4與設(shè)備無關(guān)的I/O軟件5用戶層的I/O軟件6緩沖區(qū)管理7磁盤存儲器的性能和調(diào)度8I/O系統(tǒng)的功能、模型和接口01I/O系統(tǒng)的基本功能1、方便用戶使用I/O設(shè)備(1)隱藏物理設(shè)備的細(xì)節(jié)
I/O設(shè)備類型多、多方面存在差異。必須對設(shè)備進(jìn)行抽象,隱藏掉物理設(shè)備的實(shí)現(xiàn)細(xì)節(jié),僅向上層提供少量的、抽象的讀/寫命令。(2)與設(shè)備的無關(guān)性
在隱藏物理設(shè)備實(shí)現(xiàn)細(xì)節(jié)的基礎(chǔ)上實(shí)現(xiàn)。使用抽象的邏輯設(shè)備名來使用設(shè)備,應(yīng)用程序與具體的物理設(shè)備無關(guān)。I/O系統(tǒng)的基本功能
2、提高CPU與I/O設(shè)備的利用率(3)提高處理機(jī)和I/O設(shè)備的利用率
一方面要求處理機(jī)能快速響應(yīng)用戶的I/O請求,使I/O設(shè)備盡快地運(yùn)行起來;另一方面也應(yīng)盡量減少在每個I/O設(shè)備運(yùn)行時處理機(jī)的干預(yù)時間。
(4)對I/O設(shè)備進(jìn)行控制
對I/O設(shè)備進(jìn)行控制是驅(qū)動程序的功能。①采用輪詢的可編程I/O方式;②采用中斷的可編程I/O方式;③直接存儲器訪問方式;④I/O通道方式。I/O系統(tǒng)的基本功能3、為用戶在共享設(shè)備時提供共享(5)確保對設(shè)備的正確共享
互斥訪問獨(dú)占設(shè)備、同時訪問共享設(shè)備。(6)錯誤處理
對臨時性錯誤,通過重試操作糾正;對持久性錯誤,需向上層報告。I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O軟件的層次結(jié)構(gòu)
用戶層軟件設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動程序中斷處理程序硬件產(chǎn)生I/O請求、格式化I/O、Spooling映射、保護(hù)、分塊、緩沖、分配設(shè)置設(shè)備寄存器,檢查寄存器狀態(tài)執(zhí)行I/O操作硬件無關(guān)硬件相關(guān)I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O系統(tǒng)中各種模塊之間的層次I/O系統(tǒng)的上、下接口(1)I/O系統(tǒng)接口
I/O系統(tǒng)與上層系統(tǒng)之間的接口。向上層提供對設(shè)備操作的抽象命令,供高層對設(shè)備的使用。OS在用戶層中提供了與I/O操作有關(guān)的庫函數(shù),供用戶使用。(2)軟件/硬件接口(RW/HW)
在它上面是中斷處理程序和用于不同設(shè)備的設(shè)備驅(qū)動程序,它下面是各種設(shè)備的控制器。
在上下兩個接口之間則是I/O系統(tǒng)。I/O系統(tǒng)的層次結(jié)構(gòu)和模型應(yīng)用軟件設(shè)備管理驅(qū)動程序中斷處理程序控制器設(shè)備I/O系統(tǒng)接口軟硬件接口設(shè)備獨(dú)立性軟件I/O系統(tǒng)的層次結(jié)構(gòu)和模型應(yīng)用程序文件系統(tǒng)虛擬內(nèi)存管理塊設(shè)備管理CD-ROM驅(qū)動程序流設(shè)備管理網(wǎng)絡(luò)通信軟件硬盤驅(qū)動程序CD-ROM中斷處理程序硬盤中斷處理程序鍵盤驅(qū)動程序打印機(jī)驅(qū)動程序網(wǎng)絡(luò)驅(qū)動程序鍵盤中斷處理程序打印機(jī)中斷處理程序網(wǎng)絡(luò)中斷處理程序CD-ROM控制器硬盤控制器鍵盤控制器打印機(jī)控制器網(wǎng)絡(luò)控制器光盤驅(qū)動器硬盤驅(qū)動器鍵盤打印機(jī)網(wǎng)絡(luò)塊設(shè)備接口打開/關(guān)閉讀寫流設(shè)備接口打開/關(guān)閉取/放Io_control網(wǎng)絡(luò)接口打開/關(guān)閉讀/寫發(fā)送/接收………………用戶層軟件I/O系統(tǒng)接口設(shè)備獨(dú)立性軟件設(shè)備驅(qū)動程序中斷處理程序RW/HW接口設(shè)備控制器……綠色所示的三層組成了I/O系統(tǒng)I/O系統(tǒng)的層次結(jié)構(gòu)和模型I/O系統(tǒng)的分層
與前面所述的I/O軟件組織的層次結(jié)構(gòu)相對應(yīng),I/O系統(tǒng)本身也可分為如下三個層次:中斷處理程序
當(dāng)有I/O設(shè)備發(fā)來中斷請求信號時,中斷硬件初步處理后轉(zhuǎn)中斷處理程序。設(shè)備驅(qū)動程序
進(jìn)程和設(shè)備控制器之間的通信程序。將上層發(fā)來的抽象請求轉(zhuǎn)化為對設(shè)備的具體參數(shù)和命令,裝入控制器中。設(shè)備獨(dú)立性軟件
即設(shè)備無關(guān)性軟件,基本含義:軟件獨(dú)立于具體使用的物理設(shè)備。提高了I/O系統(tǒng)的可適應(yīng)性和可擴(kuò)展性。I/O軟件獨(dú)立于具體使用的物理設(shè)備。I/O系統(tǒng)接口在I/O系統(tǒng)與高層之間的接口中,根據(jù)設(shè)備類型的不同,又進(jìn)一步分為若干個接口:塊設(shè)備接口、流設(shè)備接口和網(wǎng)絡(luò)接口。塊設(shè)備接口
塊設(shè)備:數(shù)據(jù)的存取和傳輸都是以數(shù)據(jù)塊為單位的設(shè)備。基本特征是傳輸速率高、可尋址。磁盤設(shè)備的I/O常采用DMA方式。特點(diǎn)隱藏磁盤的二維結(jié)構(gòu);將抽象命令映射為低層操作。I/O系統(tǒng)接口流設(shè)備接口
字符設(shè)備:數(shù)據(jù)的存取和傳輸都是以字符為單位的設(shè)備?;咎卣魇莻鬏斔俾实?、不可尋址,常采用中斷驅(qū)動方式。get和put操作
常采用順序存取方式,(用戶程序)獲取或輸出字符的方法是采用get和put操作。in-control指令
統(tǒng)一處理各類字符設(shè)備。包含許多參數(shù),每個參數(shù)對應(yīng)一個具體設(shè)備。I/O系統(tǒng)接口網(wǎng)絡(luò)通信接口
在現(xiàn)代OS中,都提供了面向網(wǎng)絡(luò)的功能。但首先還需要通過某種方式把計(jì)算機(jī)連接到網(wǎng)絡(luò)上。同時操作系統(tǒng)也必須提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計(jì)算機(jī)能通過網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其它計(jì)算機(jī)進(jìn)行通信或上網(wǎng)瀏覽。I/O設(shè)備和設(shè)備控制器02I/O設(shè)備和設(shè)備控制器I/O設(shè)備一般是由執(zhí)行I/O操作的機(jī)械部分和執(zhí)行控制I/O的電子部件組成。通常將這兩部分分開,執(zhí)行I/O操作的機(jī)械部分就是一般的I/O設(shè)備,而執(zhí)行控制I/O的電子部件則稱為設(shè)備控制器或適配器(Adapter)。在微型機(jī)和小型機(jī)中也常稱為控制卡、接口卡或網(wǎng)卡,可將它插入計(jì)算機(jī)的擴(kuò)展槽中。在有的大、中型計(jì)算機(jī)系統(tǒng)中,還配置了I/O通道或I/O處理機(jī)。I/O設(shè)備I/O設(shè)備的類型1.按設(shè)備的共享屬性(資源分配角度)分類獨(dú)占設(shè)備。指在在一段時間內(nèi)只允許一個用戶(進(jìn)程)訪問的設(shè)備,如打印機(jī)、卡片輸入機(jī)等。系統(tǒng)一旦將這類設(shè)備分配給某一作業(yè),就在作業(yè)整個運(yùn)行期間都為它獨(dú)占。共享設(shè)備。指允許若干個用戶同時共享使用的設(shè)備,如磁盤、磁帶等。I/O設(shè)備2.按信息交換(單位)方式分類塊設(shè)備。指計(jì)算機(jī)的主存和外設(shè)之間的信息交換是以塊為單位進(jìn)行的設(shè)備。一塊通常是512個字節(jié)或1K字節(jié),由于信息交換以塊為單位進(jìn)行,所以這類設(shè)備有較高的存取速度;如磁盤、磁帶等。字符設(shè)備。指計(jì)算機(jī)的主存與設(shè)備之間的信息交換是以字符為單位進(jìn)行的設(shè)備,由于每次只能傳送一個字符的信息,所以這類設(shè)備的速度較低,如鍵盤、顯示器、打印機(jī)、卡片輸入機(jī)等。I/O設(shè)備3.按設(shè)備的使用特性分類存儲設(shè)備。指計(jì)算機(jī)用來存儲信息的設(shè)備:如磁盤、磁帶等。輸入輸出設(shè)備。包括輸入設(shè)備和輸出設(shè)備兩大類。輸入設(shè)備:是將外部世界來的信息輸送給計(jì)算機(jī),如鍵盤、鼠標(biāo)器、掃描儀等。輸出設(shè)備:是將計(jì)算機(jī)處理或加工好的信息輸出給外部世界,如打印機(jī)、顯示器、繪圖機(jī)等。I/O設(shè)備4.按設(shè)備的傳輸速率分類高速設(shè)備。傳輸率在數(shù)十萬字節(jié)至千兆字節(jié)。如磁盤機(jī)、磁帶機(jī)、光盤機(jī)等。中速設(shè)備。傳輸率在每秒數(shù)千字節(jié)至數(shù)十萬字節(jié)。如行式打印機(jī)、激光打印機(jī)等。低速設(shè)備。傳輸率僅為每秒幾個字節(jié)至數(shù)百字節(jié)。如鍵盤、鼠標(biāo)器等。設(shè)備控制器設(shè)備控制器是CPU與I/O設(shè)備之間的接口,其用途是接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作。設(shè)備控制器是一個可編址設(shè)備。當(dāng)它僅控制一個設(shè)備時,只有唯一的設(shè)備地址。若控制器可連接多個設(shè)備,則應(yīng)含有多個設(shè)備地址,每個設(shè)備地址對應(yīng)一個設(shè)備。依其復(fù)雜性可分成兩大類:一類是用于控制字符設(shè)備的控制器;另一類是用于控制塊設(shè)備的控制器。設(shè)備控制器設(shè)備控制器的基本功能接收和識別命令:接收和譯碼,需要控制寄存器和命令譯碼器。數(shù)據(jù)交換:實(shí)現(xiàn)CPU控制器;控制器設(shè)備的數(shù)據(jù)交換,需要數(shù)據(jù)寄存器。標(biāo)識和報告設(shè)備狀態(tài):需要狀態(tài)寄存器。控制器中的狀態(tài)寄存器記錄設(shè)備的狀態(tài)供CPU了解。例如:當(dāng)設(shè)備處于就緒狀態(tài)時,CPU才能啟動控制器從設(shè)備中讀出數(shù)據(jù)。地址識別:設(shè)備、寄存器有地址,需要配置地址譯碼器。數(shù)據(jù)緩沖區(qū):解決I/O設(shè)備與CPU、內(nèi)存速度不匹配的矛盾。差錯控制:控制器兼管對由I/O設(shè)備傳送來的數(shù)據(jù)進(jìn)行差錯檢測。設(shè)備控制器設(shè)備控制器的組成
由于設(shè)備控制器位于CPU與設(shè)備之間,它既要與CPU通信,又要與設(shè)備通信,還應(yīng)具有按照CPU所發(fā)來的命令去控制設(shè)備工作的功能,因此,現(xiàn)有的大多數(shù)控制器都是由以下三部分組成:設(shè)備控制器與處理機(jī)的接口。設(shè)備控制器與設(shè)備的接口。?I/O邏輯。設(shè)備控制器設(shè)備與控制器之間的接口
通常設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信。因此在設(shè)備與設(shè)備控制器之間應(yīng)有一接口。在該接口中有三種類型的信號,各對應(yīng)一條信號線:(1)數(shù)據(jù)信號線。傳送數(shù)據(jù)信號,對輸入而言,是由設(shè)備發(fā)送給設(shè)備控制器的;對輸出而言,是由設(shè)備控制器經(jīng)過數(shù)據(jù)信號線傳送來的一批數(shù)據(jù)先暫存于緩沖器中,經(jīng)過轉(zhuǎn)換器作適當(dāng)轉(zhuǎn)換后,再逐個字符地輸出。(2)控制信號線。作為設(shè)備控制器向I/O設(shè)備發(fā)送控制信號的通路。由設(shè)備控制器發(fā)送給設(shè)備,用于規(guī)定設(shè)備操作的信號。(3)狀態(tài)信號線。用于傳送指示設(shè)備的當(dāng)前狀態(tài)的信號。設(shè)備控制器緩沖轉(zhuǎn)換器控制邏輯數(shù)據(jù)信號線I/O設(shè)備控制信號線信號數(shù)據(jù)至設(shè)備控制器狀態(tài)信號線控制器與設(shè)備接口1控制器與設(shè)備接口i…數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制設(shè)備控制器設(shè)備控制器與處理機(jī)的接口
該接口用于實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信。共有三類信號線:數(shù)據(jù)線、地址線和控制線。
數(shù)據(jù)線通常與兩類寄存器相連接,第一類是數(shù)據(jù)寄存器(在控制器中可以有一個或多個數(shù)據(jù)寄存器,用于存放從設(shè)備送來的數(shù)據(jù)(輸入)或從CPU送來的數(shù)據(jù)(輸出));第二類是控制/狀態(tài)寄存器(在控制器中可以有一個或多個這類寄存器,用于存放從CPU送來的控制信息或設(shè)備的狀態(tài)信息)。設(shè)備控制器I/O邏輯控制器與設(shè)備接口i…數(shù)據(jù)寄存器控制/狀態(tài)寄存器CPU與控制器接口控制器與設(shè)備接口數(shù)據(jù)線地址線控制線數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制…控制器與設(shè)備接口1CPU設(shè)備控制器I/O邏輯
在設(shè)備控制器中的I/O邏輯用于實(shí)現(xiàn)對設(shè)備的控制。它通過一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)送I/O命令;I/O邏輯對收到的命令進(jìn)行譯碼。每當(dāng)CPU要啟動一個設(shè)備時,一方面將啟動命令發(fā)送給控制器;另一方面又同時通過地址線把地址發(fā)送給控制器,由控制器的I/O邏輯對收到的地址進(jìn)行譯碼,再根據(jù)所譯出的命令對所選設(shè)備進(jìn)行控制。內(nèi)存映像I/O驅(qū)動程序?qū)⒊橄驣/O命令轉(zhuǎn)換出一系列具體的命令、參數(shù)等數(shù)據(jù)裝入設(shè)備控制器的相應(yīng)寄存器,由控制器來執(zhí)行這些命令,具體實(shí)施對I/O設(shè)備的控制。具有兩種完成方法利用特定的I/O指令內(nèi)存映像I/O內(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,k缺點(diǎn):訪問內(nèi)存和訪問設(shè)備需要兩種不同的指令。內(nèi)存映像I/O內(nèi)存映像I/O
不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k處于0~n-1之間時,被認(rèn)為是內(nèi)存地址,否則就是設(shè)備控制器的寄存器地址。例,將CPU寄存器的內(nèi)容復(fù)制到控制器0的第一個寄存器opcode,指令是
Storecpu-reg,nI/O通道I/O通道設(shè)備的引入引入通道的目的:為了使CPU從繁雜的I/O事務(wù)中解脫出來,同時為了提高CPU與設(shè)備,設(shè)備與設(shè)備之間的并行工作能力。I/0通道是一種特殊處理機(jī),專門負(fù)責(zé)輸入/輸出工作,具有執(zhí)行I/O指令的能力。主要目的是為了建立獨(dú)立的I/O操作,使有關(guān)對I/O操作的組織、管理及其結(jié)束處理也獨(dú)立于CPU。CPU向I/O通道發(fā)送I/O命令,由通道執(zhí)行程序。通道與一般處理機(jī)的區(qū)別指令類型單一,局限于與I/O操作有關(guān)命令。沒有獨(dú)立的內(nèi)存,通道與CPU共享內(nèi)存。I/O通道通道類型 (1)字節(jié)多路通道(ByteMultiplexorChannel)一個主通道連接多個子通道,以時間片輪轉(zhuǎn)方式共享主通道。每個子通道每次只傳送一個字節(jié),連接中低速設(shè)備。A1A2A3…子通道A控制器A控制器B控制器C控制器D控制器EB1B2B3…子通道BC1C2C3…子通道CD1D2D3…子通道DN1N2N3…A1B1C1D1E1A2B2…I/O通道(2)數(shù)組選擇通道(BlockSelectorChannel)以數(shù)組方式工作,每次傳送一批數(shù)據(jù),傳送速度高。在一段時間內(nèi)只能執(zhí)行一個通道程序,只允許一臺設(shè)備進(jìn)行數(shù)據(jù)傳輸。當(dāng)這臺設(shè)備數(shù)據(jù)傳輸完成后,再選擇與通道連接的另一臺設(shè)備,執(zhí)行它的相應(yīng)的通道程序。這種獨(dú)占性又使得通道利用率很低。主要連接磁盤,磁帶等高速I/O設(shè)備。內(nèi)存CH控制器高速設(shè)備1高速設(shè)備2高速設(shè)備3I/O通道(3)數(shù)組多路通道(BlockMultiplexorChannel)結(jié)合了選擇通道傳送速度高和字節(jié)多路通道能進(jìn)行分時并行操作的優(yōu)點(diǎn)。先為一臺設(shè)備執(zhí)行一條通道指令,然后自動轉(zhuǎn)接,為另一臺設(shè)備執(zhí)行一條通道指令。它含有多個非分配型的子通道,既有很高的數(shù)據(jù)傳輸率,又能獲得令人滿意的通道利用率。實(shí)際上是對通道程序采用多道程序設(shè)計(jì)的硬件實(shí)現(xiàn)。主要連接高速設(shè)備。內(nèi)存CH控制器1控制器2控制器3中速設(shè)備1中速設(shè)備2中速設(shè)備3I/O通道瓶頸問題
通道執(zhí)行通道程序,向控制器發(fā)出命令,并具有向CPU發(fā)中斷信號的功能。一旦CPU發(fā)出指令,啟動通道,則通道獨(dú)立于CPU工作但是,由于通道價格貴,通道數(shù)量少,往往使之成為I/O的“瓶頸”,解決方法:增加設(shè)備到主機(jī)間的通路而不增加通道,也就是把一個設(shè)備連接到多個控制器上,而一個控制器又連接到多個通道上。I/O通道單通路I/O系統(tǒng)存儲器通道1通道2控制器2控制器1設(shè)備1設(shè)備2設(shè)備3設(shè)備4設(shè)備5設(shè)備6設(shè)備7設(shè)備8控制器4控制器3I/O通道多通路I/O系統(tǒng)存儲器通道1通道2控制器2控制器1設(shè)備1設(shè)備2設(shè)備3設(shè)備4設(shè)備5設(shè)備6設(shè)備7設(shè)備8控制器4控制器3中斷機(jī)構(gòu)和中斷處理程序03中斷簡介中斷在操作系統(tǒng)中有著特殊重要的地位:是多道程序得以實(shí)現(xiàn)的基礎(chǔ):進(jìn)程之間的切換是通過中斷來完成的中斷也是設(shè)備管理的基礎(chǔ),為了提高處理機(jī)的利用率和實(shí)現(xiàn)CPU與I/O設(shè)備并行執(zhí)行,也必需有中斷的支持中斷處理程序:I/O系統(tǒng)中最低的一層,整個I/O系統(tǒng)的基礎(chǔ)。中斷簡介中斷和陷入(1)中斷——CPU對IO設(shè)備發(fā)來的中斷信號的一種響應(yīng)。中斷是由外部設(shè)備引起,也稱為外中斷。(2)陷入——由CPU內(nèi)部事件引起的中斷。如溢出、非法指令、地址越界、電源故障等。也稱為內(nèi)中斷。中斷和陷入的區(qū)別:信號的來源不同。中斷與正執(zhí)行指令無關(guān),可以屏蔽;陷入與正執(zhí)行指令有關(guān),不可屏蔽中斷簡介中斷向量表和中斷優(yōu)先級(1)中斷向量表
為每種設(shè)備配以相應(yīng)的中斷處理程序,把該程序的入口地址放在中斷向量表的一個表項(xiàng)中,并規(guī)定一個中斷號用于設(shè)備的中斷請求,它直接對應(yīng)于中斷向量表中的一個表項(xiàng)中。(2)中斷優(yōu)先級
系統(tǒng)中有多個中斷信號源,能夠使CPU延遲處理低優(yōu)先級中斷而不屏蔽所有中斷,系統(tǒng)為他們規(guī)定不同的優(yōu)先級。每個中斷源對服務(wù)要求的緊急程度并不相同,這也可以讓高優(yōu)先級中斷搶占低優(yōu)先級中斷處理。如:鍵盤<打印機(jī)<磁盤中斷簡介對多中斷源的處理方式(1)屏蔽(禁止)中斷
對任何新到的中斷請求都暫時不處理,讓其等待。在該方法中,所有中斷都將按順序依次處理。(2)嵌套中斷
多中斷請求時,優(yōu)先響應(yīng)優(yōu)先級最高的;高優(yōu)先級中斷請求可搶占低優(yōu)先級中斷的處理機(jī)。中斷簡介用戶程序中斷處理器X中斷處理器Y用戶程序中斷處理器X中斷處理器X中斷處理程序當(dāng)一個進(jìn)程請求I/O操作時,該進(jìn)程將被掛起。直到設(shè)備完成I/O操作后,設(shè)備控制器向CPU發(fā)送一個中斷請求。CPU響應(yīng)后,轉(zhuǎn)中斷處理程序。中斷處理程序執(zhí)行相應(yīng)的處理,處理完后解除進(jìn)程的阻塞狀態(tài)。中斷處理程序步驟(1)測定是否有未響應(yīng)的中斷信號
當(dāng)設(shè)備完成一個字符的讀入(如字符設(shè)備),設(shè)備控制器向處理機(jī)發(fā)送一個中斷請求信號,請求處理機(jī)將字符讀入內(nèi)存。處理機(jī)執(zhí)行完當(dāng)前指令后都要檢測是否有未響應(yīng)的中斷信號。(2)保護(hù)被中斷進(jìn)程的CPU環(huán)境
保存程序狀態(tài)字PSW和程序計(jì)數(shù)器PC中下一條指令的地址,存入中斷保留區(qū)(棧)中。所有CPU寄存器的內(nèi)容入棧。中斷處理程序PC(N+1)PSW程序狀態(tài)字程序計(jì)數(shù)器YR0Rn…PSWPC(N+1)R0…Rn……NN-1開始返回寄存器中斷棧中斷服務(wù)子例程用戶程序中斷現(xiàn)場保護(hù)示意圖中斷處理程序(3)轉(zhuǎn)入相應(yīng)的設(shè)備處理程序
處理機(jī)測試各個中斷源,確定IO設(shè)備,并發(fā)送確認(rèn)信號。設(shè)備收到信號后,取消中斷請求信號。將設(shè)備中斷處理程序的入口地址裝入到PC中。(4)進(jìn)行中斷處理
不同的設(shè)備有不同的中斷處理程序。(5)恢復(fù)被中斷進(jìn)程的現(xiàn)場
中斷處理完成后,恢復(fù)CPU現(xiàn)場,退出中斷。是否返回被中斷的進(jìn)程,取決于:采用屏蔽中斷方式。返回至被中斷的進(jìn)程采用中斷嵌套方式??紤]有無優(yōu)先級更高的中斷請求中斷處理程序中斷處理流程喚醒被阻塞的驅(qū)動程序進(jìn)程對被中斷進(jìn)程的CPU環(huán)境進(jìn)行保護(hù)分析中斷原因,轉(zhuǎn)入相應(yīng)的中斷處理程序終端中斷處理程序打印機(jī)中斷處理程序磁盤中斷處理程序恢復(fù)被中斷進(jìn)程的CPU現(xiàn)場返回被中斷的進(jìn)程,繼續(xù)執(zhí)行……中斷請求信號設(shè)備驅(qū)動程序04設(shè)備驅(qū)動程序概述設(shè)備驅(qū)動程序通常又稱為設(shè)備處理程序,它是I/O進(jìn)程與設(shè)備控制器之間的通信程序,又由于它常以進(jìn)程的形式存在,故以后就簡稱之為設(shè)備驅(qū)動進(jìn)程。主要任務(wù):接收上層軟件發(fā)來的抽象I/O要求,轉(zhuǎn)換為具體要求后發(fā)送給設(shè)備控制器,啟動設(shè)備去執(zhí)行;將由設(shè)備控制器發(fā)來的信號傳送給上層軟件。設(shè)備驅(qū)動程序概述設(shè)備驅(qū)動程序的功能接收由設(shè)備獨(dú)立性軟件發(fā)來的命令和參數(shù),轉(zhuǎn)換為具體要求。(盤塊號->盤面、磁道號、扇區(qū)號)檢查用戶I/O請求的合法性,了解設(shè)備狀態(tài),傳遞或設(shè)置參數(shù)發(fā)出I/O命令,啟動設(shè)備,或掛在相應(yīng)的設(shè)備隊(duì)列上及時響應(yīng)由控制器或通道發(fā)來的中斷請求,根據(jù)中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。設(shè)備驅(qū)動程序概述設(shè)備驅(qū)動程序的特點(diǎn)驅(qū)動程序主要是指在請求I/O的進(jìn)程與設(shè)備控制器之間的一個通信和轉(zhuǎn)換程序。驅(qū)動程序與設(shè)備控制器及I/O設(shè)備的硬件特性緊密相關(guān),因而對不同類型的設(shè)備應(yīng)配置不同的驅(qū)動程序。驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān),常用中斷驅(qū)動和DMA方式。由于驅(qū)動程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言書寫。驅(qū)動程序允許可重入。設(shè)備驅(qū)動程序的處理過程不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動程序,但大體上它們都可以分成兩部分,一是能夠驅(qū)動I/O設(shè)備工作的驅(qū)動程序,二是設(shè)備中斷處理程序,以處理I/O完成后的工作。設(shè)備驅(qū)動程序的主要任務(wù)是啟動指定設(shè)備,完成上層指定的I/O工作。但在啟動之前,應(yīng)先完成必要的準(zhǔn)備工作,如檢測設(shè)備狀態(tài)是否為“忙”等。在完成所有的準(zhǔn)備工作后,才向設(shè)備控制器發(fā)送一條啟動命令。設(shè)備驅(qū)動程序的處理過程處理過程將抽象要求轉(zhuǎn)換為具體要求。設(shè)置控制器中的寄存器。對服務(wù)請求進(jìn)行校驗(yàn):即檢查I/O請求的合法性。若請求的設(shè)備不支持本次的I/O請求,認(rèn)為是非法操作。檢查設(shè)備的狀態(tài)。檢查設(shè)備是否空閑或是否就緒。傳送必要的參數(shù)。如數(shù)據(jù)量、起始地址等。啟動I/O設(shè)備設(shè)備驅(qū)動程序的處理過程設(shè)備驅(qū)動程序工作流程對I/O設(shè)備的控制方式在I/O控制的整個發(fā)展過程中,都始終貫穿著的宗旨是:盡量減少主機(jī)對I/O控制的干預(yù),把主機(jī)從繁雜的I/O控制事務(wù)中解脫出來,以便主機(jī)更多地去完成數(shù)據(jù)處理任務(wù)。設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或CPU之間的數(shù)據(jù)傳送。I/O控制方式主要有四種:程序I/O方式中斷驅(qū)動I/O方式直接存儲訪問(DMA)控制方式I/O通道控制方式前兩種是以字節(jié)為單位進(jìn)行數(shù)據(jù)傳遞,后兩種是以數(shù)據(jù)塊為單位進(jìn)行數(shù)據(jù)傳遞。對I/O設(shè)備的控制方式1.使用輪詢的可編程I/O方式(程序I/O方式)
程序I/O控制方式(“忙—等待”方式):在一個設(shè)備的操作沒有完成時,控制程序一直檢測設(shè)備的狀態(tài),直到該操作完成,才能進(jìn)行下一個操作。用戶進(jìn)程需輸入數(shù)據(jù)時過程:(1)CPU將設(shè)備的狀態(tài)位busy置為1
(2)向設(shè)備控制器發(fā)出一條I/O指令(3)CPU不斷地循環(huán)測試busy位,如果busy=1,說明I/O設(shè)備忙,CPU再進(jìn)行下一輪檢測;如果busy=0,說明I/O操作結(jié)束,CPU執(zhí)行下一條指令。
(4)CPU將數(shù)據(jù)寄存器中的數(shù)據(jù)送入內(nèi)存指定單元重復(fù)以上步驟,直到所有數(shù)據(jù)輸入完畢對I/O設(shè)備的控制方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)檢查狀態(tài)從I/O控制器中讀入字向存儲器中寫字傳送完成CPU→I/OI/O→CPU出錯I/O→CPUCPU→I/O完成未完未就緒就緒缺點(diǎn):CPU將大量的時間花費(fèi)在循環(huán)等待上,CPU效率極差外設(shè)不能合理利用整個系統(tǒng)的效率很低現(xiàn)在已較少使用這種方式作為I/O的數(shù)據(jù)傳輸控制對I/O設(shè)備的控制方式2.中斷驅(qū)動I/O控制方式(中斷可編程I/O方式)中斷:在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,CPU暫時中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新的進(jìn)程執(zhí)行的過程。中斷驅(qū)動方式:當(dāng)某進(jìn)程要啟動某個I/O設(shè)備工作時,便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來的任務(wù)。對I/O設(shè)備的控制方式用戶進(jìn)程需輸入數(shù)據(jù)時過程:(1)CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令(2)阻塞用戶進(jìn)程并將CPU調(diào)度給其它就緒進(jìn)程(3)當(dāng)相應(yīng)的I/O設(shè)備完成輸入工作時,設(shè)備控制器將向CPU發(fā)送一個I/O中斷信號(4)CPU響應(yīng)中斷(5)由I/O中斷處理程序進(jìn)行差錯檢查,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)傳送到內(nèi)存指定單元中(6)重復(fù)以上步驟,直到傳送完成(7)喚醒被阻塞的用戶進(jìn)程對I/O設(shè)備的控制方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)從I/O控制器中讀入字向存儲器中寫字檢查狀態(tài)傳送完?CPU出錯完成下條指令未完I/O→CPUCPU→內(nèi)存I/O控制器置狀態(tài)寄存器busy=1按規(guī)定指令控制設(shè)備進(jìn)行I/O設(shè)備清error位表示I/O成功;清busy位表示I/O結(jié)束中斷CPU做其它事對I/O設(shè)備的控制方式優(yōu)點(diǎn)
在設(shè)備進(jìn)行數(shù)據(jù)傳輸時,CPU不必等待,可以繼續(xù)執(zhí)行其它進(jìn)程缺點(diǎn) CPU以字(節(jié))為單位進(jìn)行干預(yù),只適于數(shù)據(jù)傳輸率較低的設(shè)備對I/O設(shè)備的控制方式3.直接存儲器訪問(DMA)I/O控制方式DMA(DirectMemoryAccess)控制方式的引入中斷驅(qū)動I/O控制方式:以字節(jié)為單位的。每完成一個字節(jié)的I/O,控制器便向CPU發(fā)一中斷,請求CPU中斷處理。例如,為了從磁盤中讀出1KB的數(shù)據(jù)塊,需要中斷1K次CPU。直接存儲器存取控制方式(DMA):是指對I/O設(shè)備的控制由DMA控制器完成,在DMA控制器的作用下,設(shè)備和主存之間可以成批(以數(shù)據(jù)快為單位)地進(jìn)行數(shù)據(jù)交換,而不用CPU的干涉。為了減少CPU干預(yù)頻率,引入了DMA訪問方式對I/O設(shè)備的控制方式DMA的特點(diǎn)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊,即在CPU與I/O設(shè)備之間,每次傳送至少一個數(shù)據(jù)塊。所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反。僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。對I/O設(shè)備的控制方式向控制器發(fā)讀塊指令讀DMA控制器狀態(tài)端口CPU轉(zhuǎn)去作其它事情CPU響應(yīng)中斷中斷時要讀的塊已在內(nèi)存輸入緩沖區(qū)中CPU→DMADMA→CPU對I/O設(shè)備的控制方式DMA控制器的組成主機(jī)與DMA控制器的接口DMA控制器與塊設(shè)備的接口I/O控制邏輯對I/O設(shè)備的控制方式countI/O控制邏輯DRMARDCCRCPU內(nèi)存主機(jī)—控制器接口控制器與塊設(shè)備接口系統(tǒng)總線DMA控制器命令命令/狀態(tài)寄存器CR:接收從CPU發(fā)來的I/O命令或有關(guān)控制和狀態(tài)信息數(shù)據(jù)寄存器DR:用于暫存設(shè)備到內(nèi)存或從內(nèi)存到設(shè)備的數(shù)據(jù)內(nèi)存地址寄存器MAR:存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始目標(biāo)地址或內(nèi)存原地址數(shù)據(jù)計(jì)數(shù)器DC:存放本次CPU要讀或?qū)懙淖郑ü?jié))數(shù)對I/O設(shè)備的控制方式DMA工作過程(以磁盤數(shù)據(jù)讀入為例)當(dāng)進(jìn)程要求設(shè)備輸入一批數(shù)據(jù)時,CPU將設(shè)備存放輸入數(shù)據(jù)的內(nèi)存始址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的地址寄存器和傳送字節(jié)計(jì)數(shù)器;另外,還要將中斷位和啟動位置為1,以啟動設(shè)備開始進(jìn)行數(shù)據(jù)輸入并允許中斷。發(fā)出數(shù)據(jù)要求的進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程占據(jù)CPU。輸入設(shè)備不斷地挪用CPU工作周期,將數(shù)據(jù)寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直到所要求的字節(jié)全部傳送完畢。DMA控制器在傳送字節(jié)數(shù)完成時,通過中斷請求線發(fā)出中斷信號,CPU收到中斷信號后轉(zhuǎn)中斷處理程序,喚醒等待輸入完成的進(jìn)程,并返回被中斷的程序。在以后的某個時刻,進(jìn)程調(diào)度程序選中提出請求輸入的進(jìn)程,該進(jìn)程從指定的內(nèi)存始址取出數(shù)據(jù)做進(jìn)一步處理。對I/O設(shè)備的控制方式對I/O設(shè)備的控制方式DMA方式的問題DMA方式仍存在一定的局限性,如數(shù)據(jù)傳送的方向、存放數(shù)據(jù)的內(nèi)存始址、傳送數(shù)據(jù)的長度都需要CPU控制;每臺設(shè)備都需要配置一個DMA控制器,當(dāng)設(shè)備較多時,成本太高。對I/O設(shè)備的控制方式4.I/O通道方式通道控制方式的概念
是一種以內(nèi)存為中心,是設(shè)備與內(nèi)存直接交換數(shù)據(jù)的控制方式。CPU只需要發(fā)出啟動指令,指出通道相應(yīng)的操作和I/O設(shè)備,該指令就可以啟動通道并使該通道從內(nèi)存中調(diào)出相應(yīng)的通道指令執(zhí)行。對I/O設(shè)備的控制方式I/O通道控制方式的引入以內(nèi)存為中心的數(shù)據(jù)交換方式把對一個數(shù)據(jù)塊的讀(寫)為單位的干預(yù),減少為對一組數(shù)據(jù)塊的讀(寫)及有關(guān)的控制和管理為單位的干預(yù)。一個通道控制多臺設(shè)備。CPU僅在I/O操作的開始和結(jié)束時花費(fèi)少量時間處理與I/O有關(guān)的工作。實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行操作,從而更有效地提高整個系統(tǒng)的資源利用率。對I/O設(shè)備的控制方式通道程序通道是通過執(zhí)行通道程序,并與設(shè)備控制器共同實(shí)現(xiàn)對I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱為通道命令)所構(gòu)成的。通道指令與一般的機(jī)器指令不同,在它的每條指令中都包含下列諸信息:操作碼:規(guī)定指令所執(zhí)行的操作,如讀、寫、控制等。內(nèi)存地址:標(biāo)明字符送入內(nèi)存或從內(nèi)存取出的內(nèi)存首址。計(jì)數(shù):本條指令所要讀/寫的字節(jié)數(shù)。通道程序結(jié)束位:表示通道程序是否結(jié)束,P=1表示結(jié)束。記錄結(jié)束標(biāo)志:R=0,表示本指令與下一指令處理同一個記錄;
R=1表示處理某記錄的最后一條指令。對I/O設(shè)備的控制方式185025000WRITE200030010WRITE58306010WRITE103414000WRITE8138000WRITE內(nèi)存地址計(jì)數(shù)RP操作碼例如:由6條通道指令所構(gòu)成的簡單的通道程序(P198)程序功能:將內(nèi)存中不同地址的數(shù)據(jù)寫成多個(3個)記錄。與設(shè)備無關(guān)的I/O軟件05與設(shè)備無關(guān)軟件的基本概念為了方便用戶和提高OS的可適應(yīng)性與可擴(kuò)展性,在現(xiàn)代OS的I/O系統(tǒng)中,都無一例外地增加了與設(shè)備無關(guān)的I/O軟件,以實(shí)現(xiàn)設(shè)備獨(dú)立性,也稱為設(shè)備無關(guān)性?;竞x:
應(yīng)用程序中所用的設(shè)備,不局限于使用某個具體的物理設(shè)備。為每個設(shè)備所配置的設(shè)備驅(qū)動程序是與硬件緊密相關(guān)的軟件。為了實(shí)現(xiàn)設(shè)備獨(dú)立性,必須再設(shè)備驅(qū)動程序之上設(shè)置一層軟件,稱為與設(shè)備無關(guān)的I/O軟件,或設(shè)備獨(dú)立性軟件。
與設(shè)備無關(guān)軟件的基本概念1.以物理設(shè)備名使用設(shè)備
在早期OS中,應(yīng)用程序在使用I/O設(shè)備時,都使用設(shè)備的物理名稱,這使應(yīng)用程序與系統(tǒng)中的物理設(shè)備直接相關(guān)。這種方式導(dǎo)致應(yīng)用程序不靈活,給用戶帶來不便,不利于提高設(shè)備利用率。與設(shè)備無關(guān)軟件的基本概念2.引入了邏輯設(shè)備名
為了實(shí)現(xiàn)與設(shè)備的無關(guān)性,引入了邏輯設(shè)備和物理設(shè)備兩個概念。邏輯設(shè)備是抽象的設(shè)備名。在應(yīng)用程序中使用邏輯設(shè)備名來使用設(shè)備。好處是:設(shè)備分配時的靈活性。易于實(shí)現(xiàn)I/O重定向:所謂I/O重定向是指用于I/O操作的設(shè)備可以更換,而不必修改應(yīng)用程序。邏輯設(shè)備是抽象的設(shè)備名,如/dev/printer,并不指定哪一臺打印機(jī)。與設(shè)備無關(guān)軟件的基本概念3.邏輯設(shè)備名到物理設(shè)備名的映射
為了實(shí)現(xiàn)邏輯設(shè)備名到物理設(shè)備名的映射,系統(tǒng)必須設(shè)置一張邏輯設(shè)備表LUT(LogicalUnitTable),能夠?qū)?yīng)用程序中所使用的邏輯設(shè)備名映射為物理設(shè)備名,并提供該設(shè)備驅(qū)動程序的入口地址。與設(shè)備無關(guān)軟件的基本概念主設(shè)備號邏輯設(shè)備名驅(qū)動程序入口地址3/dev/tty1(鍵盤輸入設(shè)備1)30003/dev/tty2(鍵盤輸入設(shè)備2)30005(針式打印機(jī))/dev/lp(打印機(jī))50006/dev/ethN(網(wǎng)卡)4000
用激光打印機(jī)替換針式打印機(jī)后的LUT表:主設(shè)備號邏輯設(shè)備名驅(qū)動程序入口地址3/dev/tty1(鍵盤輸入設(shè)備1)30003/dev/tty2(鍵盤輸入設(shè)備2)30007(激光打印機(jī))/dev/lp(打印機(jī))70006/dev/ethN(網(wǎng)卡)4000與設(shè)備無關(guān)的軟件設(shè)備無關(guān)的軟件是I/O系統(tǒng)的最高層軟件,包括了執(zhí)行所有設(shè)備公有操作的軟件。具體包括:1、設(shè)備驅(qū)動程序的統(tǒng)一接口,可以方便添加新設(shè)備的驅(qū)動程序。2、緩沖管理3、差錯控制——暫時性錯誤、永久性錯誤4、對獨(dú)占設(shè)備的分配與回收,對獨(dú)占設(shè)備由系統(tǒng)進(jìn)行統(tǒng)一的分配和回收處理。5、獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊,隱藏不同設(shè)備的物理數(shù)據(jù)塊大小的差異,向高層軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊。與設(shè)備無關(guān)的軟件設(shè)備驅(qū)動程序的統(tǒng)一接口
為了使所有的設(shè)備驅(qū)動程序有著統(tǒng)一的接口:一方面,要求每個設(shè)備驅(qū)動程序與OS之間都有著相同的接口,或者相近的接口,這樣會使添加一個新的設(shè)備驅(qū)動程序變得很容易,同時在很大程度上方便了開發(fā)人員對設(shè)備驅(qū)動程序的編制。另一方面,要將抽象的設(shè)備名映射到適當(dāng)?shù)尿?qū)動程序上,或者說,將抽象的設(shè)備名轉(zhuǎn)換為具體的物理設(shè)備名,并進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動程序入口。還應(yīng)對設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問設(shè)備,以防止無權(quán)訪問的用戶使用。與設(shè)備無關(guān)的軟件緩沖管理無論是字符設(shè)備還是塊設(shè)備,它們的運(yùn)行速度都遠(yuǎn)低于CPU的速度。為了緩和CPU和I/O設(shè)備之間的矛盾、提高CPU的利用率,在現(xiàn)代OS中都無一例外地分別為字符設(shè)備和塊設(shè)備配置了相應(yīng)的緩沖區(qū)。緩沖區(qū)有著多種形式,如:單緩沖區(qū)、雙緩沖區(qū)、循環(huán)緩沖區(qū)、公用緩沖池等,以滿足不同情況的需要。與設(shè)備無關(guān)的軟件差錯控制由于設(shè)備中有著許多的機(jī)械和電氣部分,因此,它們比主機(jī)更容易出現(xiàn)故障,這就導(dǎo)致I/O操作中的絕大多數(shù)錯誤都與設(shè)備有關(guān)。錯誤可分為如下兩類:暫時性錯誤。持久性錯誤。與設(shè)備無關(guān)的軟件對獨(dú)立設(shè)備的分配與回收在系統(tǒng)中有兩類設(shè)備:獨(dú)占設(shè)備和共享設(shè)備。對于獨(dú)占設(shè)備,為了避免諸進(jìn)程對獨(dú)占設(shè)備的爭奪,必須由系統(tǒng)來統(tǒng)一分配,不允許進(jìn)程自行使用。每當(dāng)進(jìn)程需要使用某(獨(dú)占)設(shè)備時,必須先提出申請。OS接到對設(shè)備的請求后,先對進(jìn)程所請求的獨(dú)占設(shè)備進(jìn)行檢查,看該設(shè)備是否空閑。若空閑,才把該設(shè)備分配給請求進(jìn)程。否則,進(jìn)程將被阻塞,放入該設(shè)備的請求隊(duì)列中等待。等到其它進(jìn)程釋放該設(shè)備時,再將隊(duì)列中的第一個進(jìn)程喚醒,該進(jìn)程得到設(shè)備后繼續(xù)運(yùn)行。與設(shè)備無關(guān)的軟件獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊不同類型的設(shè)備,其數(shù)據(jù)交換單位是不同的,讀取和傳輸速率也各不相同,如字符型設(shè)備以單個字符(字)為單位,塊設(shè)備是以一個數(shù)據(jù)塊為單位。即使同一類型的設(shè)備,其數(shù)據(jù)交換單位的大小也是有差異的,如不同磁盤由于扇區(qū)大小的不同,可能造成數(shù)據(jù)塊大小的不一致。設(shè)備獨(dú)立性軟件應(yīng)能夠隱藏這些差異而被邏輯設(shè)備使用,并向高層軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊設(shè)備分配設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)為實(shí)現(xiàn)對獨(dú)占設(shè)備的分配,必須在系統(tǒng)中配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。在用于設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)中,記錄了對設(shè)備或控制器進(jìn)行控制所需的信息。在進(jìn)行設(shè)備分配時需要如下的數(shù)據(jù)結(jié)構(gòu)。
設(shè)備控制表(DCT)每個設(shè)備一個控制器表(COCT)每個控制器一個通道表(CMCT)每個通道一個系統(tǒng)設(shè)備表(SDT)整個系統(tǒng)一個設(shè)備分配設(shè)備控制表DCT
系統(tǒng)為每一個設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄設(shè)備的情況DCT1DCT2DCTn設(shè)備類型type設(shè)備標(biāo)識符deviceid設(shè)備狀態(tài):等待/不等待忙/閑指向控制器表的指針重復(fù)執(zhí)行次數(shù)或時間設(shè)備隊(duì)列的隊(duì)首指針設(shè)備控制表集合設(shè)備分配設(shè)備隊(duì)列隊(duì)首指針。凡因請求本設(shè)備而等待的進(jìn)程,其PCB都按照一定的策略排成一個隊(duì)列,稱該隊(duì)列為設(shè)備請求隊(duì)列或簡稱設(shè)備隊(duì)列。其隊(duì)首指針指向隊(duì)首PCB。在有的系統(tǒng)中還設(shè)置了隊(duì)尾指針。設(shè)備狀態(tài)。當(dāng)設(shè)備自身正處于使用狀態(tài)時,應(yīng)將設(shè)備的忙/閑標(biāo)志置“1”。若與該設(shè)備相連接的控制器或通道正忙,也不能啟動該設(shè)備,此時則應(yīng)將設(shè)備的等待標(biāo)志置“1”。與設(shè)備連接的控制器表指針。該指針指向該設(shè)備所連接的控制器的控制表。在設(shè)備到主機(jī)之間具有多條通路的情況下,一個設(shè)備將與多個控制器相連接。此時,在DCT中還應(yīng)設(shè)置多個控制器表指針。設(shè)備分配重復(fù)執(zhí)行次數(shù)。由于外部設(shè)備在傳送數(shù)據(jù)時,較易發(fā)生數(shù)據(jù)傳送錯誤,因而在許多系統(tǒng)中,如果發(fā)生傳送錯誤,并不立即認(rèn)為傳送失敗,而是令它重新傳送,并由系統(tǒng)規(guī)定設(shè)備在工作中發(fā)生錯誤時應(yīng)重復(fù)執(zhí)行的次數(shù)。在重復(fù)執(zhí)行時,若能恢復(fù)正常傳送,則仍認(rèn)為傳送成功。僅當(dāng)屢次失敗,致使重復(fù)執(zhí)行次數(shù)達(dá)到最大值而傳送仍不成功時,才認(rèn)為傳送失敗。設(shè)備分配控制器控制表、通道控制表和系統(tǒng)設(shè)備表控制器控制表(COCT)。系統(tǒng)為每一個控制器都設(shè)置了用于記錄控制器情況的控制器控制表。通道控制表(CHCT)。每個通道都有一張通道控制表系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),記錄了系統(tǒng)中全部設(shè)備的情況,每個設(shè)備占一個表目,其中包括有設(shè)備類型、設(shè)備標(biāo)識符、設(shè)備控制表及設(shè)備驅(qū)動程序的入口等項(xiàng),如圖6-18(c)所示。設(shè)備分配控制器標(biāo)識符:controllerid控制器狀態(tài):忙/閑與控制器連接的通道表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)尾指針通道標(biāo)識符:channelid通道狀態(tài):忙/閑與通道連接的控制器表首址通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)尾指針表目1…表目i…設(shè)備類設(shè)備標(biāo)識符DCT驅(qū)動程序入口控制器表COCT通道表CHCT系統(tǒng)設(shè)備表SDT設(shè)備分配SDT表目驅(qū)動程序入口DCT指針設(shè)備標(biāo)識設(shè)備類型等此設(shè)備隊(duì)列隊(duì)首址針重復(fù)次數(shù)與此設(shè)備相連COCT指針設(shè)備狀態(tài)設(shè)備標(biāo)識:i設(shè)備類型DCTn….DCTi….DCT1DCT集合COCTmCOCTjCOCT1COCT集合等待隊(duì)列隊(duì)尾指針等待隊(duì)列隊(duì)首指針與此控制器相連的CHCT指針控制器狀態(tài)控制器標(biāo)識:jCOCTjCHCTLCHCTkCHCT1CHCT集合等待隊(duì)列隊(duì)尾指針等待隊(duì)列隊(duì)首指針與此CH相連的COCT首指針CH狀態(tài)CH標(biāo)識:kSDTI/O設(shè)備nI/O設(shè)備iI/O設(shè)備1設(shè)備分配時應(yīng)考慮的因素系統(tǒng)在分配設(shè)備時,應(yīng)考慮如下幾個因素:設(shè)備的固有屬性
設(shè)備的固有屬性可分成三種,對它們應(yīng)采取不同的分配策略:獨(dú)占設(shè)備的分配策略。共享設(shè)備的分配策略。虛擬設(shè)備的分配策略,虛擬設(shè)備屬于可共享的設(shè)備,可以將它同時分配給多個進(jìn)程使用。設(shè)備分配時應(yīng)考慮的因素設(shè)備分配算法
對設(shè)備分配的算法,通常只采用以下兩種分配算法:先來先服務(wù)。優(yōu)先級高者優(yōu)先。設(shè)備分配時應(yīng)考慮的因素設(shè)備分配中的安全性
從進(jìn)程運(yùn)行的安全性上考慮,設(shè)備分配有以下兩種方式:安全分配方式。
每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。缺點(diǎn):進(jìn)程進(jìn)展緩慢,CPU與I/O設(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ōu)點(diǎn):進(jìn)程可同時操作多個設(shè)備,進(jìn)程推進(jìn)迅速。缺點(diǎn):分配不安全,可能造成死鎖。設(shè)備獨(dú)立性獨(dú)占設(shè)備的分配程序基本的設(shè)備分配程序
我們通過一個例子來介紹設(shè)備分配過程。當(dāng)某進(jìn)程提出I/O請求后,系統(tǒng)的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配:分配設(shè)備。分配控制器。分配通道。獨(dú)占設(shè)備的分配程序設(shè)備分配程序的改進(jìn)
在上面的例子中,進(jìn)程是以物理設(shè)備名提出I/O請求的。如果所指定的設(shè)備已分配給其它進(jìn)程,則分配失敗?;蛘哒f上面的設(shè)備分配程序不具有與設(shè)備無關(guān)性。為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請求I/O。邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)
邏輯設(shè)備表LUT(LogicalUnitTable)
在邏輯設(shè)備表的每個表目中包含了三項(xiàng):邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動程序的入口地址邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)
邏輯設(shè)備表的設(shè)置問題在系統(tǒng)中可采取兩種方式設(shè)置邏輯設(shè)備表:第一種方式,是在整個系統(tǒng)中只設(shè)置一張LUT。要求所有用戶都不使用相同的邏輯設(shè)備名;主要用于單用戶系統(tǒng)中第二種方式,是為每個用戶設(shè)置一張LUT。每當(dāng)用戶登錄時,便為該用戶建立一個進(jìn)程,同時也為之建立一張LUT,并將該表放入進(jìn)程的PCB中用戶層的I/O軟件06用戶層的I/O軟件大部分的IO軟件都放在操作系統(tǒng)內(nèi)部。小部分在用戶層。其中包括與用戶程序鏈接在一起的庫函數(shù),及完全運(yùn)行于內(nèi)核之外的假脫機(jī)系統(tǒng)等。系統(tǒng)調(diào)用與庫函數(shù)系統(tǒng)調(diào)用
一方面,為使諸進(jìn)程能有條不紊地使用I/O設(shè)備,且能保護(hù)設(shè)備的安全性,不允許運(yùn)行在用戶態(tài)的應(yīng)用進(jìn)程去直接調(diào)用運(yùn)行在核心態(tài)(系統(tǒng)態(tài))的OS過程。
但應(yīng)用進(jìn)程在運(yùn)行時,又必須取得OS所提供的服務(wù),否則,應(yīng)用程序幾乎無法運(yùn)行。為了解決此矛盾,OS在用戶層中引入了一個中介過程——系統(tǒng)調(diào)用,應(yīng)用程序可以通過它間接調(diào)用OS中的I/O過程,對I/O設(shè)備進(jìn)行操作。系統(tǒng)調(diào)用與庫函數(shù)系統(tǒng)調(diào)用執(zhí)行過程系統(tǒng)調(diào)用命令用戶態(tài)系統(tǒng)態(tài)系統(tǒng)調(diào)用調(diào)用返回系統(tǒng)調(diào)用與庫函數(shù)庫函數(shù)
在C語言以及UNIX系統(tǒng)中,系統(tǒng)調(diào)用(如read)與各系統(tǒng)調(diào)用所使用的庫函數(shù)(如read)之間幾乎是一一對應(yīng)的。而微軟定義了一套過程,稱為Win32API的應(yīng)用程序接口(ApplicationProgramInterface),程序員利用它們?nèi)〉肙S服務(wù),該接口與實(shí)際的系統(tǒng)調(diào)用并不一一對應(yīng)。用戶程序通過調(diào)用對應(yīng)的庫函數(shù)使用系統(tǒng)調(diào)用,這些庫函數(shù)與調(diào)用程序連接在一起,被嵌入在運(yùn)行時裝入內(nèi)存的二進(jìn)制程序中。假脫機(jī)(Spooling)系統(tǒng)假脫機(jī)技術(shù)在20世紀(jì)50年代,為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾,而引入了脫機(jī)輸入、脫機(jī)輸出技術(shù)。該技術(shù)是利用專門的外圍控制機(jī),先將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上,或者相反。這樣當(dāng)處理機(jī)需要輸入數(shù)據(jù)時,便可以直接從磁盤中讀取數(shù)據(jù),極大地提高了輸入速度。反之,在處理機(jī)需要輸出數(shù)據(jù)時,也可以很快的速度把數(shù)據(jù)先輸出到磁盤上,處理機(jī)便可去做自己的事情。假脫機(jī)(Spooling)系統(tǒng)什么是SPOOLing
在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、輸出功能,此時的外圍操作與CPU對數(shù)據(jù)的處理同時進(jìn)行。把這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時外圍操作稱為SPOOLing(SimultaneausPeriphernalOperatingOn-Line),或稱為假脫機(jī)操作。假脫機(jī)(Spooling)系統(tǒng)SPOOLing系統(tǒng)的組成(1)輸入井和輸出井。這是在磁盤上開辟的兩個大存儲空間。輸入井是模擬脫機(jī)輸入時的磁盤設(shè)備,用于暫存I/O設(shè)備輸入的數(shù)據(jù);輸出井是模擬脫機(jī)輸出時的磁盤,用于暫存用戶程序的輸出數(shù)據(jù)。(2)輸入緩沖區(qū)和輸出緩沖區(qū)。為了緩和CPU和磁盤之間速度不匹配的矛盾,在內(nèi)存中要開辟兩個緩沖區(qū):輸入緩沖區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。假脫機(jī)(Spooling)系統(tǒng)(3)輸入進(jìn)程SPi和輸出進(jìn)程SPo。這里利用兩個進(jìn)程來模擬脫機(jī)I/O時的外圍控制機(jī)。其中,進(jìn)程SPi模擬脫機(jī)輸入時的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)再送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時,直接從輸入井讀入內(nèi)存;進(jìn)程SPo模擬脫機(jī)輸出時的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù)先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時,再將輸出井中的數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。(4)井管理程序。用于控制作業(yè)與磁盤井之間信息的交換。當(dāng)作業(yè)執(zhí)行過程中向某臺設(shè)備發(fā)出啟動輸入或輸出操作請求時,由操作系統(tǒng)調(diào)用井管理程序,由其控制從輸入井讀取信息或?qū)⑿畔⑤敵鲋凛敵鼍?。假脫機(jī)(Spooling)系統(tǒng)SPOOLing系統(tǒng)的組成…通道通道通道輸入井輸出井輸入設(shè)備1輸出設(shè)備n輸出設(shè)備1輸出設(shè)備n
主機(jī)輸入進(jìn)程輸出進(jìn)程…假脫機(jī)(Spooling)系統(tǒng)輸入設(shè)備1輸出設(shè)備n井管理程序運(yùn)行的作業(yè)輸入緩沖區(qū)1輸出緩沖區(qū)1作業(yè)1輸入…作業(yè)n輸入輸入井作業(yè)1輸出…作業(yè)n輸出輸出井輸入緩沖區(qū)2輸出緩沖區(qū)2輸入進(jìn)程輸出進(jìn)程SPOOLing的工作原理假脫機(jī)(Spooling)系統(tǒng)SPOOLing系統(tǒng)的特點(diǎn)(1)提高了I/O的速度。利用輸入輸出井模擬脫機(jī)輸入輸出,緩和了CPU和I/O設(shè)備速度不匹配的矛盾
(2)將獨(dú)占設(shè)備改造為共享設(shè)備。并沒有為進(jìn)程分配設(shè)備,而是為進(jìn)程分配一存儲區(qū)和建立一張I/O請求表
(3)實(shí)現(xiàn)了虛擬設(shè)備功能。多個進(jìn)程同時使用一臺獨(dú)占設(shè)備假脫機(jī)(Spooling)系統(tǒng)假脫機(jī)打印機(jī)系統(tǒng)
打印機(jī)是經(jīng)常用到的輸出設(shè)備,屬于獨(dú)占設(shè)備。利用假脫機(jī)技術(shù)可將它改造為一臺可供多個用戶共享的打印設(shè)備,從而提高設(shè)備的利用率,也方便了用戶。共享打印機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。假脫機(jī)打印系統(tǒng)主要有以下三部分:
(1)磁盤緩沖區(qū)。
(2)打印緩沖區(qū)。
(3)假脫機(jī)管理進(jìn)程和假脫機(jī)打印進(jìn)程假脫機(jī)(Spooling)系統(tǒng)用戶進(jìn)程的打印請求傳遞給SPOOLing系統(tǒng),而不是真正將打印機(jī)分配給用戶進(jìn)程SPOOLing系統(tǒng)同意為它打印輸出,但并不真正立即把打印機(jī)分配給該用戶進(jìn)程,而只為它做兩件事:由輸出進(jìn)程在輸出井中為之申請一個空閑磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;輸出進(jìn)程再為用戶進(jìn)程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊(duì)列上。打印機(jī)空閑時,輸出進(jìn)程從請求打印隊(duì)列上取出一個請求打印表,按其中的要求把數(shù)據(jù)由打印機(jī)輸出。假脫機(jī)(Spooling)系統(tǒng)>><<內(nèi)存(暫存)緩沖區(qū)管理07緩沖的引入引入緩沖區(qū)的原因有很多,可歸結(jié)為以下幾點(diǎn):(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾。
(2)減少對CPU的中斷頻率,放寬對CPU中斷響應(yīng)時間的限制。
(3)解決數(shù)據(jù)粒度不匹配的問題。
(4)提高CPU和I/O設(shè)備之間的并行性。緩沖的引入1位緩沖9.6Kb/s(a)中斷CPU的頻率為9.6Kb/s,每100s中斷一次CPUCPU必須在100s內(nèi)響應(yīng),否則數(shù)據(jù)會被沖掉8位緩沖寄存器送內(nèi)存9.6Kb/s(b)中斷CPU的頻率降低為9.6Kb/88位緩沖寄存器9.6Kb/s送內(nèi)存(c)每800s中斷一次CPU單緩沖區(qū)和雙緩沖區(qū)
單緩沖區(qū)(SingleBuffer)
在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請求時,操作系統(tǒng)便在主存中為之分配一緩沖區(qū)每當(dāng)一用戶進(jìn)程發(fā)出一I/O請求時,OS便在主存中為之分配一緩沖區(qū)。在塊設(shè)備輸入時,先從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū),再由OS將緩沖區(qū)的數(shù)據(jù)送用戶區(qū),然后便是CPU對這一塊數(shù)據(jù)進(jìn)行計(jì)算。在字符設(shè)備輸入時,緩沖區(qū)用于暫存用戶輸入的一行數(shù)據(jù)。輸入期間,用戶進(jìn)程被掛起以等待一行數(shù)據(jù)輸入完畢;輸出時,用戶進(jìn)程將一行數(shù)據(jù)送入緩沖區(qū)后,繼續(xù)執(zhí)行計(jì)算。當(dāng)用戶進(jìn)程已有第二行數(shù)據(jù)輸出時,若第一行數(shù)據(jù)尚未提取完畢,用戶進(jìn)程應(yīng)阻塞。單緩沖區(qū)和雙緩沖區(qū)
I/O設(shè)備系統(tǒng)單緩沖buf用戶buf用戶進(jìn)程輸入(T)傳送(M)計(jì)算(C)T1M1C1T2M2C2T3M3C3T4t①②③④一個緩沖區(qū),CPU和外設(shè)輪流使用,一方處理完之后接著等待對方處理。C和T可并行,M和C或M和T不能并行,因此處理一塊數(shù)據(jù)時間:Max(C,T)+Mt單緩沖區(qū)和雙緩沖區(qū)
雙緩沖區(qū)(DoubleBuffer)
由于緩沖區(qū)是共享資源,生產(chǎn)者與消費(fèi)者在使用緩沖區(qū)時必須互斥。如果消費(fèi)者尚未取走緩沖區(qū)中的數(shù)據(jù),即使生產(chǎn)者又生產(chǎn)出新的數(shù)據(jù),也無法將它送入緩沖區(qū),生產(chǎn)者等待。如果為生產(chǎn)者與消費(fèi)者設(shè)置了兩個緩沖區(qū),便能解決這一問題。單緩沖區(qū)和雙緩沖區(qū)
工作區(qū)用戶進(jìn)程緩沖區(qū)1緩沖區(qū)2I/O設(shè)備T1T2T3T4M1C1M2C2M3C3M3單緩沖區(qū)和雙緩沖區(qū)
雙緩沖工作方式也稱緩沖對換方式。塊設(shè)備輸入時,先將數(shù)據(jù)輸入第一個緩沖區(qū),裝滿后便轉(zhuǎn)向第二個緩沖區(qū),此時OS可將第一緩沖區(qū)中的數(shù)據(jù)送用戶進(jìn)程區(qū),接著由CPU對數(shù)據(jù)進(jìn)行計(jì)算。設(shè)一塊數(shù)據(jù)從磁盤輸入到緩沖區(qū)所費(fèi)時間為T,CPU對這塊數(shù)據(jù)的計(jì)算時間為C,雙緩沖時,系統(tǒng)處理一塊數(shù)據(jù)的時間可粗略記為max(C,T)。若C<T,可使塊設(shè)備連續(xù)輸入;
若C>T,可使CPU不必等待設(shè)備輸入對于字符設(shè)備,若采用行輸入方式,則在雙緩沖工作方式中,通常用戶進(jìn)程不會被阻塞,即用戶在輸完一行后,在CPU執(zhí)行第一行中的命令時,用戶可繼續(xù)向第二緩沖區(qū)輸入下一行數(shù)據(jù)。單緩沖區(qū)和雙緩沖區(qū)
如果在實(shí)現(xiàn)兩臺機(jī)器通信時,只配置單緩沖,那么在任一時刻只能實(shí)現(xiàn)單方向的數(shù)據(jù)傳輸。為了實(shí)現(xiàn)雙向數(shù)據(jù)傳輸,必須在兩臺機(jī)器中都設(shè)置兩個緩沖區(qū)。分別用在發(fā)送和接收。緩沖區(qū)緩沖區(qū)(a)單緩沖A機(jī)B機(jī)(b)雙緩沖A機(jī)B機(jī)接受緩沖區(qū)接受緩沖區(qū)發(fā)送緩沖區(qū)發(fā)送緩沖區(qū)雙機(jī)通訊時緩沖區(qū)的設(shè)置循環(huán)緩沖區(qū)循環(huán)緩沖的引入
當(dāng)輸入與輸出速度基本匹配時,雙緩沖能獲得較好效果;當(dāng)速度相差較大時,可引入多個(大小相等)緩沖,組織成循環(huán)緩沖的形式
循環(huán)緩沖是把多個緩沖區(qū)連接起來組成兩部分,一部分專門用于輸入,另一部分專門用于輸出的緩沖結(jié)構(gòu)。例如:對于用做輸入的循環(huán)緩沖區(qū),通常提供給輸入進(jìn)程和計(jì)算進(jìn)程使用,輸入進(jìn)程不斷向空緩沖區(qū)中輸入數(shù)據(jù),計(jì)算進(jìn)程則從滿緩沖區(qū)中提取數(shù)據(jù)用于計(jì)算。循環(huán)緩沖區(qū)循環(huán)緩沖的組成1、多個緩沖區(qū):在循環(huán)緩沖中含有多個緩沖區(qū),每個緩沖區(qū)的大小相同。緩沖區(qū)可分成三種類型:空緩沖區(qū)R,用于存放輸入數(shù)據(jù)。已滿緩沖區(qū)G,其中的數(shù)據(jù)提供給計(jì)算進(jìn)程使用?,F(xiàn)行工作緩沖區(qū)C,計(jì)算進(jìn)程正在使用的緩沖區(qū)。2、多個指針:作為輸入的緩沖區(qū)可設(shè)置三個指針:Nextg,指示計(jì)算進(jìn)程下一個可用的緩沖區(qū)G;Nexti,指示輸入進(jìn)程下次可用的空緩沖區(qū)R;Current,指示計(jì)算進(jìn)程正在使用的緩沖區(qū)單元。循環(huán)緩沖區(qū)多個緩沖區(qū)示意圖GGCRGR165423GNextgCNextgCurrentNextiNextiG循環(huán)緩沖區(qū)多個指針示意圖GGCRGR165423CurrentNextiNextg循環(huán)緩沖區(qū)緩沖區(qū)的使用1、Getbuf過程計(jì)算進(jìn)程:要使用緩沖區(qū)中的數(shù)據(jù)時,調(diào)用Getbuf過程。該過程將由指針Nextg所指示的緩沖區(qū)提供給進(jìn)程使用,相應(yīng)地,須把它改為現(xiàn)行工作緩沖區(qū),并令Current指針指向該緩沖區(qū)的第一個單元,同時將Nextg移向下一個G緩沖區(qū)。輸入進(jìn)程:要使用空緩沖區(qū)來裝入數(shù)據(jù)時,也調(diào)用Getbuf過程,由該過程將指針Nexti所指示的緩沖區(qū)提供給輸入進(jìn)程使用,同時將Nexti指針移向下一個R緩沖區(qū)。循環(huán)緩沖區(qū)計(jì)算進(jìn)程P1調(diào)用Getbuf過程RRGGGGNextiNextgCCurrentNextg使用數(shù)據(jù)輸入進(jìn)程P2調(diào)用Getbuf過程使用空緩沖區(qū)NextiR:空緩沖區(qū)G:滿緩沖區(qū)循環(huán)緩沖區(qū)2、Releasebuf過程。計(jì)算進(jìn)程:把C緩沖區(qū)中的數(shù)據(jù)提取完畢時,便調(diào)用Releasebuf過程,將緩沖區(qū)C釋放。此時,把該緩沖區(qū)當(dāng)前(現(xiàn)行)工作緩沖區(qū)C改為空緩沖區(qū)R。輸入進(jìn)程:把緩沖區(qū)裝滿時,也應(yīng)調(diào)用Releasebuf過程,將該緩沖區(qū)釋放,并改為G緩沖區(qū)。循環(huán)緩沖區(qū)計(jì)算進(jìn)程P1調(diào)用Releasebuf過程RRCGGGCurrentRNextg用完數(shù)據(jù)輸入進(jìn)程P2調(diào)用Releasebuf過程輸滿數(shù)據(jù)NextiG循環(huán)緩沖區(qū)進(jìn)程同步
輸入進(jìn)程和計(jì)算進(jìn)程可并發(fā)執(zhí)行,指針Nexti和指針Nextg將不斷地沿順時針方向移動,可能出現(xiàn)兩種情況(1)Nexti指針追趕上Nextg指針。這意味著輸入進(jìn)程輸入數(shù)據(jù)的速度大于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,已把全部可用的空緩沖區(qū)裝滿,無緩沖區(qū)可用。此時,輸入進(jìn)程應(yīng)阻塞,直到計(jì)算進(jìn)程把某個緩沖區(qū)中的數(shù)據(jù)全部提取完,使之成為空緩沖區(qū)R,并調(diào)用Releasebuf過程將它釋放時,才將輸入進(jìn)程喚醒?!到y(tǒng)受計(jì)算限制循環(huán)緩沖區(qū)(2)Nextg指針追趕上Nexti指針。這意味著輸入數(shù)據(jù)的速度低于計(jì)算進(jìn)程處理數(shù)據(jù)的速度,使全部裝有輸入數(shù)據(jù)的緩沖區(qū)都被抽空,再無裝有數(shù)據(jù)的緩沖區(qū)供計(jì)算進(jìn)程提取數(shù)據(jù)。這時,計(jì)算進(jìn)程只能阻塞,直至輸入進(jìn)程又裝滿某個緩沖區(qū),并調(diào)用Releasebuf過程將它釋放時,才去喚醒計(jì)算進(jìn)程。——系統(tǒng)受I/O限制。循環(huán)緩沖區(qū)RRRGGGGNextiGGNextg輸入進(jìn)程GGGRRRRNextgRRNexti計(jì)算進(jìn)程緩沖池(BufferPool)問題:循環(huán)緩沖僅適用于某特定的I/O進(jìn)程和計(jì)算進(jìn)程,屬于專用緩沖。當(dāng)系統(tǒng)較大時,會有很多這樣的循環(huán)緩沖,不僅消耗大量內(nèi)存,而且利用率也不高。
解決:公用緩沖池——池中緩沖區(qū)可供多個進(jìn)程共享緩沖池(BufferPool)緩沖池的組成
緩沖池管理著多個緩沖區(qū),每個緩沖區(qū)由用于標(biāo)識和管理的緩沖首部以及用于存放數(shù)據(jù)的緩沖體兩部分組成。緩沖首部一般包括緩沖區(qū)號、設(shè)備號、設(shè)備上的數(shù)據(jù)塊號、同步信號量以及隊(duì)列鏈接指針等。為了管理上的方便,一般將緩沖池中具有相同類型的緩沖區(qū)鏈接成一個隊(duì)列,于是可形成以下三個隊(duì)列:
(1)空白緩沖隊(duì)列emq。
(2)輸入隊(duì)列inq。
(3)輸出隊(duì)列outq。緩沖池(BufferPool)(1)空緩沖隊(duì)列emq。
由空緩沖區(qū)所鏈成,其對首指針F(emq)和隊(duì)尾指針L(emq)分別指向隊(duì)列的首緩沖區(qū)和尾緩沖區(qū)。(2)輸入隊(duì)列inq。
由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成的隊(duì)列。其對首指針F(inq)和隊(duì)尾指針L(inq)分別指向隊(duì)列的首、尾緩沖區(qū)。(3)輸出隊(duì)列outq。
由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈成的隊(duì)列。其對首指針F(outq)和隊(duì)尾指針L(outq)分別指向隊(duì)列的首、尾緩沖區(qū)。緩沖池(BufferPool)L(emq)14121063F(emq)L(inq)084F(inq)L(outq)151372F(outq)三個隊(duì)列緩沖池(BufferPool)還應(yīng)具有四種工作緩沖區(qū):
(1)用于收容輸入數(shù)據(jù)的工作緩沖區(qū);(2)用于提取輸入數(shù)據(jù)的工作緩沖區(qū);(3)收容輸出數(shù)據(jù)的工作緩沖區(qū);(4)提取輸出數(shù)據(jù)的工作緩沖區(qū)。緩沖池(BufferPool)Getbuf過程和Putbuf過程Getbuf(type),type:隊(duì)列類型Putbuf(type,number),number:緩沖區(qū)編號隊(duì)列操作過程第一個是Addbuf(type,number)過程。該過程用于將由參數(shù)number所指示的緩沖區(qū)B掛在type隊(duì)列上。第二個是Takebuf(type)過程。它用于從type所指示的隊(duì)列的隊(duì)首摘下一個緩沖區(qū)。緩沖池(BufferPool)ProcedureGetbuf(type)beginWait(RS(type));Wait(MS(type));B(number):=Takebuf(type);
//從隊(duì)首摘下一個緩沖區(qū)
Signal(MS(type));end
ProcedurePutbuf(type,number)beginWait(MS(type));Addbuf(type,number);//將指定緩沖區(qū)掛在type隊(duì)列上
Signal(MS(type));Signal(RS(type));end緩沖池(BufferPool)緩沖區(qū)的四種工作方式收容輸入:收容輸入設(shè)備的輸入數(shù)據(jù)提取輸入:計(jì)算進(jìn)程提取緩沖區(qū)中的數(shù)據(jù)使用收容輸出:計(jì)算進(jìn)程輸出結(jié)果數(shù)據(jù)到緩沖區(qū)提取輸出:輸出設(shè)備提取緩沖區(qū)中的數(shù)據(jù)緩沖池收容輸入提取輸入提取輸出收容輸出hinsinsouthout用戶程序Getbuf(inq)Putbuf(emq,sin)Getbuf(outq)Putbuf(emq,sout)Getbuf(emq)Putbuf(outq,hout)Getbuf(emq)Putbuf(inq,hin)147緩沖池(BufferPool)148L(emq)14121063F(emq)L(inq)084F(inq)L(outq)151372F(outq)三個隊(duì)列hinL(emq)1412106F(emq)輸入完成后L(inq)084F(inq)3收容輸入過程緩沖池(BufferPool)149L(emq)1412106F(emq)L(outq)151372F(outq)三個隊(duì)列提取輸入過程提取完之后L(inq)08F(inq)3sinL(inq)084F(inq)3L(emq)1412106F(emq)4緩沖池(BufferPool)150輸出完成后houtL(inq)08F(inq)3L(emq)1412106F(emq)4L(outq)151372F(outq)8收容輸出過程L(emq)141210F(emq)4L(outq)15137F(outq)86緩沖池(BufferPool)151提取輸出過程輸出完成之后L(inq)08F(inq)3soutL(emq)141210F(emq)4L(outq)15137F(outq)86L(outq)1513F(outq)86L(emq)141210F(emq)47磁盤的驅(qū)動調(diào)度08磁盤性能簡述
磁盤設(shè)備是一種相當(dāng)復(fù)雜的機(jī)電設(shè)備,在此僅對磁盤的某些性能,如數(shù)據(jù)的組織、磁盤的類型和訪問時間等方面做扼要的闡述。數(shù)據(jù)的組織和格式
磁盤設(shè)備可包括一個或多個物理盤片,每個磁盤片分一個或兩個存儲面(Surface),每個盤面上有若干個磁道(Track),磁道之間留有必要的間隙(Gap)。為使處理簡單起見,在每條磁道上可存儲相同數(shù)目的二進(jìn)制位。磁盤性能簡述
磁盤性能簡述
為了在磁盤上存儲數(shù)據(jù),必須先將磁盤低級格式化。磁盤分區(qū)每個分區(qū)就是一個獨(dú)立的邏輯磁盤。每個分區(qū)的起始扇區(qū)和大小記錄在磁盤0扇區(qū)的主引導(dǎo)記錄分區(qū)表所包含的分區(qū)表中。磁盤高級格式化一個引導(dǎo)塊、空閑存儲管理、根目錄一個空文件系統(tǒng)必須有一個分區(qū)標(biāo)記成活動的,并標(biāo)記其使用的文件系統(tǒng)。磁盤性能簡述
圖中示出了一種溫盤(溫切斯特盤)中一條磁道格式化的情況。每條磁道含有30個固定大小的扇區(qū),每個扇區(qū)容量為600個字節(jié),其中512個字節(jié)存放數(shù)據(jù),其余的用于存放控制信息。每個扇區(qū)包括兩個字段:(1)標(biāo)識符字段,其中一個字節(jié)的SYNCH具有特定的位圖像,作為該字段的定界符,利用磁道號、磁頭號及扇區(qū)號三者來標(biāo)識一個扇區(qū);CRC字段用于段校驗(yàn)。(2)數(shù)據(jù)字段,其中可存放512個字節(jié)的數(shù)據(jù)。磁盤性能簡述
2.磁盤的類型
對于磁盤,可以從不同的角度進(jìn)行分類。最常見的有:將磁盤分成硬盤和軟盤、單片盤和多片盤、固定頭磁盤和活動頭(移動頭)磁盤等。下面僅對固定頭磁盤和移動頭磁盤做些介紹。固定頭磁盤。移動頭磁盤。磁盤性能簡述
固定頭磁盤
這種磁盤在每條磁道上都有一讀/寫磁頭,所有的磁頭都被裝在一剛性磁臂中。通過這些磁頭可訪問所有各磁道,并進(jìn)行并行讀/寫,有效地提高了磁盤的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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年定制櫥柜項(xiàng)目立項(xiàng)申請報告
- 2025年毛細(xì)管電泳儀項(xiàng)目提案報告
- 2024年精裝修修護(hù)工程協(xié)議樣本版B版
- 金色的魚鉤讀書心得模板10篇
- 安全生產(chǎn)演講稿范文10篇
- 做銷售的實(shí)習(xí)報告3篇
- 銷售提成方案模板匯編5篇
- 2024年五年級數(shù)學(xué)上冊 四 可能性 1簡單隨機(jī)現(xiàn)象和等可能性教學(xué)實(shí)錄 冀教版
- 活動策劃書(15篇)
- 2024-2025學(xué)年新教材高中地理 第三章 大氣的運(yùn)動 第二節(jié) 氣壓帶和風(fēng)帶教學(xué)實(shí)錄 新人教版選修1
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期1月期末英語試題
- 2024年中國eVTOL產(chǎn)業(yè)(低空經(jīng)濟(jì))發(fā)展報告
- 2024-2030年國內(nèi)醫(yī)用診斷顯示器行業(yè)市場深度分析及發(fā)展前景及投資機(jī)會研究報告
- 電化學(xué)儲能電站安全規(guī)程
- 臨床試驗(yàn)觀察表(CRF)
- 2024年江蘇宿遷永澤福壽園殯葬服務(wù)有限公司招聘筆試參考題庫含答案解析
- 2022年汕頭市中小學(xué)教學(xué)研究中心招聘專職教研員考試試卷及答案解析
- 鐵路職業(yè)規(guī)劃
- 審計(jì)常用法規(guī)培訓(xùn)課件
- 海洋技術(shù)與海洋裝備發(fā)展
- 2023-2024學(xué)年天津市河西區(qū)六年級上期末數(shù)學(xué)試卷附答案解析
評論
0/150
提交評論