【計(jì)算機(jī)操作系統(tǒng)】設(shè)備管理_第1頁(yè)
【計(jì)算機(jī)操作系統(tǒng)】設(shè)備管理_第2頁(yè)
【計(jì)算機(jī)操作系統(tǒng)】設(shè)備管理_第3頁(yè)
【計(jì)算機(jī)操作系統(tǒng)】設(shè)備管理_第4頁(yè)
【計(jì)算機(jī)操作系統(tǒng)】設(shè)備管理_第5頁(yè)
已閱讀5頁(yè),還剩144頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章設(shè)備管理11、概述設(shè)備的分類設(shè)備管理的目標(biāo)設(shè)備管理的功能和任務(wù)設(shè)備管理數(shù)據(jù)結(jié)構(gòu)2設(shè)備的分類〔1〕按傳輸速率分低速設(shè)備:每秒幾個(gè)到數(shù)百字節(jié)。如Modem中速設(shè)備:每秒數(shù)千到數(shù)萬(wàn)字節(jié)。如打印機(jī)高速設(shè)備:每秒數(shù)百K到數(shù)兆。如磁盤、磁帶3設(shè)備的分類〔續(xù)〕〔2〕按信息交換的單位分類字符設(shè)備:I/O傳輸?shù)膯挝皇亲止?jié),如打印機(jī)、modem等。特征:速率較低、中斷驅(qū)動(dòng)。塊設(shè)備:I/O傳輸?shù)膯挝皇菈K,如磁盤、磁帶。特征:速率高〔幾兆〕、可隨機(jī)訪問(wèn)任一塊、DMA方式驅(qū)動(dòng)。4

〔3〕按資源管理方式分類獨(dú)占型設(shè)備:在任一段時(shí)間內(nèi)最多有一個(gè)進(jìn)程占用它,字符設(shè)備及磁帶機(jī)屬獨(dú)占型設(shè)備。即臨界資源。共享型設(shè)備:多個(gè)進(jìn)程對(duì)它的訪問(wèn)可以交叉進(jìn)行,除磁帶機(jī)外的塊設(shè)備屬共享設(shè)備虛擬設(shè)備:在一類設(shè)備上模擬另一類設(shè)備,常用共享設(shè)備模擬獨(dú)占設(shè)備,用高速設(shè)備模擬低速設(shè)備,被模擬的設(shè)備稱為虛擬設(shè)備設(shè)備的分類〔續(xù)〕5設(shè)備管理的目標(biāo)〔1〕設(shè)備獨(dú)立性所謂設(shè)備獨(dú)立性:用戶在編制程序時(shí),使用邏輯設(shè)備名,由系統(tǒng)實(shí)現(xiàn)從邏輯設(shè)備到物理設(shè)備〔實(shí)際設(shè)備〕的轉(zhuǎn)換。用戶能獨(dú)立于具體物理設(shè)備而方便的使用設(shè)備。6兩種類型的設(shè)備獨(dú)立性類型1:獨(dú)立于同一類設(shè)備中的某臺(tái)具體設(shè)備。如果一個(gè)系統(tǒng)中有假設(shè)干臺(tái)相同的設(shè)備,用戶編程時(shí)不指定使用哪一個(gè)具體的設(shè)備,而僅說(shuō)明要使用哪一類設(shè)備,系統(tǒng)根據(jù)當(dāng)前這一類設(shè)備的具體狀況給用戶分配一臺(tái)具體的設(shè)備。用戶不用關(guān)心他所使用的到底是哪一臺(tái)設(shè)備。7兩種類型的設(shè)備獨(dú)立性〔續(xù)〕類型2:獨(dú)立于不同類型的設(shè)備。例如有一程序要求輸入信息,可以從各種不同類型的輸入設(shè)備上給程序輸入數(shù)據(jù),那么稱該程序是獨(dú)立于不同類型的輸入設(shè)備的。又如在MS-DOS系統(tǒng)中,程序的I/O操作不必指出在哪臺(tái)設(shè)備上進(jìn)行,一般情況下是從鍵盤上輸入數(shù)據(jù),而在顯示器上輸出數(shù)據(jù)。但用戶可以做一次聯(lián)機(jī)操作命令Ctrl+P,那么輸出數(shù)據(jù)可以在打印機(jī)上打印出來(lái)。8設(shè)備管理的目標(biāo)〔續(xù)〕9設(shè)備管理的目標(biāo)〔續(xù)〕〔3〕設(shè)備的統(tǒng)一管理外設(shè)的種類繁多,特性各異,主要差異反映在以下幾個(gè)方面:速度:不同的設(shè)備處理和傳遞信息的速度差異甚大,如鍵盤每秒鐘只能處理幾個(gè)或幾十個(gè)字符,而磁盤的處理速度可達(dá)幾十MB/S。傳遞單位:有的設(shè)備以字符為單位傳遞信息,如鍵盤。有的以字符塊為單位傳遞信息,如磁盤。10設(shè)備的統(tǒng)一管理操作方法和特性:各種設(shè)備都有自己的特性和操作方法,如卡片機(jī)中的卡片不能倒退,磁帶機(jī)可反繞,磁盤可隨機(jī)存取。出錯(cuò)條件:各種設(shè)備的出錯(cuò)條件不同,有的可能產(chǎn)生奇偶錯(cuò),打印機(jī)可能產(chǎn)生無(wú)紙錯(cuò)等。11設(shè)備的統(tǒng)一管理的優(yōu)點(diǎn)設(shè)備管理程序力圖隱蔽上述各種設(shè)備的差異,向用戶提供統(tǒng)一的設(shè)備使用接口,這會(huì)給系統(tǒng)的設(shè)計(jì)帶來(lái)困難,但方便了用戶。如UNIX系統(tǒng)把外設(shè)作為特別文件處理,把設(shè)備看作文件,用操作文件的方法來(lái)操作設(shè)備,這極大地方便了用戶。這種設(shè)備管理方法無(wú)疑是個(gè)重大的突破。12設(shè)備管理的任務(wù)設(shè)備管理是對(duì)計(jì)算機(jī)輸入輸出系統(tǒng)的管理,是操作系統(tǒng)中最具多樣性和復(fù)雜性的局部。其主要任務(wù)是:選擇和分配輸入輸出設(shè)備以進(jìn)行數(shù)據(jù)傳輸操作;控制輸入輸出設(shè)備和CPU〔或內(nèi)存〕之間交換數(shù)據(jù);為用戶提供友好的透明接口,把用戶和設(shè)備硬件特性分開(kāi),使得用戶在編制應(yīng)用程序時(shí)不必涉及具體設(shè)備,系統(tǒng)按用戶要求控制設(shè)備工作。提高設(shè)備和設(shè)備之間、CPU和設(shè)備之間,以及進(jìn)程和進(jìn)程之間的并行操作度,以使操作系統(tǒng)獲得最正確效率。13設(shè)備管理的功能為了完成上述主要任務(wù),設(shè)備管理程序一般要提供下述功能:提供和進(jìn)程管理系統(tǒng)的接口。進(jìn)行設(shè)備分配。按照設(shè)備類型和相應(yīng)的分配算法把設(shè)備和其他有關(guān)的硬件分配給請(qǐng)求該設(shè)備的進(jìn)程,并把未分配到所請(qǐng)求設(shè)備或其他有關(guān)硬件的進(jìn)程放入等待隊(duì)列。實(shí)現(xiàn)設(shè)備和設(shè)備、設(shè)備和CPU等之間的并行操作。進(jìn)行緩沖區(qū)管理。14設(shè)備管理數(shù)據(jù)結(jié)構(gòu)〔1〕〔1〕設(shè)備控制表DCT(DeviceControlTable)設(shè)備控制表DCT反映設(shè)備的特性、設(shè)備和I/O控制器的連接情況。包括設(shè)備標(biāo)識(shí)、使用狀態(tài)和等待使用該設(shè)備的進(jìn)程隊(duì)列等。系統(tǒng)中每個(gè)設(shè)備都必須有一張DCT,且在系統(tǒng)生成時(shí)或在該設(shè)備和系統(tǒng)連接時(shí)創(chuàng)立,但表中的內(nèi)容那么根據(jù)系統(tǒng)執(zhí)行情況而被動(dòng)態(tài)地修改。DCT包括以下內(nèi)容:設(shè)備標(biāo)識(shí)符,設(shè)備標(biāo)識(shí)符用來(lái)區(qū)別設(shè)備。設(shè)備類型,反映設(shè)備的特性,例如是終端設(shè)備、塊設(shè)備或字符設(shè)備等。15設(shè)備管理數(shù)據(jù)結(jié)構(gòu)〔續(xù)〕設(shè)備地址或設(shè)備號(hào),由計(jì)算機(jī)原理課可知,每個(gè)設(shè)備都有相應(yīng)的地址或設(shè)備號(hào)。這個(gè)地址既可以是和內(nèi)存統(tǒng)一編址的,也可以是單獨(dú)編址的。設(shè)備狀態(tài),指設(shè)備是處理工作還是空閑中。等待隊(duì)列指針,等待使用該設(shè)備的進(jìn)程組成等待隊(duì)列,其隊(duì)首和隊(duì)尾指針存放在DCT中。I/O控制器指針,該指針指向該設(shè)備相連接的I/O控制器。16設(shè)備管理數(shù)據(jù)結(jié)構(gòu)〔2〕〔2〕系統(tǒng)設(shè)備表SDT(SystemDeviceTable)系統(tǒng)設(shè)備表SDT整個(gè)系統(tǒng)一張,它記錄已被連接到系統(tǒng)中的所有物理設(shè)備的情況,并為每個(gè)物理設(shè)備設(shè)一表項(xiàng)。SDT的每個(gè)表項(xiàng)包括的內(nèi)容有:DCT指針,該指針指向有關(guān)設(shè)備的設(shè)備控制表。正在使用設(shè)備的進(jìn)程標(biāo)識(shí)。設(shè)備類型和設(shè)備標(biāo)識(shí)符,該項(xiàng)的意義與DCT中的相同。SDT的主要意義在于反映系統(tǒng)中設(shè)備資源的狀態(tài),即系統(tǒng)中有多少設(shè)備,有多少是空閑的,而又有多少已分配給了哪些進(jìn)程。17設(shè)備管理數(shù)據(jù)結(jié)構(gòu)〔3〕〔3〕控制器表COCT(COntrolerControlTable)COCT也是每個(gè)控制器一張,它反映I/O控制器的使用狀態(tài)以及和通道的連接情況等(在DMA方式時(shí),該項(xiàng)是沒(méi)有的)。18設(shè)備管理數(shù)據(jù)結(jié)構(gòu)〔4〕〔4〕通道控制表CHCT(CHannelControlTable)該表只在通道控制方式的系統(tǒng)中存在,也是每個(gè)通道一張。CHCT包括通道標(biāo)識(shí)符、通道忙/閑標(biāo)識(shí)、等待獲得該通道的進(jìn)程等待隊(duì)列的隊(duì)首指針與隊(duì)尾指針等SDT,DCT,COCT及CHCT如下頁(yè)圖所示。顯然,一個(gè)進(jìn)程只有獲得了通道、控制器和所需設(shè)備三者之后,才具備了進(jìn)行I/O操作的物理?xiàng)l件。19設(shè)備管理數(shù)據(jù)結(jié)構(gòu)表202、I/O控制方式循環(huán)測(cè)試I/O方式I/O中斷方式DMA方式通道方式21循環(huán)測(cè)試I/O方式早期,I/O控制器是OS同硬件之間的接口。它有兩個(gè)存放器:數(shù)據(jù)緩沖存放器、控制存放器??刂拼娣牌饔袔讉€(gè)重要的信息位:?jiǎn)?dòng)位、完成位、忙位。CPU外部設(shè)備控制邏輯電路控制寄存器I/O控制器數(shù)據(jù)寄存器22循環(huán)測(cè)試I/O方式工作過(guò)程以輸入為例把啟動(dòng)位置1反復(fù)測(cè)試完成位,為0轉(zhuǎn)2,為1轉(zhuǎn)3把數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)中讀走。

浪費(fèi)大量CPU時(shí)間23I/O中斷方式I/O控制器能發(fā)中斷工作過(guò)程:把啟動(dòng)位置1,本進(jìn)程〔A〕變?yōu)榈却隣顟B(tài),轉(zhuǎn)進(jìn)程調(diào)度,調(diào)度另一進(jìn)程B。輸入完成時(shí),控制器發(fā)出中斷,中斷B,通過(guò)中斷進(jìn)入中斷處理程序。在中斷處理程序中把數(shù)據(jù)緩沖存放器中的數(shù)取走,放入內(nèi)存特定位置M,喚醒等待進(jìn)程A,中斷返回到B的斷點(diǎn)繼續(xù)執(zhí)行。在以后的某個(gè)時(shí)刻OS調(diào)度要求輸入的進(jìn)程A。A從M取數(shù)處理。24分析同前相比,CPU利用率大大提高。缺點(diǎn):每臺(tái)設(shè)備每輸入輸出一個(gè)字節(jié)的數(shù)據(jù)都有一次中斷。如果設(shè)備較多時(shí),中斷次數(shù)會(huì)很多,使CPU的計(jì)算時(shí)間大大減少。為減少中斷對(duì)CPU造成的負(fù)擔(dān),可采用DMA方式和通道方式。25DMA方式控制器功能更強(qiáng),除有中斷功能外,還有一個(gè)DMA控制機(jī)構(gòu)。在DMA控制器的控制下,設(shè)備同主存之間可成批交換數(shù)據(jù),不用CPU干預(yù)。26DMA方式工作過(guò)程當(dāng)進(jìn)程要求輸入時(shí),把要求傳送的內(nèi)存始址〔M〕和要傳的字節(jié)數(shù)送入DMA的內(nèi)存地址存放器和傳送字?jǐn)?shù)存放器把啟動(dòng)位置1。設(shè)備開(kāi)始工作。進(jìn)程〔A〕掛起。調(diào)度另一進(jìn)程〔B〕一批數(shù)據(jù)輸入完成后,DMA中斷B,轉(zhuǎn)向中斷處理程序。中斷處理程序喚醒A,返回B的斷點(diǎn)繼續(xù)執(zhí)行。以后OS調(diào)度A運(yùn)行時(shí),A從M處取數(shù)據(jù)處理。27DMA方式與中斷的主要區(qū)別中斷方式是在數(shù)據(jù)緩沖存放區(qū)滿后,發(fā)中斷請(qǐng)求,CPU進(jìn)行中斷處理。DMA方式那么是在所要求傳送的數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求CPU進(jìn)行中斷處理,大大減少了CPU進(jìn)行中斷處理的次數(shù)。中斷方式的數(shù)據(jù)傳送是由CPU控制完成的。DMA方式那么是在DMA控制器的控制下不經(jīng)過(guò)CPU控制完成的。28CPU向控制器發(fā)出啟動(dòng)DMA通知和有關(guān)參數(shù)控制器向內(nèi)存發(fā)出詢問(wèn)請(qǐng)求訪問(wèn)內(nèi)存〔讀、寫〕計(jì)數(shù)器減1結(jié)束否發(fā)中斷NYDMA的實(shí)現(xiàn)流程29通道方式I/O系統(tǒng)結(jié)構(gòu) 在大型計(jì)算機(jī)系統(tǒng)中較為典型的I/O系統(tǒng)結(jié)構(gòu)是主機(jī)、通道、控制器和外部設(shè)備。30I/O系統(tǒng)結(jié)構(gòu)外部設(shè)備通常由機(jī)械的和電子的兩局部組成,電子局部構(gòu)成控制器,也叫適配器。一個(gè)控制器可交替地控制幾臺(tái)同類設(shè)備,例如一個(gè)磁盤控制器可以控制兩臺(tái)磁盤驅(qū)動(dòng)器。在沒(méi)有通道的計(jì)算機(jī)系統(tǒng)中,中央處理機(jī)是通過(guò)控制器控制I/O操作的。31通道概念為使中央處理機(jī)從繁忙的I/O處理中擺脫出來(lái),現(xiàn)代大、中型計(jì)算機(jī)系統(tǒng)中設(shè)置了專門的處理I/O操作的處理機(jī),并把這種處理機(jī)稱為通道。通道在CPU的控制下獨(dú)立地執(zhí)行通道程序,對(duì)外部設(shè)備的I/O操作進(jìn)行控制,以實(shí)現(xiàn)內(nèi)存與外設(shè)之間成批的數(shù)據(jù)交換。通道=I/O處理機(jī)32通道方式當(dāng)完成CPU交給的任務(wù)后,向CPU發(fā)出中斷信號(hào),請(qǐng)求CPU的處理。這樣就使得CPU根本上擺脫了I/O操作的處理工作,提高了CPU與設(shè)備之間的并行程序,從而提高了整個(gè)計(jì)算機(jī)系統(tǒng)的效率。通道程序是由通道指令組成,一個(gè)通道可以分時(shí)的方式執(zhí)行幾道程序。每道程序控制一臺(tái)外部設(shè)備,因此每道通道程序稱為子通道。33通道的種類〔1〕字節(jié)多路通道:字節(jié)多路通道是以字節(jié)為根本傳輸單位,當(dāng)一子通道控制的某臺(tái)外設(shè)交換了一個(gè)字節(jié)后,就轉(zhuǎn)向下一個(gè)子通道,以控制下一臺(tái)設(shè)備傳送一個(gè)字節(jié)。這就實(shí)現(xiàn)了子通道的循環(huán)輪轉(zhuǎn),以到達(dá)多路控制的目的,字節(jié)多路通道主要用來(lái)控制低速、并且以字節(jié)為根本傳送單位的設(shè)備。如打印機(jī)。3435通道的種類〔2〕選擇通道:這種通道一次執(zhí)行一個(gè)通道程序,控制一臺(tái)設(shè)備連續(xù)地傳送一批數(shù)據(jù),當(dāng)一個(gè)程序執(zhí)行完后,才轉(zhuǎn)向下一個(gè)程序。優(yōu)點(diǎn):傳輸速度高。缺點(diǎn):一次只能控制一臺(tái)設(shè)備進(jìn)行I/O操作。它主要用來(lái)控制高速外設(shè)。如磁盤。36選擇通道工作原理選擇通道37

數(shù)組多路通道:這種通道是上述兩種通道的折中,可以分時(shí)的方式執(zhí)行多道程序,每道程序可傳送一組數(shù)據(jù)。它主要用于中速設(shè)備的控制。如磁帶機(jī)。在一大型系統(tǒng)中可以同時(shí)存在這三種類型的通道以便控制各種不同類型的設(shè)備。通道的種類〔3〕38通道指令和通道程序通道有它自己的指令系統(tǒng),用這些指令編寫的程序叫通道程序,通道只能執(zhí)行通道程序,不可能執(zhí)行用戶進(jìn)程。

通道程序保存在內(nèi)存中39通道的工作過(guò)程某進(jìn)程在運(yùn)行過(guò)程中,假設(shè)提出了I/O請(qǐng)求,那么通過(guò)系統(tǒng)調(diào)用進(jìn)入操作系統(tǒng),系統(tǒng)首先為I/O操作分配通道和外設(shè),然后按I/O請(qǐng)求生成通道程序并存入內(nèi)存,把起始地址送入通道的首地址存放器〔CAW〕,接著CPU發(fā)出啟動(dòng)通道的指令。中央處理機(jī)啟動(dòng)通道后,通道的工作過(guò)程為:根據(jù)CAW,從內(nèi)存取出通道指令,送入通道控制字存放器〔CCW〕,并修改CAW,使其指向下一條通道指令。執(zhí)行CCW中的通道指令,進(jìn)行實(shí)際的I/O操作,執(zhí)行完畢后,如果還有下一條指令,那么返回前一步,否那么轉(zhuǎn)下一步。發(fā)出中斷信號(hào)通知CPU通道程序已執(zhí)行完成。40通道的開(kāi)展41424344單緩沖雙緩沖環(huán)形緩沖緩沖池45最簡(jiǎn)單的一種緩沖形式。當(dāng)進(jìn)程發(fā)出一I/O請(qǐng)求時(shí),OS為之分配一緩沖區(qū)。對(duì)于輸入:設(shè)備先將數(shù)據(jù)送入緩沖區(qū),OS再將數(shù)據(jù)傳給進(jìn)程。對(duì)于輸出:進(jìn)程先將數(shù)據(jù)傳入緩沖區(qū),OS再將數(shù)據(jù)送出到設(shè)備。46思考單緩沖能加快進(jìn)程的執(zhí)行速度嗎?4748495051IN指向可接收數(shù)據(jù)的空閑緩沖區(qū)的首址,OUT指針指向裝好數(shù)據(jù)且未取走的緩沖區(qū)首址。系統(tǒng)初啟時(shí),指針被初始化為IN和OUT與首指針START相等,即START=IN=OUT。對(duì)于輸入信息而言,設(shè)備接收信息時(shí),信息輸入到IN指向的緩沖區(qū),當(dāng)一個(gè)緩沖區(qū)裝滿后,IN指針指向下一個(gè)空閑緩沖區(qū)。當(dāng)從緩沖區(qū)中提取信息時(shí),提取由OUT指向的緩沖區(qū)中的信息,提取完畢,將OUT指針指向下一個(gè)裝滿信息的緩沖區(qū)。52系統(tǒng)必須考慮到這種方案的約束條件,即IN<>OUT(初始狀態(tài)除外)。從設(shè)備輸入信息的操作和提取信息的操作共用環(huán)形緩沖時(shí)有一定的同步關(guān)系:OUT<IN。當(dāng)OUT到達(dá)IN時(shí),處理數(shù)據(jù)的進(jìn)程必等待。由于該方案是個(gè)環(huán)形鏈;故當(dāng)IN指針到達(dá)最后一個(gè)緩沖區(qū)時(shí),它將指向START指當(dāng)IN到達(dá)OUT時(shí),從設(shè)備輸入信息的操作也必須等待。

53環(huán)形緩沖區(qū)一般用于特定的進(jìn)程,屬于專用緩沖區(qū),當(dāng)系統(tǒng)較大時(shí),將會(huì)有許多這樣的環(huán)形緩沖區(qū),這不僅要消耗大量的內(nèi)存空間,利用率也不高。為了提高緩沖區(qū)的利用率,目前廣泛流行公用緩沖池,池中的緩沖區(qū)可供多個(gè)進(jìn)程共享。

緩沖池由內(nèi)存中一組大小相等的緩沖區(qū)組成,池中各緩沖區(qū)的大小與用于I/O的設(shè)備的根本信息單位相似,緩沖池屬于系統(tǒng)資源,由系統(tǒng)進(jìn)行管理。緩沖池中各緩沖區(qū)可用于輸出信息,也可用于輸入信息,并可根據(jù)需要組成各種緩沖區(qū)隊(duì)列。54緩沖池的管理〔1〕緩沖池的結(jié)構(gòu)緩沖池由多個(gè)緩沖區(qū)組成。而一個(gè)緩沖區(qū)由兩局部組成:一局部是用來(lái)標(biāo)識(shí)該緩沖器和用于管理的緩沖首部,另一局部是用于存放數(shù)據(jù)的緩沖體。這兩局部有一一對(duì)應(yīng)的映射關(guān)系。對(duì)緩沖池的管理是通過(guò)對(duì)每一個(gè)緩沖器的緩沖首部進(jìn)行操作實(shí)現(xiàn)的。緩沖首部如下圖。它包括設(shè)備號(hào)、設(shè)備上的數(shù)據(jù)塊號(hào)(塊設(shè)備時(shí))、互斥標(biāo)識(shí)位以及緩沖隊(duì)列連接指針和緩沖器號(hào)等。55緩沖池的結(jié)構(gòu)緩沖首部56緩沖區(qū)隊(duì)列系統(tǒng)把各緩沖區(qū)按其使用狀況連成三種隊(duì)列:空白緩沖隊(duì)列em,其隊(duì)首指針為F(em),隊(duì)尾指針為L(zhǎng)(em);裝滿輸入數(shù)據(jù)的輸入緩沖隊(duì)列in,其隊(duì)首指針為F(in),隊(duì)尾指針為L(zhǎng)(in);裝滿輸出數(shù)據(jù)的輸出緩沖隊(duì)列out,其隊(duì)首指針為F(out),隊(duì)尾指針為L(zhǎng)(out)。其隊(duì)列構(gòu)成如下頁(yè)圖所示。57緩沖區(qū)隊(duì)列構(gòu)成58緩沖池的工作緩沖區(qū)除了三種緩沖隊(duì)列之外,系統(tǒng)(或用戶進(jìn)程)從這三種隊(duì)列中申請(qǐng)和取出緩沖區(qū),并用得到的緩沖區(qū)進(jìn)行存數(shù)、取數(shù)操作,在存數(shù)、取數(shù)操作結(jié)束后,再將緩沖區(qū)放入相應(yīng)的隊(duì)列。這些緩沖區(qū)被稱為工作緩沖區(qū)。在緩沖池中,有4種工作緩沖區(qū),即:用于收容設(shè)備輸入數(shù)據(jù)的收容輸入緩沖區(qū)hin;用于提取設(shè)備輸入數(shù)據(jù)的提取輸入緩沖區(qū)sin;用于收容CPU輸出數(shù)據(jù)的收容輸出緩沖區(qū)hout;用于提取CPU輸出數(shù)據(jù)的提取輸出緩沖區(qū)sout。緩沖池的工作緩沖區(qū)如下頁(yè)圖所示。59緩沖池的工作緩沖區(qū)〔續(xù)〕60緩沖池管理對(duì)緩沖池的管理由如下幾個(gè)操作組成:從三種緩沖區(qū)隊(duì)列中按一定的選取規(guī)那么取出一個(gè)緩沖區(qū)的過(guò)程take_buf(type);把緩沖區(qū)按一定的選取規(guī)那么插入相應(yīng)的緩沖區(qū)隊(duì)列的過(guò)程add_buf(type,number);供進(jìn)程申請(qǐng)緩沖區(qū)用的過(guò)程get_buf(type,number);供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊(duì)列的過(guò)程put_buf(type,work_buf)。其中,參數(shù)type表示緩沖隊(duì)列類型,number為緩沖區(qū)號(hào),而work_buf那么表示工作緩沖區(qū)類型。61緩沖池工作過(guò)程使用這幾個(gè)操作,緩沖池的工作過(guò)程可描述如下:首先,輸入進(jìn)程調(diào)用get_buf(em,number)過(guò)程從空白緩沖區(qū)隊(duì)列中取出一個(gè)緩沖號(hào)為number的空白緩沖區(qū),將其作為收容輸入緩沖區(qū)hin,當(dāng)hin中裝滿了由輸入設(shè)備輸入的數(shù)據(jù)之后,系統(tǒng)調(diào)用過(guò)程put_buf(in,hin)將該緩沖區(qū)插入輸入緩沖區(qū)隊(duì)列in中。另外,當(dāng)進(jìn)程需要輸出數(shù)據(jù)時(shí),輸出進(jìn)程經(jīng)過(guò)緩沖管理程序調(diào)用過(guò)程get_buf(em,number)從空白緩沖區(qū)隊(duì)列中取出一個(gè)空白緩沖區(qū)number作為收容輸出緩沖區(qū)hout,待hout中裝滿輸出數(shù)據(jù)之后,系統(tǒng)再調(diào)用過(guò)程put_buf(out,hout)將該緩沖區(qū)插入輸出緩沖區(qū)隊(duì)列out。62緩沖池工作過(guò)程〔續(xù)〕對(duì)緩沖區(qū)的輸入數(shù)據(jù)和輸出數(shù)據(jù)的提取也是由過(guò)程get_buf和put_buf實(shí)現(xiàn)的。get_buf(out,number)從輸出緩沖隊(duì)列中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)number,將其作為sout。當(dāng)sout中數(shù)據(jù)輸出完畢時(shí),系統(tǒng)調(diào)用過(guò)程put_buf(em,sout)將該緩沖區(qū)插入空白緩沖隊(duì)列。而get_buf(in,number)那么從輸入緩沖隊(duì)列中取出一個(gè)裝滿輸入數(shù)據(jù)的緩沖區(qū)number作為輸入緩沖區(qū)sin,當(dāng)CPU從中提取完所需數(shù)據(jù)之后,系統(tǒng)調(diào)用過(guò)程put_buf(em,sin)將該緩沖區(qū)釋放和插入空白緩沖隊(duì)列em中。63輸入get_buf(em,number);取空白number緩沖區(qū)作為hin數(shù)據(jù)由設(shè)備->hinput_buf(in,hin);將hin放入in隊(duì)列——————————————get_buf(in,number);將number作為sinsin->cpuput_buf(em,sin);將sin放入em隊(duì)列64輸出get_buf(em,number);取空白number緩沖區(qū)作為hout;put_buf(out,hout);將hout放入out隊(duì)列——————————————get_buf(out,number);將number作為soutsout->設(shè)備put_buf(em,sout);將sout放入em隊(duì)列65get_buf描述下面給出過(guò)程get_buf和put_buf的描述。首先,設(shè)互斥信號(hào)量S(type),其初值為1。設(shè)描述資源數(shù)目的信號(hào)量RS(type),其初值為n(n為type隊(duì)列長(zhǎng)度)。

get_buf(type,number): begin P(RS(type)) P(S(type)) Pointerofbuffer(number)= take_buf(type,number) V(S(type)) end66put_buf描述put_buf(type,number): begin P(S(type)) add_buf(type,number) V(S(type)) V(RS(type)) end674、設(shè)備分配68設(shè)備分配原那么設(shè)備分配的原那么是根據(jù)設(shè)備特性、用戶要求和系統(tǒng)配置情況決定的。設(shè)備分配的總原那么:充分發(fā)揮設(shè)備的使用效率,盡可能的讓設(shè)備忙;防止由于不合理的分配方法造成進(jìn)程死鎖;把用戶程序和具體物理設(shè)備隔離開(kāi)來(lái),即用戶程序面對(duì)的是邏輯設(shè)備,而分配程序?qū)⒃谙到y(tǒng)把邏輯設(shè)備轉(zhuǎn)換成物理設(shè)備之后,再根據(jù)要求的物理設(shè)備號(hào)進(jìn)行分配如下圖。69設(shè)備分配流程圖70設(shè)備分配方式靜態(tài)分配:在作業(yè)級(jí)進(jìn)行的,當(dāng)一個(gè)作業(yè)運(yùn)行之前由系統(tǒng)一次分配滿足需要的全部設(shè)備,這些設(shè)備一直為該作業(yè)占用,直到作業(yè)撤消。這種分配不會(huì)出現(xiàn)死鎖,但設(shè)備的利用效率較低。71設(shè)備分配方式動(dòng)態(tài)分配在進(jìn)程運(yùn)行的過(guò)程中進(jìn)行的,當(dāng)進(jìn)程需要使用設(shè)備時(shí),通過(guò)系統(tǒng)調(diào)用命令向系統(tǒng)提出設(shè)備請(qǐng)求,系統(tǒng)按一定的分配策略給進(jìn)程分配所需設(shè)備,一旦使用完畢立即釋放。顯然這種分配方式有利于提高設(shè)備的使用效率,但會(huì)出現(xiàn)死鎖,這是應(yīng)力求防止的。72設(shè)備分配算法先請(qǐng)求先效勞優(yōu)先級(jí)高的優(yōu)先效勞73設(shè)備分配算法〔1〕先請(qǐng)求先效勞當(dāng)有多個(gè)進(jìn)程對(duì)某一設(shè)備提出I/O請(qǐng)求時(shí),或者是在同一設(shè)備上進(jìn)行屢次I/O操作時(shí),系統(tǒng)按提出I/O請(qǐng)求的先后順序,將進(jìn)程發(fā)出的I/O請(qǐng)求命令排成隊(duì)列,其隊(duì)首指向被請(qǐng)求設(shè)備的DCT。當(dāng)該設(shè)備空閑時(shí),系統(tǒng)從該設(shè)備的請(qǐng)求隊(duì)列的隊(duì)首取下一個(gè)I/O請(qǐng)求消息,將設(shè)備分配給發(fā)出這個(gè)請(qǐng)求消息的進(jìn)程。74設(shè)備分配算法〔2〕優(yōu)先級(jí)高者先效勞優(yōu)先級(jí)高者指發(fā)出I/O請(qǐng)求命令的進(jìn)程。這種策略和進(jìn)程調(diào)度的優(yōu)先數(shù)法是一致的,即進(jìn)程的優(yōu)先級(jí)高,它的I/O請(qǐng)求也優(yōu)先予以滿足。對(duì)于相同優(yōu)先級(jí)的進(jìn)程來(lái)說(shuō),那么按先請(qǐng)求先效勞策略分配。因此,優(yōu)先級(jí)高者先效勞策略把請(qǐng)求某設(shè)備的I/O請(qǐng)求命令按進(jìn)程的優(yōu)先級(jí)組成隊(duì)列,從而保證在該設(shè)備空閑時(shí),系統(tǒng)能從I/O請(qǐng)求隊(duì)列隊(duì)首取下一個(gè)具有最高優(yōu)先級(jí)進(jìn)程發(fā)來(lái)的I/O請(qǐng)求命令,并將設(shè)備分配給發(fā)出該命令的進(jìn)程。7576獨(dú)占型設(shè)備有行打印機(jī),鍵盤,顯示器。磁帶機(jī)可作為獨(dú)占設(shè)備,也可作為共享設(shè)備。假設(shè)對(duì)這些設(shè)備不采用獨(dú)享分配就會(huì)造成混亂。因此對(duì)獨(dú)占設(shè)備一般采用獨(dú)享分配,即當(dāng)進(jìn)程申請(qǐng)獨(dú)占設(shè)備時(shí),系統(tǒng)把設(shè)備分配給這個(gè)進(jìn)程,直到進(jìn)程釋放設(shè)備。77共享設(shè)備包括磁盤,磁帶和磁鼓。對(duì)這類設(shè)備的分配是采用動(dòng)態(tài)分配的方式進(jìn)行的,當(dāng)一個(gè)進(jìn)程要請(qǐng)求某個(gè)設(shè)備時(shí),系統(tǒng)按照某種算法立即分配相應(yīng)的設(shè)備給請(qǐng)求者,請(qǐng)求者使用完后立即釋放。7879虛擬分配虛擬分配是針對(duì)虛擬設(shè)備而言的。其實(shí)現(xiàn)的過(guò)程是:當(dāng)用戶(或進(jìn)程)申請(qǐng)獨(dú)占設(shè)備時(shí),系統(tǒng)給它分配共享設(shè)備的一局部存儲(chǔ)空間。當(dāng)程序要與設(shè)備交換信息時(shí),系統(tǒng)就把要交換的信息存放在這局部存儲(chǔ)空間。在適當(dāng)?shù)臅r(shí)候再將存儲(chǔ)空間的信息傳輸?shù)较鄳?yīng)的設(shè)備上去處理。如系統(tǒng)打印信息時(shí),就把要打印的信息送到某個(gè)存儲(chǔ)空間中去,然后由系統(tǒng)在適當(dāng)時(shí)機(jī)把存儲(chǔ)空間上的信息送到打印機(jī)上打印出來(lái)。這個(gè)時(shí)機(jī)可能是打印機(jī)空閑或打印機(jī)完成了一用戶的信息輸出之后。通常人們把共享設(shè)備中代替獨(dú)占設(shè)備的那局部存儲(chǔ)空間和相應(yīng)的控制結(jié)構(gòu)稱為虛擬設(shè)備,并把對(duì)這類設(shè)備的分配稱作虛擬分配。80SPOOLing系統(tǒng)SimultaneausPeriphernalOperationsOn-Line(外部設(shè)備同時(shí)聯(lián)機(jī)操作〕。在單道批處理時(shí)期,用脫機(jī)I/O可以提高CPU利用率。多道出現(xiàn)后可以利用一道程序來(lái)模擬脫機(jī)I/O中的衛(wèi)星機(jī),這樣可實(shí)現(xiàn)在主機(jī)控制下的脫機(jī)I/O功能。我們把這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作稱為SPOOLing,也稱為假脫機(jī)操作。81SPOOLing系統(tǒng)的組成輸入井和輸出井輸入緩沖區(qū)和輸出緩沖區(qū)輸入進(jìn)程和輸出進(jìn)程82SPOOLing系統(tǒng)的組成圖83SPOOLing系統(tǒng)工作原理作業(yè)執(zhí)行前預(yù)先將程序和數(shù)據(jù)輸入到輸入井中。作業(yè)運(yùn)行后,使用數(shù)據(jù)時(shí),從輸入井中取出。作業(yè)執(zhí)行不必直接啟動(dòng)外設(shè)輸出數(shù)據(jù),只需將這些數(shù)據(jù)寫入輸出井中。作業(yè)全部運(yùn)行完畢,再由外設(shè)輸出全部數(shù)據(jù)和信息。優(yōu)點(diǎn):實(shí)現(xiàn)了對(duì)作業(yè)輸入、組織調(diào)度和輸出的統(tǒng)一管理使外設(shè)在CPU直接控制下,與CPU并行工作〔假脫機(jī)〕84輸入裝置輸入裝置通道通道輸出裝置輸出裝置通道

主機(jī)系統(tǒng)輸入管輸出管理模塊理模塊外存輸入井輸出井SPOOLing系統(tǒng)工作原理圖85SPOOLing系統(tǒng)的特點(diǎn)提高了I/O速度將獨(dú)占設(shè)備改造為共享設(shè)備實(shí)現(xiàn)了虛擬設(shè)備功能865、I/O進(jìn)程控制I/O控制的引入系統(tǒng)在何時(shí)分配設(shè)備,在何時(shí)申請(qǐng)緩沖,和由哪個(gè)進(jìn)程進(jìn)行中斷響應(yīng)呢?另外,盡管CPU向設(shè)備或通道發(fā)出了啟動(dòng)指令,設(shè)備的啟動(dòng)以及I/O控制器中有關(guān)存放器的值由誰(shuí)來(lái)設(shè)置呢?這些都是前面的討論中沒(méi)有解決的問(wèn)題。從用戶進(jìn)程的輸入輸出請(qǐng)求開(kāi)始,給用戶進(jìn)程分配設(shè)備和啟動(dòng)有關(guān)設(shè)備進(jìn)行I/O操作,以及在I/O操作完成之后響應(yīng)中斷,進(jìn)行善后處理為止的整個(gè)系統(tǒng)控制過(guò)程稱為I/O控制。87I/O控制功能88I/O控制功能分析I/O控制過(guò)程首先收集和分析調(diào)用I/O控制過(guò)程的原因:是外設(shè)來(lái)的中斷請(qǐng)求?還是進(jìn)程來(lái)的I/O請(qǐng)求?然后分別調(diào)用不同的程序模塊進(jìn)行處理。上圖中各子模塊的功能:I/O請(qǐng)求處理是用戶進(jìn)程和設(shè)備管理程序接口的一局部,它把用戶進(jìn)程的I/O請(qǐng)求變換為設(shè)備管理程序所能接受的信息。一般來(lái)說(shuō),用戶的I/O請(qǐng)求包括:所申請(qǐng)進(jìn)行I/O操作的邏輯設(shè)備名、要求的操作、傳送數(shù)據(jù)的長(zhǎng)度和起始地址等。I/O請(qǐng)求處理模塊對(duì)用戶的I/O請(qǐng)求進(jìn)行處理。它首先將I/O請(qǐng)求中的邏輯設(shè)備名轉(zhuǎn)換為對(duì)應(yīng)的物理設(shè)備名;然后,檢查I/O請(qǐng)求命令中是否有參數(shù)錯(cuò)誤;在I/O請(qǐng)求命令參數(shù)正確時(shí),它把該命令插入指向相應(yīng)DCT的I/O請(qǐng)求隊(duì)列;然后啟動(dòng)設(shè)備分配程序。在有通道的系統(tǒng)中,I/O請(qǐng)求處理模塊還將按I/O請(qǐng)求命令的要求編制出通道程序。89I/O控制功能分析〔續(xù)〕在設(shè)備分配程序?yàn)镮/O請(qǐng)求分配了相應(yīng)的設(shè)備、控制器和通道之后,I/O控制模塊還將啟動(dòng)緩沖管理模塊為此次I/O傳送申請(qǐng)必要的緩沖區(qū),以保證I/O傳送的順利完成。緩沖區(qū)的申請(qǐng)也可在設(shè)備分配之前進(jìn)行。例如UNIX系統(tǒng)首先請(qǐng)求緩沖區(qū),然后把I/O請(qǐng)求命令寫到緩沖區(qū)中并將該緩沖區(qū)掛到設(shè)備的I/O請(qǐng)求隊(duì)列上。另外,在數(shù)據(jù)傳送結(jié)束后,外設(shè)發(fā)出中斷請(qǐng)求,I/O控制過(guò)程將調(diào)用中斷處理程序和做出中斷響應(yīng)。對(duì)于不同的中斷,其善后處理不同。例如處理結(jié)束中斷時(shí),要釋放相應(yīng)的設(shè)備、控制器和通道,并喚醒正在等待該操作完成的進(jìn)程。另外,還要檢查是否還有等待該設(shè)備的I/O請(qǐng)求命令。如有,那么要通知I/O控制過(guò)程進(jìn)行下一個(gè)I/O傳送。90I/O控制的實(shí)現(xiàn)I/O控制過(guò)程在系統(tǒng)中可以按三種方式實(shí)現(xiàn):(1)作為請(qǐng)求I/O操作的進(jìn)程的一局部實(shí)現(xiàn)。這種情況下,請(qǐng)求I/O操作的進(jìn)程應(yīng)具有良好的實(shí)時(shí)性,且系統(tǒng)應(yīng)能根據(jù)在中斷信號(hào)的內(nèi)容準(zhǔn)確地調(diào)度到請(qǐng)求所對(duì)應(yīng)I/O操作的進(jìn)程占據(jù)處理機(jī),因?yàn)樵诖蠖鄶?shù)情況下,當(dāng)一個(gè)進(jìn)程發(fā)出I/O請(qǐng)求命令之后,都被阻塞睡眠。91I/O控制的實(shí)現(xiàn)〔續(xù)〕(2)作為當(dāng)前進(jìn)程的一局部實(shí)現(xiàn)。作為當(dāng)前進(jìn)程的一局部實(shí)現(xiàn)時(shí),不要求系統(tǒng)具有高的實(shí)時(shí)性。但由于當(dāng)前進(jìn)程與完成的I/O操作無(wú)關(guān),所以當(dāng)前進(jìn)程不能接受I/O請(qǐng)求命令的啟動(dòng)I/O操作。不過(guò),當(dāng)前進(jìn)程可以在接收到中斷信號(hào)后,將中斷信號(hào)轉(zhuǎn)交給I/O控制模塊處理,因此,如果讓請(qǐng)求I/O操作的進(jìn)程調(diào)用I/O操作控制局部(I/O請(qǐng)求處理、設(shè)備分配、緩沖區(qū)分配等),而讓當(dāng)前進(jìn)程負(fù)責(zé)調(diào)用中斷處理局部也是一種可行的I/O控制方案。92I/O控制的實(shí)現(xiàn)〔續(xù)〕(3)I/O控制由專門的系統(tǒng)進(jìn)程——I/O進(jìn)程完成。在用戶進(jìn)程發(fā)出I/O請(qǐng)求命令之后,系統(tǒng)調(diào)度I/O進(jìn)程執(zhí)行,控制I/O操作。同樣,在外設(shè)發(fā)出中斷請(qǐng)求之后,I/O進(jìn)程也被調(diào)度執(zhí)行以響應(yīng)中斷。I/O請(qǐng)求處理模塊、設(shè)備分配模塊以及緩沖區(qū)管理模塊和中斷原因分析、中斷處理模塊和后述的設(shè)備驅(qū)動(dòng)程序模塊等都是I/O進(jìn)程的一局部。93I/O進(jìn)程的實(shí)現(xiàn)I/O進(jìn)程也可分為三種方式實(shí)現(xiàn)。即:a.每類(個(gè))設(shè)備設(shè)一專門的I/O進(jìn)程,且該進(jìn)程只能在系統(tǒng)態(tài)下執(zhí)行。b.整個(gè)系統(tǒng)設(shè)一I/O進(jìn)程,全面負(fù)責(zé)系統(tǒng)的數(shù)據(jù)傳送工作。又可把I/O進(jìn)程分為輸入進(jìn)程和輸出進(jìn)程。c.每類(個(gè))設(shè)備設(shè)一個(gè)專門的I/O進(jìn)程,但該進(jìn)程既可在用戶態(tài)也可在系統(tǒng)態(tài)下執(zhí)行。946、設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序是驅(qū)動(dòng)物理設(shè)備和DMA控制器或I/O控制器等直接進(jìn)行I/O操作的子程序的集合。負(fù)責(zé)設(shè)置相應(yīng)設(shè)備有關(guān)存放器的值,啟動(dòng)設(shè)備進(jìn)行I/O操作,指定操作的類型和數(shù)據(jù)流向等。為了對(duì)驅(qū)動(dòng)程序進(jìn)行管理,系統(tǒng)中設(shè)置有設(shè)備開(kāi)關(guān)表DST。設(shè)備開(kāi)關(guān)表中給出相應(yīng)設(shè)備的各種操作子程序的入口地址,例如翻開(kāi)、關(guān)閉、讀、寫和啟動(dòng)設(shè)備子程序的入口地址。一般設(shè)備開(kāi)關(guān)表是二維結(jié)構(gòu),其中的行和列分別表示設(shè)備類型和驅(qū)動(dòng)程序類型。設(shè)備開(kāi)關(guān)表也是I/O進(jìn)程的一個(gè)數(shù)據(jù)結(jié)構(gòu)。I/O控制過(guò)程為進(jìn)程分配設(shè)備和緩沖區(qū)之后,可以使用設(shè)備開(kāi)關(guān)表調(diào)用所需的驅(qū)動(dòng)程序進(jìn)行I/O操作。957、磁盤存儲(chǔ)器管理96磁盤概述目前,幾乎所有隨機(jī)存取的文件,都是存放在磁盤上,磁盤I/O速度的上下將直接影響文件系統(tǒng)的性能。硬盤分為兩種:固定頭磁盤:每個(gè)磁道設(shè)置一個(gè)磁頭,變換磁道時(shí)不需要磁頭的機(jī)械移動(dòng),速度快但本錢高。移動(dòng)頭磁盤:一個(gè)盤面只有一個(gè)磁頭,變換磁道時(shí)需要移動(dòng)磁頭,速度慢但本錢低。97柱面扇區(qū)磁臂磁頭側(cè)視圖98磁道扇區(qū)俯視圖99柱面、磁頭、扇區(qū)信息記錄在磁道上,多個(gè)盤片,正反兩面都用來(lái)記錄信息,每面一個(gè)磁頭所有盤面中處于同一磁道號(hào)上的所有磁道組成一個(gè)柱面每個(gè)扇區(qū)大小為512字節(jié)物理地址形式:柱面號(hào) 磁頭號(hào)扇區(qū)號(hào)100典型參數(shù)20G:39813柱面16頭63扇區(qū)60G:28733柱面16頭255扇區(qū)101磁盤的訪問(wèn)過(guò)程由三個(gè)動(dòng)作組成:尋道:磁頭移動(dòng)定位到指定磁道旋轉(zhuǎn)延遲:等待指定扇區(qū)從磁頭下旋轉(zhuǎn)經(jīng)過(guò)數(shù)據(jù)傳輸:數(shù)據(jù)在磁盤與內(nèi)存之間的實(shí)際傳輸102磁盤的訪問(wèn)時(shí)間尋道時(shí)間Ts:大約幾ms到幾十ms旋轉(zhuǎn)延遲時(shí)間Tr:對(duì)于7200轉(zhuǎn)/分,平均延遲時(shí)間為4.2ms數(shù)據(jù)傳輸時(shí)間Tt:目前磁盤的傳輸速度一般有幾十M/s,傳輸一個(gè)扇區(qū)的時(shí)間小于0.05ms103思考要提高磁盤的數(shù)據(jù)訪問(wèn)速度,主要應(yīng)在哪方面下功夫?104分析要提高磁盤的訪問(wèn)速度主要應(yīng)從以下兩方面入手:數(shù)據(jù)的合理組織磁盤的調(diào)度算法105磁盤調(diào)度算法當(dāng)多個(gè)訪盤請(qǐng)求在等待時(shí),采用一定的策略,對(duì)這些請(qǐng)求的效勞順序調(diào)整安排,旨在降低平均磁盤效勞時(shí)間,到達(dá)公平、高效公平:一個(gè)I/O請(qǐng)求在有限時(shí)間內(nèi)滿足高效:減少設(shè)備機(jī)械運(yùn)動(dòng)所帶來(lái)的時(shí)間浪費(fèi)先來(lái)先效勞最短尋道時(shí)間優(yōu)先掃描算法單向掃描調(diào)度算法106按訪問(wèn)請(qǐng)求到達(dá)的先后次序效勞優(yōu)點(diǎn):簡(jiǎn)單,公平;缺點(diǎn):效率不高,相鄰兩次請(qǐng)求可能會(huì)造成最內(nèi)到最外的柱面尋道,使磁頭反復(fù)移動(dòng),增加了效勞時(shí)間,對(duì)機(jī)械也不利先來(lái)先效勞107假設(shè)磁盤訪問(wèn)序列:98,183,37,122,14,124,65,67讀寫頭起始位置:53安排磁頭效勞序列計(jì)算磁頭移動(dòng)總距離〔道數(shù)〕例108圖解98,183,37,122,14,124,65,67磁頭走過(guò)的總道數(shù):640109優(yōu)先選擇距當(dāng)前磁頭最近的訪問(wèn)請(qǐng)求進(jìn)行效勞,主要考慮尋道優(yōu)先優(yōu)點(diǎn):改善了磁盤平均效勞時(shí)間;缺點(diǎn):造成某些訪問(wèn)請(qǐng)求長(zhǎng)期等待得不到效勞最短尋道時(shí)間優(yōu)先110圖解65,67,37,14,98,122,124,183磁頭走過(guò)的總道數(shù):23698,183,37,122,14,124,65,67111克服了最短尋道優(yōu)先的缺點(diǎn),既考慮了距離,同時(shí)又考慮了方向具體做法:當(dāng)設(shè)備無(wú)訪問(wèn)請(qǐng)求時(shí),磁頭不動(dòng);當(dāng)有訪問(wèn)請(qǐng)求時(shí),磁頭按一個(gè)方向移動(dòng),在移動(dòng)過(guò)程中對(duì)遇到的訪問(wèn)請(qǐng)求進(jìn)行效勞,然后判斷該方向上是否還有訪問(wèn)請(qǐng)求,如果有那么繼續(xù)掃描;否那么改變移動(dòng)方向,并為經(jīng)過(guò)的訪問(wèn)請(qǐng)求效勞,如此反復(fù)掃描算法〔電梯算法〕112圖113圖解37,14,65,67,98,122,124,183磁頭走過(guò)的總道數(shù):20898,183,37,122,14,124,65,67114單向掃描調(diào)度算法也稱循環(huán)掃描算法。電梯算法杜絕了饑餓,但當(dāng)請(qǐng)求對(duì)磁道的分布是均勻時(shí),磁頭回頭,近磁頭端的請(qǐng)求很少〔因?yàn)榇蓬^剛經(jīng)過(guò)〕,而遠(yuǎn)端請(qǐng)求較多,這些請(qǐng)求等待時(shí)間要長(zhǎng)一些??偸菑?號(hào)柱面開(kāi)始向里掃描。移動(dòng)臂到達(dá)最后個(gè)一個(gè)柱面后,立即帶動(dòng)讀寫磁頭快速返回到0號(hào)柱面。返回時(shí)不為任何的等待訪問(wèn)者效勞。返回后可再次進(jìn)行掃描。115圖解116調(diào)度算法的選擇實(shí)際系統(tǒng)相當(dāng)普遍采用最短尋道時(shí)間優(yōu)先算法,因?yàn)樗?jiǎn)單有效,性價(jià)比好。掃描算法更適于磁盤負(fù)擔(dān)重的系統(tǒng)。磁盤負(fù)擔(dān)很輕的系統(tǒng)也可以采用先來(lái)先效勞算法。一般要將磁盤調(diào)度算法作為操作系統(tǒng)的單獨(dú)模塊編寫,利于修改和更換。117118文件目錄和文件分配表是文件管理所需的重要數(shù)據(jù)結(jié)構(gòu)。在系統(tǒng)每次啟動(dòng)時(shí)都要進(jìn)行兩份目錄和分配表的檢查。119磁盤外表有少量缺陷時(shí),采取一些補(bǔ)救措施后可繼續(xù)使用。這些措施主要用于防止將數(shù)據(jù)寫入有缺陷的盤塊中。熱修復(fù)重定向系統(tǒng)將一定的磁盤容量〔如2%-3%〕作為熱修復(fù)重定向區(qū)。例如:系統(tǒng)要向第3柱2頭1扇區(qū)寫數(shù)據(jù),但發(fā)現(xiàn)該扇區(qū)是壞的時(shí),便將數(shù)據(jù)寫到熱修復(fù)區(qū)〔如200柱16頭1扇區(qū)〕。以后要讀3柱2頭1扇區(qū)的數(shù)據(jù)時(shí),便從200柱16頭1扇區(qū)中讀。寫后讀校驗(yàn)為了保證所有寫入到磁盤的數(shù)據(jù)都能寫入完好的盤塊中,應(yīng)該在每次寫數(shù)據(jù)時(shí),又立即從磁盤上讀出該塊數(shù)據(jù),并同寫前的數(shù)據(jù)進(jìn)行比照〔校驗(yàn)〕。假設(shè)兩者不一致,那么認(rèn)為盤塊有缺陷,便將該數(shù)據(jù)寫入到熱修復(fù)區(qū)。并對(duì)該壞盤塊進(jìn)行登記。120第一級(jí)容錯(cuò)只能用于防止磁盤外表局部故障造成的數(shù)據(jù)喪失。如果磁盤驅(qū)動(dòng)器或磁盤控制器發(fā)生故障,那么第一級(jí)容錯(cuò)就無(wú)能為力了。包括:磁盤鏡像磁盤雙工121磁盤驅(qū)動(dòng)器故障的容錯(cuò)。在同一磁盤控制器控制下,增設(shè)一個(gè)完全相同的磁盤驅(qū)動(dòng)器。每次將數(shù)據(jù)寫主磁盤時(shí),同時(shí)將數(shù)據(jù)也寫入到備份磁盤。一個(gè)磁盤驅(qū)動(dòng)器發(fā)生故障時(shí),必須立即發(fā)出警告,盡快修復(fù)。磁盤利用率為50%。122磁盤控制器或控制器與CPU之間的通道故障的容錯(cuò)。將兩臺(tái)磁盤驅(qū)動(dòng)器分別接到兩個(gè)磁盤控制器上。兩個(gè)磁盤上的數(shù)據(jù)完全相同。123廉價(jià)磁盤冗余陣列RAID(RedundantArraysofInexpensiveDisk)。由伯克利提出,廣泛用于大中型計(jì)算機(jī)和網(wǎng)絡(luò)中。由一臺(tái)磁盤陣列控制器控制一組磁盤驅(qū)動(dòng)器,組成一個(gè)高度可靠、快速的大容量磁盤系統(tǒng)。并行交叉存取方式:在系統(tǒng)中有多臺(tái)磁盤驅(qū)動(dòng)器〔N〕。存放數(shù)據(jù)時(shí),將數(shù)據(jù)的第一塊放在第一個(gè)磁盤上,第N塊放在第N個(gè)磁盤上。這樣可以并行讀寫,極大地提高了速度。124RAID分級(jí)RAID0—RAID7RAID0提供并行交叉存取〔沒(méi)有冗余能力〕至少兩個(gè)盤。RAID1兩個(gè)盤,并行交叉存取,并把一個(gè)磁盤的數(shù)據(jù)鏡像到另一個(gè)磁盤上。利用率50%。比傳統(tǒng)鏡像盤快。125數(shù)據(jù)0數(shù)據(jù)1的備份CPU磁盤0數(shù)據(jù)1數(shù)據(jù)0的備份磁盤1RAID1圖126RAID3與RAID5RAID3利用一個(gè)校驗(yàn)盤來(lái)完成容錯(cuò)。RAID5無(wú)專門校驗(yàn)盤,校驗(yàn)數(shù)據(jù)分布在多個(gè)盤上。一個(gè)磁盤故障時(shí),控制器可從其他尚存的磁盤上重新恢復(fù)/生成喪失的數(shù)據(jù)而不影響數(shù)據(jù)的可用性。常用于I/O較頻繁的事務(wù)處理。127RAID的優(yōu)點(diǎn)128后備系統(tǒng)容量和平安性考慮,需要后備系統(tǒng)。后備系統(tǒng)的類型磁帶機(jī):最廣泛。硬盤:光盤:很有前途??截惙椒ㄍ耆D(zhuǎn)儲(chǔ):定期將所有文件拷貝到后援存儲(chǔ)器增量轉(zhuǎn)儲(chǔ):只轉(zhuǎn)儲(chǔ)修改正的文件,即兩次備份之間的修改,減少系統(tǒng)開(kāi)銷129文件系統(tǒng)性能的改善文件系統(tǒng)的性能可表現(xiàn)在多個(gè)方面:文件的訪問(wèn)速度數(shù)據(jù)的可共享性文件系統(tǒng)使用的方便性數(shù)據(jù)的平安和一致性130提高磁盤I/O速度的方法磁盤高速緩存優(yōu)化數(shù)據(jù)分布提前讀延遲寫虛擬盤131提高磁盤I/O速度方法〔1〕磁盤高速緩存磁盤的I/O速度要比內(nèi)存低4-6個(gè)數(shù)量級(jí)。分配一些內(nèi)存作為磁盤高速緩存可以極大地提高磁盤I/O速度。形式:在內(nèi)存中開(kāi)辟一個(gè)單獨(dú)的存儲(chǔ)空間作為磁盤高速緩存。把所有未利用的內(nèi)存空間變?yōu)橐粋€(gè)緩沖池,供分頁(yè)系統(tǒng)和磁盤I/O共享。132磁盤高速緩存的數(shù)據(jù)交付數(shù)據(jù)交付:將磁盤高速緩存中的數(shù)據(jù)傳送給請(qǐng)求者進(jìn)程。當(dāng)有訪問(wèn)請(qǐng)求時(shí),系統(tǒng)看所需的塊是否在高速緩存中。如果在,那么可直接訪問(wèn)緩存。否那么,首先要將塊讀到高速緩存,再拷貝到所需的地方數(shù)據(jù)交付有兩種

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論