操作系統(tǒng)IO硬件管理_第1頁(yè)
操作系統(tǒng)IO硬件管理_第2頁(yè)
操作系統(tǒng)IO硬件管理_第3頁(yè)
操作系統(tǒng)IO硬件管理_第4頁(yè)
操作系統(tǒng)IO硬件管理_第5頁(yè)
已閱讀5頁(yè),還剩81頁(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)介

1、11第五章第五章 I/O設(shè)備管理設(shè)備管理操作系統(tǒng)的目標(biāo)就是給用戶提供一個(gè)高操作系統(tǒng)的目標(biāo)就是給用戶提供一個(gè)高層的機(jī)器接口(虛擬機(jī));層的機(jī)器接口(虛擬機(jī));在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,有大量的輸入輸在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,有大量的輸入輸出設(shè)備,其種類繁多,差異大。而且隨出設(shè)備,其種類繁多,差異大。而且隨著技術(shù)的發(fā)展,著技術(shù)的發(fā)展,新設(shè)備新設(shè)備也不斷地出現(xiàn)。也不斷地出現(xiàn)。因此,如何管理好這些設(shè)備,使資源得因此,如何管理好這些設(shè)備,使資源得以合理的利用,是操作系統(tǒng)的一個(gè)主要以合理的利用,是操作系統(tǒng)的一個(gè)主要功能。功能。22 I/O硬件硬件 I/O控制方式控制方式 I/O軟件軟件 磁盤磁盤本章的組織結(jié)構(gòu)本章的組

2、織結(jié)構(gòu)335.1 I/O硬件硬件 對(duì)于對(duì)于I/O硬件,硬件,操作系統(tǒng)操作系統(tǒng)所關(guān)心的并不是所關(guān)心的并不是硬件自身的設(shè)計(jì)、制造和維護(hù),而是如何來(lái)硬件自身的設(shè)計(jì)、制造和維護(hù),而是如何來(lái)對(duì)它進(jìn)行編程,即該設(shè)備給軟件提供的接口對(duì)它進(jìn)行編程,即該設(shè)備給軟件提供的接口是什么,包括它所接受的控制命令、所完成是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出錯(cuò)報(bào)告。的功能,以及所返回的出錯(cuò)報(bào)告。445.1.1 I/O設(shè)備的類型設(shè)備的類型人機(jī)交互設(shè)備人機(jī)交互設(shè)備:視頻顯示設(shè)備視頻顯示設(shè)備,鍵盤鍵盤,打印機(jī)打印機(jī);按交互方向分類:按交互方向分類: 輸入設(shè)備:鍵盤、鼠標(biāo)、掃描儀;輸入設(shè)備:鍵盤、鼠標(biāo)、掃描

3、儀; 到計(jì)算機(jī)中到計(jì)算機(jī)中 輸出設(shè)備:顯示器、打印機(jī);輸出設(shè)備:顯示器、打印機(jī); 從計(jì)算機(jī)中從計(jì)算機(jī)中 輸入輸入/輸出:磁盤、網(wǎng)卡。輸出:磁盤、網(wǎng)卡。55按數(shù)據(jù)組織分類:按數(shù)據(jù)組織分類: 塊設(shè)備塊設(shè)備:以數(shù)據(jù)塊來(lái)作為信息的存儲(chǔ)和傳輸單:以數(shù)據(jù)塊來(lái)作為信息的存儲(chǔ)和傳輸單位,每個(gè)數(shù)據(jù)塊都有一個(gè)地址,可以直接定位位,每個(gè)數(shù)據(jù)塊都有一個(gè)地址,可以直接定位和訪問(wèn)和訪問(wèn).數(shù)據(jù)塊之間的讀寫操作是相互獨(dú)立的數(shù)據(jù)塊之間的讀寫操作是相互獨(dú)立的,如磁盤;,如磁盤; 字符設(shè)備字符設(shè)備:以字符作為信息的存儲(chǔ)和傳輸單位:以字符作為信息的存儲(chǔ)和傳輸單位,只給順序訪問(wèn),只給順序訪問(wèn)-數(shù)據(jù)即字符流,無(wú)定位無(wú)尋數(shù)據(jù)即字符流,無(wú)定

4、位無(wú)尋址,如鼠標(biāo);址,如鼠標(biāo);按數(shù)據(jù)傳輸率分類:按數(shù)據(jù)傳輸率分類:低速低速(如鍵盤如鍵盤)、中速、中速(如打如打印機(jī)印機(jī))、高速、高速(如網(wǎng)卡、磁盤如網(wǎng)卡、磁盤)。665.1.2 設(shè)備控制器設(shè)備控制器機(jī)械部分機(jī)械部分電子部分電子部分每一個(gè)每一個(gè)I/O單元由兩部分組成:?jiǎn)卧蓛刹糠纸M成:機(jī)械部分機(jī)械部分和和 電子部分電子部分。把它們分開(kāi),以提供更加模塊化、更通用的設(shè)計(jì)。把它們分開(kāi),以提供更加模塊化、更通用的設(shè)計(jì)。視頻控視頻控制器制器77機(jī)械部分即為機(jī)械部分即為I/O設(shè)備本身設(shè)備本身;電子部分稱為:電子部分稱為:設(shè)備控制器設(shè)備控制器(device controller)或)或適配器適配器(adap

5、ter)。)。 適配器適配器的形式通常是印刷電路卡,可以插入的形式通常是印刷電路卡,可以插入到主板的擴(kuò)充槽中;到主板的擴(kuò)充槽中; 控制器控制器的形式是一組芯片的形式是一組芯片,主要集成在主版或主要集成在主版或I/O設(shè)備內(nèi)部;設(shè)備內(nèi)部;兩者功能相同兩者功能相同:完成設(shè)備與主機(jī)間的連接和完成設(shè)備與主機(jī)間的連接和通訊。通訊。8例如例如:v顯示器顯示器-機(jī)械設(shè)備機(jī)械設(shè)備,不能顯示字符不能顯示字符v視頻控制器視頻控制器(顯卡顯卡)-插在主版上插在主版上v顯示器與顯卡相連顯示器與顯卡相連-從計(jì)算機(jī)讀數(shù)據(jù)顯示從計(jì)算機(jī)讀數(shù)據(jù)顯示995.1.3 I/O地址地址 每個(gè)設(shè)備控制器都有一些每個(gè)設(shè)備控制器都有一些寄存器

6、寄存器用來(lái)與用來(lái)與CPU通信。通通信。通過(guò)這些寄存器中寫入不同的值,過(guò)這些寄存器中寫入不同的值,OS能命令該設(shè)備去能命令該設(shè)備去執(zhí)行發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、打開(kāi)、關(guān)閉等操作;執(zhí)行發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、打開(kāi)、關(guān)閉等操作;OS也也能通過(guò)讀取這些寄存器的值來(lái)了解設(shè)備的當(dāng)前狀態(tài)。能通過(guò)讀取這些寄存器的值來(lái)了解設(shè)備的當(dāng)前狀態(tài)。 此外,許多控制器還有一個(gè)此外,許多控制器還有一個(gè)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)供供OS讀寫。讀寫。CPU外外部部設(shè)設(shè)備備控控制制邏邏輯輯電電路路控制寄存器控制寄存器狀態(tài)寄存器狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器1010現(xiàn)在的問(wèn)題是:現(xiàn)在的問(wèn)題是:CPU如何與設(shè)備控制器當(dāng)如何與設(shè)備控制器當(dāng)中的寄存器進(jìn)行

7、通信?中的寄存器進(jìn)行通信?如何訪問(wèn)設(shè)備的數(shù)據(jù)如何訪問(wèn)設(shè)備的數(shù)據(jù)緩沖區(qū)?因?yàn)檫@不是普通的緩沖區(qū)?因?yàn)檫@不是普通的內(nèi)存訪問(wèn)內(nèi)存訪問(wèn)!方法有三種:方法有三種: I/O獨(dú)立編址;獨(dú)立編址; 內(nèi)存映像編址;內(nèi)存映像編址; 混合編址?;旌暇幹?。11111. I/O獨(dú)立編址獨(dú)立編址w 基本思路:給控制器中的基本思路:給控制器中的每一個(gè)寄存器每一個(gè)寄存器分配一個(gè)唯分配一個(gè)唯一的一的I/O端口(端口(I/O port)編號(hào),稱為)編號(hào),稱為I/O端口地址,端口地址,然后用專門的然后用專門的I/O指令對(duì)端口進(jìn)行操作;指令對(duì)端口進(jìn)行操作;w 這些端口地址所構(gòu)成的這些端口地址所構(gòu)成的地址空間是完全獨(dú)立的,地址空間是完

8、全獨(dú)立的,與內(nèi)存的地址空間沒(méi)有與內(nèi)存的地址空間沒(méi)有關(guān)系。例如:關(guān)系。例如:IN R0 4 表示讀入表示讀入I/O端口地址為端口地址為4的內(nèi)容;的內(nèi)容;MOV R0 4 表示讀入表示讀入內(nèi)存地址為內(nèi)存地址為4的內(nèi)容;的內(nèi)容;1212w優(yōu)點(diǎn):優(yōu)點(diǎn):I/O設(shè)備不占用內(nèi)存地址空間,而且設(shè)備不占用內(nèi)存地址空間,而且程序設(shè)計(jì)時(shí),易于區(qū)分是對(duì)內(nèi)存操作還是對(duì)程序設(shè)計(jì)時(shí),易于區(qū)分是對(duì)內(nèi)存操作還是對(duì)I/O端口操作。端口操作。w例子:例子:8086/8088,給,給I/O端口分配的地址端口分配的地址空間空間64K,0000HFFFFH, 只有只有IN和和OUT指令進(jìn)行讀寫操作。指令進(jìn)行讀寫操作。1313Linux0

9、.11/boot/setup.smov al,#0 x11 ! initialization sequenceout #0 x20,al ! send it to 8259A-1mov al,#0 x20 ! start of hardware ints(0 x20) out #0 x21,almov al,#0 x28 ! start of hardware ints(0 x28) out #0 xA1,alin al,#0 x64 ! 8042 status port ! 鍵盤控制器狀態(tài)寄存器鍵盤控制器狀態(tài)寄存器test al,#2jnz empty_8042 ! is input buf

10、fer full?14142. 內(nèi)存映像編址內(nèi)存映像編址w 基本思路:把所有控制器當(dāng)中的每一個(gè)寄存器都映基本思路:把所有控制器當(dāng)中的每一個(gè)寄存器都映射為一個(gè)內(nèi)存地址,專門用于射為一個(gè)內(nèi)存地址,專門用于I/O操作(功能上),操作(功能上),對(duì)這些單元的讀寫操作即為普通的內(nèi)存訪問(wèn)操作。對(duì)這些單元的讀寫操作即為普通的內(nèi)存訪問(wèn)操作。w 端口地址空間與內(nèi)存的地址空間統(tǒng)一編址,前者是端口地址空間與內(nèi)存的地址空間統(tǒng)一編址,前者是后者的一部分,一般位于后者的頂端部分。后者的一部分,一般位于后者的頂端部分。1515w優(yōu)點(diǎn):優(yōu)點(diǎn):F 編程方便,無(wú)需編程方便,無(wú)需專門的專門的I/O指令指令(C vs. 匯匯編編);

11、F 對(duì)普通的內(nèi)存單元可進(jìn)行的所有操作指令對(duì)普通的內(nèi)存單元可進(jìn)行的所有操作指令均可作用于均可作用于I/O端口,如端口,如TEST指令;指令;F 無(wú)須專門的保護(hù)機(jī)制來(lái)防止用戶進(jìn)程執(zhí)行無(wú)須專門的保護(hù)機(jī)制來(lái)防止用戶進(jìn)程執(zhí)行I/O。1616w缺點(diǎn):缺點(diǎn):F 不能對(duì)控制寄存器的內(nèi)容進(jìn)行不能對(duì)控制寄存器的內(nèi)容進(jìn)行Cache,必,必須關(guān)閉;須關(guān)閉;F 每一次都要判斷訪問(wèn)的是內(nèi)存還是每一次都要判斷訪問(wèn)的是內(nèi)存還是I/O。17173. 混合編址混合編址w 基本思路:對(duì)于設(shè)備控制器中的寄存器,采用獨(dú)立基本思路:對(duì)于設(shè)備控制器中的寄存器,采用獨(dú)立編址的方法;而對(duì)于設(shè)備的數(shù)據(jù)緩沖區(qū),采用內(nèi)存編址的方法;而對(duì)于設(shè)備的數(shù)據(jù)

12、緩沖區(qū),采用內(nèi)存映像編址的方法。映像編址的方法。w 例如:例如:Pentium,把內(nèi)存地址空間,把內(nèi)存地址空間640K1M保留作保留作為設(shè)備的數(shù)據(jù)緩沖區(qū),另外,還有一個(gè)獨(dú)立的為設(shè)備的數(shù)據(jù)緩沖區(qū),另外,還有一個(gè)獨(dú)立的I/O端口地址空間,從端口地址空間,從0到到64K。1818PC機(jī)上的部分機(jī)上的部分I/O端口地址端口地址(本圖摘自(本圖摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”)1919到目前為止,已經(jīng)介紹了到目前為止,已經(jīng)介紹了I/O設(shè)備的類型、設(shè)備的類型、設(shè)備的控制器、設(shè)備的控制器、I/O的端口地址?,F(xiàn)在的的端口

13、地址?,F(xiàn)在的問(wèn)題是:根據(jù)已有的這些知識(shí),現(xiàn)在問(wèn)題是:根據(jù)已有的這些知識(shí),現(xiàn)在能否能否開(kāi)始編程使用這些開(kāi)始編程使用這些I/O設(shè)備,完成相應(yīng)的輸設(shè)備,完成相應(yīng)的輸入輸出功能呢?若能,如何來(lái)使用?入輸出功能呢?若能,如何來(lái)使用?答案是能!答案是能!方法:程序循環(huán)檢測(cè)方法:程序循環(huán)檢測(cè)I/O(Programmed I/O)。20205.2 I/O控制方式控制方式程序循環(huán)檢測(cè)方式程序循環(huán)檢測(cè)方式(Programmed I/O);中斷驅(qū)動(dòng)方式中斷驅(qū)動(dòng)方式(Interrupt-driven I/O);直接內(nèi)存訪問(wèn)方式直接內(nèi)存訪問(wèn)方式(DMA, Direct Memory Access);21215.2.1

14、程序循環(huán)檢測(cè)方式程序循環(huán)檢測(cè)方式w 基本思路:基本思路:在程序(設(shè)備驅(qū)動(dòng)程序)中通過(guò)在程序(設(shè)備驅(qū)動(dòng)程序)中通過(guò)不斷地檢不斷地檢測(cè)測(cè)I/OI/O設(shè)備的當(dāng)前狀態(tài)設(shè)備的當(dāng)前狀態(tài),來(lái)控制,來(lái)控制I/OI/O操作的完成。具體操作的完成。具體來(lái)說(shuō),在進(jìn)行來(lái)說(shuō),在進(jìn)行I/OI/O操作之前,要循環(huán)地檢測(cè)設(shè)備是否就操作之前,要循環(huán)地檢測(cè)設(shè)備是否就緒;在緒;在I/OI/O操作進(jìn)行之中,要循環(huán)地檢測(cè)設(shè)備是否已完操作進(jìn)行之中,要循環(huán)地檢測(cè)設(shè)備是否已完成;在成;在I/OI/O操作完成之后,還要把輸入的數(shù)據(jù)保存到內(nèi)操作完成之后,還要把輸入的數(shù)據(jù)保存到內(nèi)存(輸入操作)。從硬件來(lái)說(shuō),控制存(輸入操作)。從硬件來(lái)說(shuō),控制I/

15、OI/O的所有工作均的所有工作均由由CPUCPU來(lái)完成。來(lái)完成。w 也稱為也稱為繁忙等待繁忙等待方式(方式(busy waiting)或)或輪詢輪詢方式方式(polling)。)。w 缺點(diǎn):在進(jìn)行缺點(diǎn):在進(jìn)行I/O操作時(shí),一直占用操作時(shí),一直占用CPU時(shí)間。時(shí)間。2222一個(gè)例子一個(gè)例子已知已知I/O地址采用內(nèi)存映像編址的方式,現(xiàn)需要地址采用內(nèi)存映像編址的方式,現(xiàn)需要在打印機(jī)上打印一個(gè)字符串在打印機(jī)上打印一個(gè)字符串“ABCDEFGH”。基本思路:把這基本思路:把這8個(gè)字符逐個(gè)送到打印機(jī)設(shè)備的個(gè)字符逐個(gè)送到打印機(jī)設(shè)備的I/O端口地址(內(nèi)存地址)。端口地址(內(nèi)存地址)。A B C D E F G

16、H內(nèi)存內(nèi)存pprinter_status_regprinter_data_register2323for (i = 0; i sys_read);該函數(shù)又調(diào)用相應(yīng)的設(shè)備驅(qū)動(dòng)程序,驅(qū)動(dòng)該函數(shù)又調(diào)用相應(yīng)的設(shè)備驅(qū)動(dòng)程序,驅(qū)動(dòng)程序在啟動(dòng)程序在啟動(dòng)I/O操作后被阻塞操作后被阻塞(-driver_read);I/O操作完成后,將產(chǎn)生一個(gè)中斷,然后中操作完成后,將產(chǎn)生一個(gè)中斷,然后中斷處理程序?qū)⒔庸軘嗵幚沓绦驅(qū)⒔庸蹸PU,并喚醒被阻塞的,并喚醒被阻塞的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序。方案一方案一5353驅(qū)動(dòng)程序以什么形式存在?單獨(dú)的一個(gè)進(jìn)驅(qū)動(dòng)程序以什么形式存在?單獨(dú)的一個(gè)進(jìn)程嗎?調(diào)用驅(qū)動(dòng)時(shí)程嗎?調(diào)用驅(qū)動(dòng)時(shí)有無(wú)進(jìn)程切換有

17、無(wú)進(jìn)程切換?中斷處理程序是誰(shuí)寫的?中斷處理程序是誰(shuí)寫的?OS or 廠商廠商?設(shè)備驅(qū)動(dòng)程序與中斷處理程序(兩個(gè)設(shè)備驅(qū)動(dòng)程序與中斷處理程序(兩個(gè)進(jìn)程進(jìn)程間)如何同步?間)如何同步?如果有多個(gè)進(jìn)程同時(shí)都要訪問(wèn)該如果有多個(gè)進(jìn)程同時(shí)都要訪問(wèn)該I/O設(shè)備,設(shè)備,該怎么辦?該怎么辦?問(wèn)題問(wèn)題5454我們要為一個(gè)簡(jiǎn)單的字符輸入設(shè)備實(shí)現(xiàn)相我們要為一個(gè)簡(jiǎn)單的字符輸入設(shè)備實(shí)現(xiàn)相應(yīng)的設(shè)備驅(qū)動(dòng)程序。應(yīng)的設(shè)備驅(qū)動(dòng)程序。當(dāng)用戶進(jìn)程需要當(dāng)用戶進(jìn)程需要I/O操作時(shí),啟動(dòng)相應(yīng)操作時(shí),啟動(dòng)相應(yīng)系統(tǒng)系統(tǒng)調(diào)用調(diào)用,最終執(zhí)行各種設(shè)備統(tǒng)一的對(duì)外接口,最終執(zhí)行各種設(shè)備統(tǒng)一的對(duì)外接口函數(shù)函數(shù)read(devID, buf, size)。設(shè)備

18、驅(qū)動(dòng)程序主要由兩個(gè)函數(shù)組成:設(shè)備驅(qū)動(dòng)程序主要由兩個(gè)函數(shù)組成:foo_read(),該設(shè)備對(duì),該設(shè)備對(duì)read接口函數(shù)的具體接口函數(shù)的具體實(shí)現(xiàn)。實(shí)現(xiàn)。foo_interrupt(),中斷處理函數(shù)。,中斷處理函數(shù)。一個(gè)例子一個(gè)例子5555size_t foo_read(struct file *filp, char *buf, size_t count, loff_t *ppos) foo_dev_t *foo_dev = filp-private_data; if(down_interruptible(&foo_dev-sem)/互斥互斥 return -ERESTARTSYS; foo

19、_dev-intr = 0; /同步同步 outb(DEV_FOO_READ, DEV_FOO_CONTROL_PORT); wait_event_interruptible(foo_dev-wait, (foo_dev-intr = 1); / 被阻塞被阻塞 if (put_user(foo_dev-data, buf) return -EFAULT; up(&foo_dev-sem); return 1;5656void foo_interrupt(int irq,void *dev_id, struct pt_regs *regs) foo-data = inb(DEV_FOO_

20、DATA_PORT); foo-intr = 1; wake_up_interruptible(&foo-wait);用戶進(jìn)程用戶進(jìn)程A 系統(tǒng)調(diào)用系統(tǒng)調(diào)用 read foo_read 被阻塞被阻塞 用戶進(jìn)程用戶進(jìn)程B 被中斷被中斷 foo_interrupt A被喚醒被喚醒5757方案方案1只適合需要互斥訪問(wèn)的設(shè)備。只適合需要互斥訪問(wèn)的設(shè)備。塊設(shè)備如何處理?塊設(shè)備如何處理?例如:例如:A進(jìn)程訪問(wèn)磁盤的第進(jìn)程訪問(wèn)磁盤的第i個(gè)數(shù)據(jù)塊個(gè)數(shù)據(jù)塊,B進(jìn)程也要訪問(wèn)第進(jìn)程也要訪問(wèn)第i個(gè)數(shù)據(jù)塊,如何個(gè)數(shù)據(jù)塊,如何優(yōu)化,減少優(yōu)化,減少I/O操作?操作?5858數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu):請(qǐng)求隊(duì)列請(qǐng)求隊(duì)列(req

21、uest queue););塊設(shè)備驅(qū)動(dòng)程序:塊設(shè)備驅(qū)動(dòng)程序:上層函數(shù)上層函數(shù),負(fù)責(zé)管理請(qǐng),負(fù)責(zé)管理請(qǐng)求隊(duì)列;求隊(duì)列;底層函數(shù)底層函數(shù),負(fù)責(zé)與硬件打交道,負(fù)責(zé)與硬件打交道,完成真正的完成真正的I/O;I/O請(qǐng)求的提交與真正實(shí)現(xiàn)是分離的。各個(gè)請(qǐng)求的提交與真正實(shí)現(xiàn)是分離的。各個(gè)用戶進(jìn)程(通過(guò)內(nèi)核)調(diào)用上層函數(shù),提用戶進(jìn)程(通過(guò)內(nèi)核)調(diào)用上層函數(shù),提交交I/O請(qǐng)求請(qǐng)求(mak_request),然后阻塞;底層函數(shù),然后阻塞;底層函數(shù)則從隊(duì)列中取出每個(gè)則從隊(duì)列中取出每個(gè)I/O請(qǐng)求,并完成之。請(qǐng)求,并完成之。能夠?qū)Ω鱾€(gè)能夠?qū)Ω鱾€(gè)I/O請(qǐng)求進(jìn)行優(yōu)化,如數(shù)據(jù)塊的請(qǐng)求進(jìn)行優(yōu)化,如數(shù)據(jù)塊的重組。重組。方案二方案二

22、5959Example: A scsi disk driver in UNIXsdstrategy: do error checking, if device is not busy, issue a start request for the specific unit (disk).sdustart: find the proper queue for this unit, put the request on the queue, issue start.sdstart: request the resources needed for the request (scsi bus or

23、DMA resources).sdgo: write the commands to the controller, set the interrupt vector, issue the start request to the controller.sdintr: called from I/O interrupt, finish the request (schedule the waiting process), issue a new request if there is one.60605.3.5 設(shè)備獨(dú)立的設(shè)備獨(dú)立的I/O軟件軟件設(shè)備獨(dú)立的設(shè)備獨(dú)立的I/O軟件是系統(tǒng)內(nèi)核的一部分

24、,它的基軟件是系統(tǒng)內(nèi)核的一部分,它的基本任務(wù)是實(shí)現(xiàn)所有設(shè)備都需要的一些通用的本任務(wù)是實(shí)現(xiàn)所有設(shè)備都需要的一些通用的I/O功功能,并向用戶級(jí)軟件提供一個(gè)統(tǒng)一的能,并向用戶級(jí)軟件提供一個(gè)統(tǒng)一的接口接口。實(shí)現(xiàn)的主要功能:實(shí)現(xiàn)的主要功能: 給上層應(yīng)用的統(tǒng)一接口;給上層應(yīng)用的統(tǒng)一接口; 與設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口;與設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口; 提供與設(shè)備無(wú)關(guān)的數(shù)據(jù)塊大??;提供與設(shè)備無(wú)關(guān)的數(shù)據(jù)塊大??; 緩沖技術(shù);緩沖技術(shù);6161 提供與設(shè)備無(wú)關(guān)的數(shù)據(jù)塊大小提供與設(shè)備無(wú)關(guān)的數(shù)據(jù)塊大小磁盤的訪問(wèn)是以扇區(qū)為單位,但不同的磁盤可能磁盤的訪問(wèn)是以扇區(qū)為單位,但不同的磁盤可能會(huì)有不同的扇區(qū)大小,因此,設(shè)備獨(dú)立的會(huì)有不同

25、的扇區(qū)大小,因此,設(shè)備獨(dú)立的I/OI/O軟件軟件可以向上層掩蓋這一事實(shí),并提供統(tǒng)一的邏輯塊可以向上層掩蓋這一事實(shí),并提供統(tǒng)一的邏輯塊大小,例如,它可以將若干個(gè)物理扇區(qū)合并成一大小,例如,它可以將若干個(gè)物理扇區(qū)合并成一個(gè)邏輯塊,這樣,對(duì)于上層的軟件來(lái)說(shuō),它們所個(gè)邏輯塊,這樣,對(duì)于上層的軟件來(lái)說(shuō),它們所面對(duì)的都是一些抽象的設(shè)備,這些設(shè)備都使用相面對(duì)的都是一些抽象的設(shè)備,這些設(shè)備都使用相同大小的邏輯塊。同大小的邏輯塊。6262 緩沖技術(shù)緩沖技術(shù)w 基本思想:在實(shí)現(xiàn)數(shù)據(jù)的基本思想:在實(shí)現(xiàn)數(shù)據(jù)的I/O操作時(shí),為緩解操作時(shí),為緩解CPU與外部設(shè)備之間速度不匹配的矛盾,提高資源利用與外部設(shè)備之間速度不匹配的

26、矛盾,提高資源利用率,在內(nèi)存中開(kāi)辟一個(gè)空間,用作率,在內(nèi)存中開(kāi)辟一個(gè)空間,用作緩沖區(qū)(緩沖區(qū)(36M、3、1)。63635.3.6 用戶空間的用戶空間的I/O軟件軟件雖然大多數(shù)的雖然大多數(shù)的I/O軟件都包含在操作系統(tǒng)中,但也有軟件都包含在操作系統(tǒng)中,但也有一小部分是與用戶程序進(jìn)行鏈接的庫(kù)函數(shù),或者是一小部分是與用戶程序進(jìn)行鏈接的庫(kù)函數(shù),或者是完全運(yùn)行在用戶空間的程序。完全運(yùn)行在用戶空間的程序。v 庫(kù)函數(shù):如庫(kù)函數(shù):如C語(yǔ)言里與語(yǔ)言里與I/O有關(guān)的庫(kù)函數(shù)有關(guān)的庫(kù)函數(shù)write、read等,它們實(shí)質(zhì)上只是將它們的參數(shù)再傳遞給等,它們實(shí)質(zhì)上只是將它們的參數(shù)再傳遞給系統(tǒng)調(diào)用函數(shù),并由后者來(lái)完成實(shí)際的系

27、統(tǒng)調(diào)用函數(shù),并由后者來(lái)完成實(shí)際的I/O操作;操作;v Spooling技術(shù):在多道系統(tǒng)中,一種處理獨(dú)占設(shè)技術(shù):在多道系統(tǒng)中,一種處理獨(dú)占設(shè)備的方法。備的方法。6464Spooling技術(shù)技術(shù)w 利用利用假脫機(jī)技術(shù)假脫機(jī)技術(shù)(SPOOLing, Simultaneous Peripheral Operation On Line, 也稱虛擬設(shè)備技術(shù))也稱虛擬設(shè)備技術(shù))可把獨(dú)占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從可把獨(dú)占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從而提高設(shè)備利用率。而提高設(shè)備利用率。w 基本思想:在多道系統(tǒng)中,對(duì)于一個(gè)獨(dú)占的設(shè)備,基本思想:在多道系統(tǒng)中,對(duì)于一個(gè)獨(dú)占的設(shè)備,專門利用一道程序(

28、專門利用一道程序(SPOOLing程序)來(lái)完成對(duì)該程序)來(lái)完成對(duì)該設(shè)備的設(shè)備的I/O操作。操作。Application AApplication BSPOOLingProgramDeviceVirtual I/OActual I/O6565w 優(yōu)點(diǎn):優(yōu)點(diǎn): 高速的虛擬高速的虛擬I/O操作:應(yīng)用程序的虛擬操作:應(yīng)用程序的虛擬I/O比實(shí)比實(shí)際際I/O速度提高,縮短應(yīng)用程序的執(zhí)行時(shí)間。另速度提高,縮短應(yīng)用程序的執(zhí)行時(shí)間。另一方面,程序的虛擬一方面,程序的虛擬I/O操作時(shí)間和實(shí)際操作時(shí)間和實(shí)際I/O操操作時(shí)間分離開(kāi)來(lái)。作時(shí)間分離開(kāi)來(lái)。 實(shí)現(xiàn)對(duì)獨(dú)占設(shè)備的共享:由實(shí)現(xiàn)對(duì)獨(dú)占設(shè)備的共享:由Spooling程

29、序提供虛程序提供虛擬設(shè)備,可以對(duì)獨(dú)占設(shè)備依次共享使用。擬設(shè)備,可以對(duì)獨(dú)占設(shè)備依次共享使用。w 舉例:打印機(jī)是一種獨(dú)占設(shè)備,可用舉例:打印機(jī)是一種獨(dú)占設(shè)備,可用Spooling技術(shù)技術(shù) 創(chuàng)建一個(gè)創(chuàng)建一個(gè)Spooling進(jìn)程進(jìn)程 (后臺(tái)打印程序后臺(tái)打印程序, daemon)和一個(gè)和一個(gè)Spooling目錄。當(dāng)進(jìn)程需要打印一個(gè)文件目錄。當(dāng)進(jìn)程需要打印一個(gè)文件時(shí),首先生成將要打印的文件,并放入時(shí),首先生成將要打印的文件,并放入Spooling目錄,然后由目錄,然后由daemon進(jìn)程來(lái)負(fù)責(zé)打印。進(jìn)程來(lái)負(fù)責(zé)打印。66665.4 磁盤磁盤磁盤的硬件;磁盤的硬件;磁盤格式化;磁盤格式化;磁盤調(diào)度算法;磁盤調(diào)度

30、算法;出錯(cuò)處理。出錯(cuò)處理。67675.4.1 磁盤的硬件磁盤的硬件w 磁盤的硬件結(jié)構(gòu):磁盤(軟盤和硬盤)由一個(gè)或多磁盤的硬件結(jié)構(gòu):磁盤(軟盤和硬盤)由一個(gè)或多個(gè)金屬盤片組成,這些盤片組合固定在一根旋轉(zhuǎn)軸個(gè)金屬盤片組成,這些盤片組合固定在一根旋轉(zhuǎn)軸上,由同一個(gè)馬達(dá)驅(qū)動(dòng)。每個(gè)盤片有上下兩個(gè)盤面,上,由同一個(gè)馬達(dá)驅(qū)動(dòng)。每個(gè)盤片有上下兩個(gè)盤面,在盤面上涂有磁性材料,信息就記錄在這些盤面上。在盤面上涂有磁性材料,信息就記錄在這些盤面上。在每個(gè)盤面上方,都有一個(gè)磁頭,它固定在一個(gè)磁在每個(gè)盤面上方,都有一個(gè)磁頭,它固定在一個(gè)磁頭臂上,而磁頭臂又固定在一個(gè)傳動(dòng)裝置上。通過(guò)頭臂上,而磁頭臂又固定在一個(gè)傳動(dòng)裝置上

31、。通過(guò)磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出和修改。和修改。6868磁道磁道扇區(qū)扇區(qū)柱面柱面讀寫磁頭讀寫磁頭磁頭臂磁頭臂盤片盤片傳動(dòng)裝置傳動(dòng)裝置旋轉(zhuǎn)軸旋轉(zhuǎn)軸移動(dòng)方向移動(dòng)方向6969w 磁道磁道:當(dāng)傳動(dòng)裝置固定在某個(gè)位置時(shí),若盤面旋轉(zhuǎn):當(dāng)傳動(dòng)裝置固定在某個(gè)位置時(shí),若盤面旋轉(zhuǎn)一圈,磁頭所能訪問(wèn)的圓環(huán)區(qū)域;一圈,磁頭所能訪問(wèn)的圓環(huán)區(qū)域;w 柱面柱面:在所有盤面上,半徑相同的所有磁道即組成:在所有盤面上,半徑相同的所有磁道即組成一個(gè)柱面;一個(gè)柱面;w 扇區(qū)扇區(qū):每一個(gè)磁道被劃分為若干個(gè)扇區(qū);:每一個(gè)磁道被劃分為若干個(gè)扇區(qū);w 磁盤的訪問(wèn)過(guò)程磁盤的訪問(wèn)過(guò)

32、程:以扇區(qū)作為最小的尋址和存取單:以扇區(qū)作為最小的尋址和存取單位。首先移動(dòng)傳動(dòng)裝置,通過(guò)它來(lái)移動(dòng)磁頭,從而位。首先移動(dòng)傳動(dòng)裝置,通過(guò)它來(lái)移動(dòng)磁頭,從而定位正確的柱面。然后選中相應(yīng)的磁頭,等我們想定位正確的柱面。然后選中相應(yīng)的磁頭,等我們想要的扇區(qū)正好路過(guò)這個(gè)磁頭正下方的時(shí)候,就可以要的扇區(qū)正好路過(guò)這個(gè)磁頭正下方的時(shí)候,就可以對(duì)它進(jìn)行訪問(wèn)了。對(duì)它進(jìn)行訪問(wèn)了。7070w如何寫一個(gè)字節(jié)?讀修改寫如何寫一個(gè)字節(jié)?讀修改寫 讀入包含該字節(jié)的扇區(qū);讀入包含該字節(jié)的扇區(qū); 修改該字節(jié);修改該字節(jié); 把整個(gè)扇區(qū)寫回到磁盤;把整個(gè)扇區(qū)寫回到磁盤;7171參數(shù)參數(shù)IBM 360-KB軟盤軟盤Barracuda 1

33、80硬盤硬盤柱面數(shù)柱面數(shù)4024247磁道數(shù)磁道數(shù) 柱面柱面224扇區(qū)扇區(qū) 磁道磁道9609(平均平均)扇區(qū)扇區(qū) 磁盤磁盤72035742000字節(jié)數(shù)字節(jié)數(shù) 扇區(qū)扇區(qū)512512磁盤容量磁盤容量360KB181GB柱面定位柱面定位(相鄰相鄰)6毫秒毫秒0.8毫秒毫秒柱面定位柱面定位(平均平均)77毫秒毫秒7.4毫秒毫秒旋轉(zhuǎn)時(shí)間旋轉(zhuǎn)時(shí)間200毫秒毫秒8.33毫秒毫秒馬達(dá)啟馬達(dá)啟/停時(shí)間停時(shí)間250毫秒毫秒20秒秒扇區(qū)傳送時(shí)間扇區(qū)傳送時(shí)間22毫秒毫秒17微秒微秒7272虛擬磁盤地址虛擬磁盤地址w 物理地址:柱面號(hào)、盤面號(hào)(磁頭號(hào))、扇區(qū)號(hào);物理地址:柱面號(hào)、盤面號(hào)(磁頭號(hào))、扇區(qū)號(hào);這隱含著兩個(gè)約

34、束條件:每個(gè)柱面上的盤面?zhèn)€數(shù)都這隱含著兩個(gè)約束條件:每個(gè)柱面上的盤面?zhèn)€數(shù)都是一樣的;每個(gè)磁道上的扇區(qū)個(gè)數(shù)都是一樣的。是一樣的;每個(gè)磁道上的扇區(qū)個(gè)數(shù)都是一樣的。w 考慮到半徑不同的磁道,其圓環(huán)區(qū)域的考慮到半徑不同的磁道,其圓環(huán)區(qū)域的面積不同面積不同,現(xiàn)代磁盤在設(shè)計(jì)時(shí),把所有磁道按半徑大小,劃分現(xiàn)代磁盤在設(shè)計(jì)時(shí),把所有磁道按半徑大小,劃分為若干個(gè)環(huán)帶,在不同環(huán)帶上,每個(gè)磁道所劃分的為若干個(gè)環(huán)帶,在不同環(huán)帶上,每個(gè)磁道所劃分的扇區(qū)數(shù)是不一樣的,這就違背了第二個(gè)約束條件;扇區(qū)數(shù)是不一樣的,這就違背了第二個(gè)約束條件;w 虛擬地址:把每個(gè)磁道多少個(gè)扇區(qū)等物理細(xì)節(jié)隱藏虛擬地址:把每個(gè)磁道多少個(gè)扇區(qū)等物理細(xì)節(jié)

35、隱藏在設(shè)備內(nèi)部,對(duì)外提供統(tǒng)一的虛擬地址在設(shè)備內(nèi)部,對(duì)外提供統(tǒng)一的虛擬地址(x, y, z),即,即虛擬的柱面號(hào)、盤面號(hào)和扇區(qū)號(hào),對(duì)內(nèi)再將其映射虛擬的柱面號(hào)、盤面號(hào)和扇區(qū)號(hào),對(duì)內(nèi)再將其映射為實(shí)際的柱面、盤面和扇區(qū)(由控制器完成)。為實(shí)際的柱面、盤面和扇區(qū)(由控制器完成)。7373物理扇區(qū)分布物理扇區(qū)分布虛擬扇區(qū)分布虛擬扇區(qū)分布32 4 + 16 4 = 19224 8 = 19274745.4.2 磁盤格式化磁盤格式化w 硬盤的格式化可分為三個(gè)步驟,即低級(jí)格式化、分硬盤的格式化可分為三個(gè)步驟,即低級(jí)格式化、分區(qū)和高級(jí)格式化。區(qū)和高級(jí)格式化。w 低級(jí)格式化:標(biāo)出低級(jí)格式化:標(biāo)出磁道磁道和和扇區(qū)扇區(qū)

36、,在相鄰的扇區(qū)之間,在相鄰的扇區(qū)之間有狹窄的間隙隔開(kāi)。一個(gè)扇區(qū)的格式是:相位編碼有狹窄的間隙隔開(kāi)。一個(gè)扇區(qū)的格式是:相位編碼(preamble)數(shù)據(jù)區(qū)糾錯(cuò)碼()數(shù)據(jù)區(qū)糾錯(cuò)碼(ECC)。)。F 相位編碼:以某個(gè)特定的位組合模式開(kāi)始,向相位編碼:以某個(gè)特定的位組合模式開(kāi)始,向硬件表明這是一個(gè)新扇區(qū)的開(kāi)始。還包括柱面硬件表明這是一個(gè)新扇區(qū)的開(kāi)始。還包括柱面號(hào)、扇區(qū)號(hào)、扇區(qū)大小等類似信息;號(hào)、扇區(qū)號(hào)、扇區(qū)大小等類似信息;F 數(shù)據(jù)區(qū):由格式化程序確定其大小,一般數(shù)據(jù)區(qū):由格式化程序確定其大小,一般512;F 糾錯(cuò)碼:包含冗余信息,用來(lái)糾正讀取錯(cuò)誤;糾錯(cuò)碼:包含冗余信息,用來(lái)糾正讀取錯(cuò)誤;7575w 分區(qū)

37、分區(qū):用分區(qū)軟件把整個(gè)硬盤劃分為若干個(gè)邏輯分:用分區(qū)軟件把整個(gè)硬盤劃分為若干個(gè)邏輯分區(qū),每個(gè)分區(qū)可視為一個(gè)獨(dú)立的磁盤。在多數(shù)計(jì)算區(qū),每個(gè)分區(qū)可視為一個(gè)獨(dú)立的磁盤。在多數(shù)計(jì)算機(jī)上,用第機(jī)上,用第0個(gè)扇區(qū)來(lái)存放一些系統(tǒng)啟動(dòng)代碼和一個(gè)扇區(qū)來(lái)存放一些系統(tǒng)啟動(dòng)代碼和一個(gè)分區(qū)表,記錄了每個(gè)分區(qū)的起始扇區(qū)和大小。個(gè)分區(qū)表,記錄了每個(gè)分區(qū)的起始扇區(qū)和大小。w 高級(jí)格式化高級(jí)格式化:對(duì)每一個(gè)邏輯分區(qū),分別進(jìn)行一種高:對(duì)每一個(gè)邏輯分區(qū),分別進(jìn)行一種高級(jí)格式化(即通常的格式化操作),生成一個(gè)引導(dǎo)級(jí)格式化(即通常的格式化操作),生成一個(gè)引導(dǎo)塊、空閑存儲(chǔ)管理結(jié)構(gòu)、根目錄和一個(gè)空白的文件塊、空閑存儲(chǔ)管理結(jié)構(gòu)、根目錄和一個(gè)

38、空白的文件系統(tǒng)。對(duì)不同的分區(qū),可以使用不同的文件系統(tǒng),系統(tǒng)。對(duì)不同的分區(qū),可以使用不同的文件系統(tǒng),如如FAT16、FAT32、NTFS等。等。76765.4.3 磁盤調(diào)度算法磁盤調(diào)度算法磁盤的訪問(wèn)是以扇區(qū)作為最小的尋址和存取單位,磁盤的訪問(wèn)是以扇區(qū)作為最小的尋址和存取單位,在訪問(wèn)一個(gè)磁盤扇區(qū)時(shí),所需的時(shí)間主要有:在訪問(wèn)一個(gè)磁盤扇區(qū)時(shí),所需的時(shí)間主要有: 柱面定位時(shí)間:磁頭在磁頭臂牽引下,移動(dòng)到指柱面定位時(shí)間:磁頭在磁頭臂牽引下,移動(dòng)到指定柱面的機(jī)械運(yùn)動(dòng)時(shí)間;定柱面的機(jī)械運(yùn)動(dòng)時(shí)間; 旋轉(zhuǎn)延遲時(shí)間:等待指定的扇區(qū)旋轉(zhuǎn)到磁頭的正旋轉(zhuǎn)延遲時(shí)間:等待指定的扇區(qū)旋轉(zhuǎn)到磁頭的正下方所需的機(jī)械運(yùn)動(dòng)時(shí)間;它與磁

39、盤轉(zhuǎn)速有關(guān),下方所需的機(jī)械運(yùn)動(dòng)時(shí)間;它與磁盤轉(zhuǎn)速有關(guān),如:軟盤轉(zhuǎn)速可為如:軟盤轉(zhuǎn)速可為600rpm(每分鐘轉(zhuǎn)速每分鐘轉(zhuǎn)速),硬盤可,硬盤可為為7,200rpm至至10,000rpm; 數(shù)據(jù)傳送時(shí)間:從指定扇區(qū)讀寫數(shù)據(jù)的時(shí)間。數(shù)據(jù)傳送時(shí)間:從指定扇區(qū)讀寫數(shù)據(jù)的時(shí)間。7777方法方法1:合理地組織磁盤數(shù)據(jù)的存儲(chǔ)位置合理地組織磁盤數(shù)據(jù)的存儲(chǔ)位置。例子:磁盤的轉(zhuǎn)速為例子:磁盤的轉(zhuǎn)速為10,000rpm,每個(gè)磁道有,每個(gè)磁道有300個(gè)扇個(gè)扇區(qū),每個(gè)扇區(qū)有區(qū),每個(gè)扇區(qū)有512字節(jié),現(xiàn)要讀一個(gè)字節(jié),現(xiàn)要讀一個(gè)150KB的文件。的文件。假設(shè)柱面定位假設(shè)柱面定位(平均平均)時(shí)間為時(shí)間為6.9毫秒,旋轉(zhuǎn)延遲毫秒,

40、旋轉(zhuǎn)延遲(平均平均)時(shí)時(shí)間為旋轉(zhuǎn)時(shí)間的一半間為旋轉(zhuǎn)時(shí)間的一半(3ms),扇區(qū)數(shù)據(jù)傳送時(shí)間,扇區(qū)數(shù)據(jù)傳送時(shí)間17微秒;微秒;(1)文件由同一個(gè)磁道上的文件由同一個(gè)磁道上的300個(gè)連續(xù)扇區(qū)構(gòu)成:個(gè)連續(xù)扇區(qū)構(gòu)成:(2)文件由文件由300個(gè)隨機(jī)分布的扇區(qū)構(gòu)成:個(gè)隨機(jī)分布的扇區(qū)構(gòu)成:隨機(jī)分布時(shí)的訪問(wèn)時(shí)間為連續(xù)分布時(shí)的隨機(jī)分布時(shí)的訪問(wèn)時(shí)間為連續(xù)分布時(shí)的187倍。倍。如何提高磁盤訪問(wèn)速度?如何提高磁盤訪問(wèn)速度?6.9ms + 3ms + 6ms = 15.9ms; (why?)(6.9ms + 3ms + 0.017ms)*300 = 2975.1ms;7878方法方法2:磁盤調(diào)度。:磁盤調(diào)度。如何提高磁盤

41、訪問(wèn)速度?如何提高磁盤訪問(wèn)速度?w 對(duì)于大多數(shù)磁盤來(lái)說(shuō),柱面定位時(shí)間(磁頭移動(dòng)時(shí)對(duì)于大多數(shù)磁盤來(lái)說(shuō),柱面定位時(shí)間(磁頭移動(dòng)時(shí)間)在訪問(wèn)時(shí)間中占主要部分,因此減少平均的柱間)在訪問(wèn)時(shí)間中占主要部分,因此減少平均的柱面定位時(shí)間將有效地改進(jìn)系統(tǒng)的輸入輸出性能。面定位時(shí)間將有效地改進(jìn)系統(tǒng)的輸入輸出性能。w 基本思路:來(lái)自基本思路:來(lái)自不同進(jìn)程不同進(jìn)程的磁盤訪問(wèn)請(qǐng)求構(gòu)成一個(gè)的磁盤訪問(wèn)請(qǐng)求構(gòu)成一個(gè)隨機(jī)分布的請(qǐng)求隊(duì)列。磁盤調(diào)度的基本思路就是通隨機(jī)分布的請(qǐng)求隊(duì)列。磁盤調(diào)度的基本思路就是通過(guò)對(duì)這些過(guò)對(duì)這些I/O請(qǐng)求的執(zhí)行順序進(jìn)行調(diào)整,來(lái)減少整請(qǐng)求的執(zhí)行順序進(jìn)行調(diào)整,來(lái)減少整個(gè)請(qǐng)求隊(duì)列所對(duì)應(yīng)的平均柱面定位時(shí)間。個(gè)

42、請(qǐng)求隊(duì)列所對(duì)應(yīng)的平均柱面定位時(shí)間。w 磁盤調(diào)度算法:磁盤調(diào)度程序所采用的算法。磁盤調(diào)度算法:磁盤調(diào)度程序所采用的算法。誰(shuí)來(lái)做這件事情?誰(shuí)來(lái)做這件事情?79791. 先來(lái)先服務(wù)算法先來(lái)先服務(wù)算法w 先來(lái)先服務(wù)先來(lái)先服務(wù)(First-Come First-Served, FCFS):按訪:按訪問(wèn)請(qǐng)求到達(dá)的先后順序來(lái)依次執(zhí)行。問(wèn)請(qǐng)求到達(dá)的先后順序來(lái)依次執(zhí)行。w 優(yōu)點(diǎn):簡(jiǎn)單、公平;優(yōu)點(diǎn):簡(jiǎn)單、公平;w 缺點(diǎn):效率不高。相鄰的兩次訪問(wèn)請(qǐng)求可能相距甚缺點(diǎn):效率不高。相鄰的兩次訪問(wèn)請(qǐng)求可能相距甚遠(yuǎn),從而使磁頭反復(fù)地移動(dòng)較長(zhǎng)的距離。遠(yuǎn),從而使磁頭反復(fù)地移動(dòng)較長(zhǎng)的距離。w 舉例:假設(shè)一個(gè)磁盤總共有舉例:假設(shè)一個(gè)

43、磁盤總共有200個(gè)柱面,它們的編個(gè)柱面,它們的編號(hào)為號(hào)為0199,訪問(wèn)請(qǐng)求的到達(dá)順序?yàn)椋ㄖ嫣?hào)):,訪問(wèn)請(qǐng)求的到達(dá)順序?yàn)椋ㄖ嫣?hào)):98,183,37,122,14,124,65,67,磁頭的起,磁頭的起始位置在始位置在53,計(jì)算磁頭移動(dòng)總距離。,計(jì)算磁頭移動(dòng)總距離。8080(本圖摘自(本圖摘自Silberschatz, Galvin and Gagne: “Operating System Concepts” )458514685108110592在在FCFS算法下,在算法下,在8次磁盤訪問(wèn)中,磁頭總共移動(dòng)次磁盤訪問(wèn)中,磁頭總共移動(dòng)的距離為的距離為640,平均的移動(dòng)距離為,平均的移動(dòng)距離為80。81812. 最短定位時(shí)間優(yōu)先最短定位時(shí)間優(yōu)先w 最短定位時(shí)間優(yōu)先最短定位時(shí)間優(yōu)先(Shortest Seek Time First, SSTF):從訪問(wèn)請(qǐng)求隊(duì)列當(dāng)中,選擇從當(dāng)前磁頭位置出發(fā),從訪問(wèn)請(qǐng)求隊(duì)列當(dāng)中,選擇從當(dāng)前磁頭位置出發(fā),移動(dòng)最少的訪問(wèn)請(qǐng)求去執(zhí)行。移動(dòng)最少的訪問(wèn)請(qǐng)求去執(zhí)行。w 該算法的目標(biāo)是使每次磁頭移動(dòng)時(shí)間最少。它不一該算法的目標(biāo)是使每次磁頭移動(dòng)時(shí)間最少。它不一定是最短平均柱面定位時(shí)間,但比定是最短平均柱面定位時(shí)間,但比FCFS算法有更算法有更好的性能

溫馨提示

  • 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)論