




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、11第五章第五章 I/O設備管理設備管理操作系統(tǒng)的目標就是給用戶提供一個高操作系統(tǒng)的目標就是給用戶提供一個高層的機器接口(虛擬機);層的機器接口(虛擬機);在現代計算機系統(tǒng)中,有大量的輸入輸在現代計算機系統(tǒng)中,有大量的輸入輸出設備,其種類繁多,差異大。而且隨出設備,其種類繁多,差異大。而且隨著技術的發(fā)展,著技術的發(fā)展,新設備新設備也不斷地出現。也不斷地出現。因此,如何管理好這些設備,使資源得因此,如何管理好這些設備,使資源得以合理的利用,是操作系統(tǒng)的一個主要以合理的利用,是操作系統(tǒng)的一個主要功能。功能。221. I/O硬件硬件2. I/O控制方式控制方式3. I/O軟件軟件4. 磁盤磁盤本章的
2、組織結構本章的組織結構335.1 I/O硬件硬件 對于對于I/O硬件,硬件,操作系統(tǒng)操作系統(tǒng)所關心的并不是所關心的并不是硬件自身的設計、制造和維護,而是如何來硬件自身的設計、制造和維護,而是如何來對它進行編程,即該設備給軟件提供的接口對它進行編程,即該設備給軟件提供的接口是什么,包括它所接受的控制命令、所完成是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出錯報告。的功能,以及所返回的出錯報告。445.1.1 I/O設備的類型設備的類型人機交互設備人機交互設備:視頻顯示設備視頻顯示設備,鍵盤鍵盤,打印機打印機;按交互方向分類:按交互方向分類: 輸入設備:鍵盤、鼠標、掃描儀;輸入設備:
3、鍵盤、鼠標、掃描儀; 到計算機中到計算機中 輸出設備:顯示器、打印機;輸出設備:顯示器、打印機; 從計算機中從計算機中 輸入輸入/輸出:磁盤、網卡。輸出:磁盤、網卡。55按數據組織分類:按數據組織分類: 塊設備塊設備:以數據塊來作為信息的存儲和傳輸單:以數據塊來作為信息的存儲和傳輸單位,每個數據塊都有一個地址,可以直接定位位,每個數據塊都有一個地址,可以直接定位和訪問和訪問.數據塊之間的讀寫操作是相互獨立的數據塊之間的讀寫操作是相互獨立的,如磁盤;,如磁盤; 字符設備字符設備:以字符作為信息的存儲和傳輸單位:以字符作為信息的存儲和傳輸單位,只給順序訪問,只給順序訪問-數據即字符流,無定位無尋數
4、據即字符流,無定位無尋址,如鼠標;址,如鼠標;按數據傳輸率分類:按數據傳輸率分類:低速低速(如鍵盤如鍵盤)、中速、中速(如打如打印機印機)、高速、高速(如網卡、磁盤如網卡、磁盤)。665.1.2 設備控制器設備控制器機械部分機械部分電子部分電子部分每一個每一個I/O單元由兩部分組成:單元由兩部分組成:機械部分機械部分和和 電子部分電子部分。把它們分開,以提供更加模塊化、更通用的設計。把它們分開,以提供更加模塊化、更通用的設計。視頻控視頻控制器制器77機械部分即為機械部分即為I/O設備本身設備本身;電子部分稱為:電子部分稱為:設備控制器設備控制器(device controller)或)或適配器
5、適配器(adapter)。)。 適配器適配器的形式通常是印刷電路卡,可以插入的形式通常是印刷電路卡,可以插入到主板的擴充槽中;到主板的擴充槽中; 控制器控制器的形式是一組芯片的形式是一組芯片,主要集成在主版或主要集成在主版或I/O設備內部;設備內部;兩者功能相同兩者功能相同:完成設備與主機間的連接和完成設備與主機間的連接和通訊。通訊。8例如例如:v顯示器顯示器-機械設備機械設備,不能顯示字符不能顯示字符v視頻控制器視頻控制器(顯卡顯卡)-插在主版上插在主版上v顯示器與顯卡相連顯示器與顯卡相連-從計算機讀數據顯示從計算機讀數據顯示995.1.3 I/O地址地址 每個設備控制器都有一些每個設備控制
6、器都有一些寄存器寄存器用來與用來與CPU通信。通通信。通過這些寄存器中寫入不同的值,過這些寄存器中寫入不同的值,OS能命令該設備去能命令該設備去執(zhí)行發(fā)送數據、接收數據、打開、關閉等操作;執(zhí)行發(fā)送數據、接收數據、打開、關閉等操作;OS也也能通過讀取這些寄存器的值來了解設備的當前狀態(tài)。能通過讀取這些寄存器的值來了解設備的當前狀態(tài)。 此外,許多控制器還有一個此外,許多控制器還有一個數據緩沖區(qū)數據緩沖區(qū)供供OS讀寫。讀寫。CPU外外部部設設備備控控制制邏邏輯輯電電路路控制寄存器控制寄存器狀態(tài)寄存器狀態(tài)寄存器數據寄存器數據寄存器1010現在的問題是:現在的問題是:CPU如何與設備控制器當如何與設備控制器
7、當中的寄存器進行通信?中的寄存器進行通信?如何訪問設備的數據如何訪問設備的數據緩沖區(qū)?因為這不是普通的緩沖區(qū)?因為這不是普通的內存訪問內存訪問!方法有三種:方法有三種: I/O獨立編址;獨立編址; 內存映像編址;內存映像編址; 混合編址。混合編址。11111. I/O獨立編址獨立編址w 基本思路:給控制器中的基本思路:給控制器中的每一個寄存器每一個寄存器分配一個唯分配一個唯一的一的I/O端口(端口(I/O port)編號,稱為)編號,稱為I/O端口地址,端口地址,然后用專門的然后用專門的I/O指令對端口進行操作;指令對端口進行操作;w 這些端口地址所構成的這些端口地址所構成的地址空間是完全獨立
8、的,地址空間是完全獨立的,與內存的地址空間沒有與內存的地址空間沒有關系。例如:關系。例如:IN R0 4 表示讀入表示讀入I/O端口地址為端口地址為4的內容;的內容;MOV R0 4 表示讀入表示讀入內存地址為內存地址為4的內容;的內容;1212w優(yōu)點:優(yōu)點:I/O設備不占用內存地址空間,而且設備不占用內存地址空間,而且程序設計時,易于區(qū)分是對內存操作還是對程序設計時,易于區(qū)分是對內存操作還是對I/O端口操作。端口操作。w例子:例子:8086/8088,給,給I/O端口分配的地址端口分配的地址空間空間64K,0000HFFFFH, 只有只有IN和和OUT指令進行讀寫操作。指令進行讀寫操作。13
9、13Linux0.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 i
10、nput buffer full?14142. 內存映像編址內存映像編址w 基本思路:把所有控制器當中的每一個寄存器都映基本思路:把所有控制器當中的每一個寄存器都映射為一個內存地址,專門用于射為一個內存地址,專門用于I/O操作(功能上),操作(功能上),對這些單元的讀寫操作即為普通的內存訪問操作。對這些單元的讀寫操作即為普通的內存訪問操作。w 端口地址空間與內存的地址空間統(tǒng)一編址,前者是端口地址空間與內存的地址空間統(tǒng)一編址,前者是后者的一部分,一般位于后者的頂端部分。后者的一部分,一般位于后者的頂端部分。1515w優(yōu)點:優(yōu)點:F 編程方便,無需編程方便,無需專門的專門的I/O指令指令(C vs
11、. 匯匯編編);F 對普通的內存單元可進行的所有操作指令對普通的內存單元可進行的所有操作指令均可作用于均可作用于I/O端口,如端口,如TEST指令;指令;F 無須專門的保護機制來防止用戶進程執(zhí)行無須專門的保護機制來防止用戶進程執(zhí)行I/O。1616w缺點:缺點:F 不能對控制寄存器的內容進行不能對控制寄存器的內容進行Cache,必,必須關閉;須關閉;F 每一次都要判斷訪問的是內存還是每一次都要判斷訪問的是內存還是I/O。17173. 混合編址混合編址w 基本思路:對于設備控制器中的寄存器,采用獨立基本思路:對于設備控制器中的寄存器,采用獨立編址的方法;而對于設備的數據緩沖區(qū),采用內存編址的方法;
12、而對于設備的數據緩沖區(qū),采用內存映像編址的方法。映像編址的方法。w 例如:例如:Pentium,把內存地址空間,把內存地址空間640K1M保留作保留作為設備的數據緩沖區(qū),另外,還有一個獨立的為設備的數據緩沖區(qū),另外,還有一個獨立的I/O端口地址空間,從端口地址空間,從0到到64K。1818PC機上的部分機上的部分I/O端口地址端口地址(本圖摘自(本圖摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”)1919到目前為止,已經介紹了到目前為止,已經介紹了I/O設備的類型、設備的類型、設備的控制器、設備的控制器、I/O的端口地
13、址?,F在的的端口地址。現在的問題是:根據已有的這些知識,現在問題是:根據已有的這些知識,現在能否能否開始編程使用這些開始編程使用這些I/O設備,完成相應的輸設備,完成相應的輸入輸出功能呢?若能,如何來使用?入輸出功能呢?若能,如何來使用?答案是能!答案是能!方法:程序循環(huán)檢測方法:程序循環(huán)檢測I/O(Programmed I/O)。20205.2 I/O控制方式控制方式程序循環(huán)檢測方式程序循環(huán)檢測方式(Programmed I/O);中斷驅動方式中斷驅動方式(Interrupt-driven I/O);直接內存訪問方式直接內存訪問方式(DMA, Direct Memory Access);21
14、215.2.1 程序循環(huán)檢測方式程序循環(huán)檢測方式w 基本思路:基本思路:在程序(設備驅動程序)中通過在程序(設備驅動程序)中通過不斷地檢不斷地檢測測I/OI/O設備的當前狀態(tài)設備的當前狀態(tài),來控制,來控制I/OI/O操作的完成。具體操作的完成。具體來說,在進行來說,在進行I/OI/O操作之前,要循環(huán)地檢測設備是否就操作之前,要循環(huán)地檢測設備是否就緒;在緒;在I/OI/O操作進行之中,要循環(huán)地檢測設備是否已完操作進行之中,要循環(huán)地檢測設備是否已完成;在成;在I/OI/O操作完成之后,還要把輸入的數據保存到內操作完成之后,還要把輸入的數據保存到內存(輸入操作)。從硬件來說,控制存(輸入操作)。從硬
15、件來說,控制I/OI/O的所有工作均的所有工作均由由CPUCPU來完成。來完成。w 也稱為也稱為繁忙等待繁忙等待方式(方式(busy waiting)或)或輪詢輪詢方式方式(polling)。)。w 缺點:在進行缺點:在進行I/O操作時,一直占用操作時,一直占用CPU時間。時間。2222一個例子一個例子已知已知I/O地址采用內存映像編址的方式,現需要地址采用內存映像編址的方式,現需要在打印機上打印一個字符串在打印機上打印一個字符串“ABCDEFGH”?;舅悸罚喊堰@基本思路:把這8個字符逐個送到打印機設備的個字符逐個送到打印機設備的I/O端口地址(內存地址)。端口地址(內存地址)。A B C
16、D E F G H內存內存pprinter_status_regprinter_data_register2323for (i = 0; i sys_read);該函數又調用相應的設備驅動程序,驅動該函數又調用相應的設備驅動程序,驅動程序在啟動程序在啟動I/O操作后被阻塞操作后被阻塞(-driver_read);I/O操作完成后,將產生一個中斷,然后中操作完成后,將產生一個中斷,然后中斷處理程序將接管斷處理程序將接管CPU,并喚醒被阻塞的,并喚醒被阻塞的驅動程序。驅動程序。方案一方案一5353驅動程序以什么形式存在?單獨的一個進驅動程序以什么形式存在?單獨的一個進程嗎?調用驅動時程嗎?調用驅動
17、時有無進程切換有無進程切換?中斷處理程序是誰寫的?中斷處理程序是誰寫的?OS or 廠商廠商?設備驅動程序與中斷處理程序(兩個設備驅動程序與中斷處理程序(兩個進程進程間)如何同步?間)如何同步?如果有多個進程同時都要訪問該如果有多個進程同時都要訪問該I/O設備,設備,該怎么辦?該怎么辦?問題問題5454我們要為一個簡單的字符輸入設備實現相我們要為一個簡單的字符輸入設備實現相應的設備驅動程序。應的設備驅動程序。當用戶進程需要當用戶進程需要I/O操作時,啟動相應操作時,啟動相應系統(tǒng)系統(tǒng)調用調用,最終執(zhí)行各種設備統(tǒng)一的對外接口,最終執(zhí)行各種設備統(tǒng)一的對外接口函數函數read(devID, buf,
18、size)。設備驅動程序主要由兩個函數組成:設備驅動程序主要由兩個函數組成:foo_read(),該設備對,該設備對read接口函數的具體接口函數的具體實現。實現。foo_interrupt(),中斷處理函數。,中斷處理函數。一個例子一個例子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 -ERESTART
19、SYS; foo_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(
20、DEV_FOO_DATA_PORT); foo-intr = 1; wake_up_interruptible(&foo-wait);用戶進程用戶進程A 系統(tǒng)調用系統(tǒng)調用 read foo_read 被阻塞被阻塞 用戶進程用戶進程B 被中斷被中斷 foo_interrupt A被喚醒被喚醒5757方案方案1只適合需要互斥訪問的設備。只適合需要互斥訪問的設備。塊設備如何處理?塊設備如何處理?例如:例如:A進程訪問磁盤的第進程訪問磁盤的第i個數據塊個數據塊,B進程也要訪問第進程也要訪問第i個數據塊,如何個數據塊,如何優(yōu)化,減少優(yōu)化,減少I/O操作?操作?5858數據結構:數據結構:請求隊列
21、請求隊列(request queue););塊設備驅動程序:塊設備驅動程序:上層函數上層函數,負責管理請,負責管理請求隊列;求隊列;底層函數底層函數,負責與硬件打交道,負責與硬件打交道,完成真正的完成真正的I/O;I/O請求的提交與真正實現是分離的。各個請求的提交與真正實現是分離的。各個用戶進程(通過內核)調用上層函數,提用戶進程(通過內核)調用上層函數,提交交I/O請求請求(mak_request),然后阻塞;底層函數,然后阻塞;底層函數則從隊列中取出每個則從隊列中取出每個I/O請求,并完成之。請求,并完成之。能夠對各個能夠對各個I/O請求進行優(yōu)化,如數據塊的請求進行優(yōu)化,如數據塊的重組。重
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
23、 bus or 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 設備獨立的設備獨立的I/O軟件軟件設備獨立的設備獨立的I/O軟件是
24、系統(tǒng)內核的一部分,它的基軟件是系統(tǒng)內核的一部分,它的基本任務是實現所有設備都需要的一些通用的本任務是實現所有設備都需要的一些通用的I/O功功能,并向用戶級軟件提供一個統(tǒng)一的能,并向用戶級軟件提供一個統(tǒng)一的接口接口。實現的主要功能:實現的主要功能: 給上層應用的統(tǒng)一接口;給上層應用的統(tǒng)一接口; 與設備驅動程序的統(tǒng)一接口;與設備驅動程序的統(tǒng)一接口; 提供與設備無關的數據塊大?。惶峁┡c設備無關的數據塊大??; 緩沖技術;緩沖技術;6161 提供與設備無關的數據塊大小提供與設備無關的數據塊大小磁盤的訪問是以扇區(qū)為單位,但不同的磁盤可能磁盤的訪問是以扇區(qū)為單位,但不同的磁盤可能會有不同的扇區(qū)大小,因此,設
25、備獨立的會有不同的扇區(qū)大小,因此,設備獨立的I/OI/O軟件軟件可以向上層掩蓋這一事實,并提供統(tǒng)一的邏輯塊可以向上層掩蓋這一事實,并提供統(tǒng)一的邏輯塊大小,例如,它可以將若干個物理扇區(qū)合并成一大小,例如,它可以將若干個物理扇區(qū)合并成一個邏輯塊,這樣,對于上層的軟件來說,它們所個邏輯塊,這樣,對于上層的軟件來說,它們所面對的都是一些抽象的設備,這些設備都使用相面對的都是一些抽象的設備,這些設備都使用相同大小的邏輯塊。同大小的邏輯塊。6262 緩沖技術緩沖技術w 基本思想:在實現數據的基本思想:在實現數據的I/O操作時,為緩解操作時,為緩解CPU與外部設備之間速度不匹配的矛盾,提高資源利用與外部設備
26、之間速度不匹配的矛盾,提高資源利用率,在內存中開辟一個空間,用作率,在內存中開辟一個空間,用作緩沖區(qū)(緩沖區(qū)(36M、3、1)。63635.3.6 用戶空間的用戶空間的I/O軟件軟件雖然大多數的雖然大多數的I/O軟件都包含在操作系統(tǒng)中,但也有軟件都包含在操作系統(tǒng)中,但也有一小部分是與用戶程序進行鏈接的庫函數,或者是一小部分是與用戶程序進行鏈接的庫函數,或者是完全運行在用戶空間的程序。完全運行在用戶空間的程序。v 庫函數:如庫函數:如C語言里與語言里與I/O有關的庫函數有關的庫函數write、read等,它們實質上只是將它們的參數再傳遞給等,它們實質上只是將它們的參數再傳遞給系統(tǒng)調用函數,并由后
27、者來完成實際的系統(tǒng)調用函數,并由后者來完成實際的I/O操作;操作;v Spooling技術:在多道系統(tǒng)中,一種處理獨占設技術:在多道系統(tǒng)中,一種處理獨占設備的方法。備的方法。6464Spooling技術技術w 利用利用假脫機技術假脫機技術(SPOOLing, Simultaneous Peripheral Operation On Line, 也稱虛擬設備技術)也稱虛擬設備技術)可把獨占設備轉變成具有共享特征的虛擬設備,從可把獨占設備轉變成具有共享特征的虛擬設備,從而提高設備利用率。而提高設備利用率。w 基本思想:在多道系統(tǒng)中,對于一個獨占的設備,基本思想:在多道系統(tǒng)中,對于一個獨占的設備,專
28、門利用一道程序(專門利用一道程序(SPOOLing程序)來完成對該程序)來完成對該設備的設備的I/O操作。操作。Application AApplication BSPOOLingProgramDeviceVirtual I/OActual I/O6565w 優(yōu)點:優(yōu)點: 高速的虛擬高速的虛擬I/O操作:應用程序的虛擬操作:應用程序的虛擬I/O比實比實際際I/O速度提高,縮短應用程序的執(zhí)行時間。另速度提高,縮短應用程序的執(zhí)行時間。另一方面,程序的虛擬一方面,程序的虛擬I/O操作時間和實際操作時間和實際I/O操操作時間分離開來。作時間分離開來。 實現對獨占設備的共享:由實現對獨占設備的共享:由S
29、pooling程序提供虛程序提供虛擬設備,可以對獨占設備依次共享使用。擬設備,可以對獨占設備依次共享使用。w 舉例:打印機是一種獨占設備,可用舉例:打印機是一種獨占設備,可用Spooling技術技術 創(chuàng)建一個創(chuàng)建一個Spooling進程進程 (后臺打印程序后臺打印程序, daemon)和一個和一個Spooling目錄。當進程需要打印一個文件目錄。當進程需要打印一個文件時,首先生成將要打印的文件,并放入時,首先生成將要打印的文件,并放入Spooling目錄,然后由目錄,然后由daemon進程來負責打印。進程來負責打印。66665.4 磁盤磁盤磁盤的硬件;磁盤的硬件;磁盤格式化;磁盤格式化;磁盤調
30、度算法;磁盤調度算法;出錯處理。出錯處理。67675.4.1 磁盤的硬件磁盤的硬件w 磁盤的硬件結構:磁盤(軟盤和硬盤)由一個或多磁盤的硬件結構:磁盤(軟盤和硬盤)由一個或多個金屬盤片組成,這些盤片組合固定在一根旋轉軸個金屬盤片組成,這些盤片組合固定在一根旋轉軸上,由同一個馬達驅動。每個盤片有上下兩個盤面,上,由同一個馬達驅動。每個盤片有上下兩個盤面,在盤面上涂有磁性材料,信息就記錄在這些盤面上。在盤面上涂有磁性材料,信息就記錄在這些盤面上。在每個盤面上方,都有一個磁頭,它固定在一個磁在每個盤面上方,都有一個磁頭,它固定在一個磁頭臂上,而磁頭臂又固定在一個傳動裝置上。通過頭臂上,而磁頭臂又固定
31、在一個傳動裝置上。通過磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出和修改。和修改。6868磁道磁道扇區(qū)扇區(qū)柱面柱面讀寫磁頭讀寫磁頭磁頭臂磁頭臂盤片盤片傳動裝置傳動裝置旋轉軸旋轉軸移動方向移動方向6969w 磁道磁道:當傳動裝置固定在某個位置時,若盤面旋轉:當傳動裝置固定在某個位置時,若盤面旋轉一圈,磁頭所能訪問的圓環(huán)區(qū)域;一圈,磁頭所能訪問的圓環(huán)區(qū)域;w 柱面柱面:在所有盤面上,半徑相同的所有磁道即組成:在所有盤面上,半徑相同的所有磁道即組成一個柱面;一個柱面;w 扇區(qū)扇區(qū):每一個磁道被劃分為若干個扇區(qū);:每一個磁道被劃分為若干個扇區(qū);w 磁盤的訪問
32、過程磁盤的訪問過程:以扇區(qū)作為最小的尋址和存取單:以扇區(qū)作為最小的尋址和存取單位。首先移動傳動裝置,通過它來移動磁頭,從而位。首先移動傳動裝置,通過它來移動磁頭,從而定位正確的柱面。然后選中相應的磁頭,等我們想定位正確的柱面。然后選中相應的磁頭,等我們想要的扇區(qū)正好路過這個磁頭正下方的時候,就可以要的扇區(qū)正好路過這個磁頭正下方的時候,就可以對它進行訪問了。對它進行訪問了。7070w如何寫一個字節(jié)?讀修改寫如何寫一個字節(jié)?讀修改寫 讀入包含該字節(jié)的扇區(qū);讀入包含該字節(jié)的扇區(qū); 修改該字節(jié);修改該字節(jié); 把整個扇區(qū)寫回到磁盤;把整個扇區(qū)寫回到磁盤;7171參數參數IBM 360-KB軟盤軟盤Bar
33、racuda 180硬盤硬盤柱面數柱面數4024247磁道數磁道數 柱面柱面224扇區(qū)扇區(qū) 磁道磁道9609(平均平均)扇區(qū)扇區(qū) 磁盤磁盤72035742000字節(jié)數字節(jié)數 扇區(qū)扇區(qū)512512磁盤容量磁盤容量360KB181GB柱面定位柱面定位(相鄰相鄰)6毫秒毫秒0.8毫秒毫秒柱面定位柱面定位(平均平均)77毫秒毫秒7.4毫秒毫秒旋轉時間旋轉時間200毫秒毫秒8.33毫秒毫秒馬達啟馬達啟/停時間停時間250毫秒毫秒20秒秒扇區(qū)傳送時間扇區(qū)傳送時間22毫秒毫秒17微秒微秒7272虛擬磁盤地址虛擬磁盤地址w 物理地址:柱面號、盤面號(磁頭號)、扇區(qū)號;物理地址:柱面號、盤面號(磁頭號)、扇區(qū)號
34、;這隱含著兩個約束條件:每個柱面上的盤面?zhèn)€數都這隱含著兩個約束條件:每個柱面上的盤面?zhèn)€數都是一樣的;每個磁道上的扇區(qū)個數都是一樣的。是一樣的;每個磁道上的扇區(qū)個數都是一樣的。w 考慮到半徑不同的磁道,其圓環(huán)區(qū)域的考慮到半徑不同的磁道,其圓環(huán)區(qū)域的面積不同面積不同,現代磁盤在設計時,把所有磁道按半徑大小,劃分現代磁盤在設計時,把所有磁道按半徑大小,劃分為若干個環(huán)帶,在不同環(huán)帶上,每個磁道所劃分的為若干個環(huán)帶,在不同環(huán)帶上,每個磁道所劃分的扇區(qū)數是不一樣的,這就違背了第二個約束條件;扇區(qū)數是不一樣的,這就違背了第二個約束條件;w 虛擬地址:把每個磁道多少個扇區(qū)等物理細節(jié)隱藏虛擬地址:把每個磁道多少
35、個扇區(qū)等物理細節(jié)隱藏在設備內部,對外提供統(tǒng)一的虛擬地址在設備內部,對外提供統(tǒng)一的虛擬地址(x, y, z),即,即虛擬的柱面號、盤面號和扇區(qū)號,對內再將其映射虛擬的柱面號、盤面號和扇區(qū)號,對內再將其映射為實際的柱面、盤面和扇區(qū)(由控制器完成)。為實際的柱面、盤面和扇區(qū)(由控制器完成)。7373物理扇區(qū)分布物理扇區(qū)分布虛擬扇區(qū)分布虛擬扇區(qū)分布32 4 + 16 4 = 19224 8 = 19274745.4.2 磁盤格式化磁盤格式化w 硬盤的格式化可分為三個步驟,即低級格式化、分硬盤的格式化可分為三個步驟,即低級格式化、分區(qū)和高級格式化。區(qū)和高級格式化。w 低級格式化:標出低級格式化:標出磁道
36、磁道和和扇區(qū)扇區(qū),在相鄰的扇區(qū)之間,在相鄰的扇區(qū)之間有狹窄的間隙隔開。一個扇區(qū)的格式是:相位編碼有狹窄的間隙隔開。一個扇區(qū)的格式是:相位編碼(preamble)數據區(qū)糾錯碼()數據區(qū)糾錯碼(ECC)。)。F 相位編碼:以某個特定的位組合模式開始,向相位編碼:以某個特定的位組合模式開始,向硬件表明這是一個新扇區(qū)的開始。還包括柱面硬件表明這是一個新扇區(qū)的開始。還包括柱面號、扇區(qū)號、扇區(qū)大小等類似信息;號、扇區(qū)號、扇區(qū)大小等類似信息;F 數據區(qū):由格式化程序確定其大小,一般數據區(qū):由格式化程序確定其大小,一般512;F 糾錯碼:包含冗余信息,用來糾正讀取錯誤;糾錯碼:包含冗余信息,用來糾正讀取錯誤;
37、7575w 分區(qū)分區(qū):用分區(qū)軟件把整個硬盤劃分為若干個邏輯分:用分區(qū)軟件把整個硬盤劃分為若干個邏輯分區(qū),每個分區(qū)可視為一個獨立的磁盤。在多數計算區(qū),每個分區(qū)可視為一個獨立的磁盤。在多數計算機上,用第機上,用第0個扇區(qū)來存放一些系統(tǒng)啟動代碼和一個扇區(qū)來存放一些系統(tǒng)啟動代碼和一個分區(qū)表,記錄了每個分區(qū)的起始扇區(qū)和大小。個分區(qū)表,記錄了每個分區(qū)的起始扇區(qū)和大小。w 高級格式化高級格式化:對每一個邏輯分區(qū),分別進行一種高:對每一個邏輯分區(qū),分別進行一種高級格式化(即通常的格式化操作),生成一個引導級格式化(即通常的格式化操作),生成一個引導塊、空閑存儲管理結構、根目錄和一個空白的文件塊、空閑存儲管理結
38、構、根目錄和一個空白的文件系統(tǒng)。對不同的分區(qū),可以使用不同的文件系統(tǒng),系統(tǒng)。對不同的分區(qū),可以使用不同的文件系統(tǒng),如如FAT16、FAT32、NTFS等。等。76765.4.3 磁盤調度算法磁盤調度算法磁盤的訪問是以扇區(qū)作為最小的尋址和存取單位,磁盤的訪問是以扇區(qū)作為最小的尋址和存取單位,在訪問一個磁盤扇區(qū)時,所需的時間主要有:在訪問一個磁盤扇區(qū)時,所需的時間主要有: 柱面定位時間:磁頭在磁頭臂牽引下,移動到指柱面定位時間:磁頭在磁頭臂牽引下,移動到指定柱面的機械運動時間;定柱面的機械運動時間; 旋轉延遲時間:等待指定的扇區(qū)旋轉到磁頭的正旋轉延遲時間:等待指定的扇區(qū)旋轉到磁頭的正下方所需的機械
39、運動時間;它與磁盤轉速有關,下方所需的機械運動時間;它與磁盤轉速有關,如:軟盤轉速可為如:軟盤轉速可為600rpm(每分鐘轉速每分鐘轉速),硬盤可,硬盤可為為7,200rpm至至10,000rpm; 數據傳送時間:從指定扇區(qū)讀寫數據的時間。數據傳送時間:從指定扇區(qū)讀寫數據的時間。7777方法方法1:合理地組織磁盤數據的存儲位置合理地組織磁盤數據的存儲位置。例子:磁盤的轉速為例子:磁盤的轉速為10,000rpm,每個磁道有,每個磁道有300個扇個扇區(qū),每個扇區(qū)有區(qū),每個扇區(qū)有512字節(jié),現要讀一個字節(jié),現要讀一個150KB的文件。的文件。假設柱面定位假設柱面定位(平均平均)時間為時間為6.9毫秒
40、,旋轉延遲毫秒,旋轉延遲(平均平均)時時間為旋轉時間的一半間為旋轉時間的一半(3ms),扇區(qū)數據傳送時間,扇區(qū)數據傳送時間17微秒;微秒;(1)文件由同一個磁道上的文件由同一個磁道上的300個連續(xù)扇區(qū)構成:個連續(xù)扇區(qū)構成:(2)文件由文件由300個隨機分布的扇區(qū)構成:個隨機分布的扇區(qū)構成:隨機分布時的訪問時間為連續(xù)分布時的隨機分布時的訪問時間為連續(xù)分布時的187倍。倍。如何提高磁盤訪問速度?如何提高磁盤訪問速度?6.9ms + 3ms + 6ms = 15.9ms; (why?)(6.9ms + 3ms + 0.017ms)*300 = 2975.1ms;7878方法方法2:磁盤調度。:磁盤調
41、度。如何提高磁盤訪問速度?如何提高磁盤訪問速度?w 對于大多數磁盤來說,柱面定位時間(磁頭移動時對于大多數磁盤來說,柱面定位時間(磁頭移動時間)在訪問時間中占主要部分,因此減少平均的柱間)在訪問時間中占主要部分,因此減少平均的柱面定位時間將有效地改進系統(tǒng)的輸入輸出性能。面定位時間將有效地改進系統(tǒng)的輸入輸出性能。w 基本思路:來自基本思路:來自不同進程不同進程的磁盤訪問請求構成一個的磁盤訪問請求構成一個隨機分布的請求隊列。磁盤調度的基本思路就是通隨機分布的請求隊列。磁盤調度的基本思路就是通過對這些過對這些I/O請求的執(zhí)行順序進行調整,來減少整請求的執(zhí)行順序進行調整,來減少整個請求隊列所對應的平均
42、柱面定位時間。個請求隊列所對應的平均柱面定位時間。w 磁盤調度算法:磁盤調度程序所采用的算法。磁盤調度算法:磁盤調度程序所采用的算法。誰來做這件事情?誰來做這件事情?79791. 先來先服務算法先來先服務算法w 先來先服務先來先服務(First-Come First-Served, FCFS):按訪:按訪問請求到達的先后順序來依次執(zhí)行。問請求到達的先后順序來依次執(zhí)行。w 優(yōu)點:簡單、公平;優(yōu)點:簡單、公平;w 缺點:效率不高。相鄰的兩次訪問請求可能相距甚缺點:效率不高。相鄰的兩次訪問請求可能相距甚遠,從而使磁頭反復地移動較長的距離。遠,從而使磁頭反復地移動較長的距離。w 舉例:假設一個磁盤總共
43、有舉例:假設一個磁盤總共有200個柱面,它們的編個柱面,它們的編號為號為0199,訪問請求的到達順序為(柱面號):,訪問請求的到達順序為(柱面號):98,183,37,122,14,124,65,67,磁頭的起,磁頭的起始位置在始位置在53,計算磁頭移動總距離。,計算磁頭移動總距離。8080(本圖摘自(本圖摘自Silberschatz, Galvin and Gagne: “Operating System Concepts” )458514685108110592在在FCFS算法下,在算法下,在8次磁盤訪問中,磁頭總共移動次磁盤訪問中,磁頭總共移動的距離為的距離為640,平均的移動距離為,平均的移動距離為80。81812. 最短定位時間優(yōu)先最短定位時間優(yōu)先w 最短定位時間優(yōu)先最短定位時間優(yōu)先(Shortest Seek Time First, SSTF):從訪問請求隊列當中,選擇從當前磁頭位置出發(fā),從訪問請求隊列當中,選擇從當前磁頭位置出發(fā),移動最少的訪問請求去執(zhí)行。移動最少的訪問請求去執(zhí)行。w 該算法的目標是使每次磁頭移動時間最少。它不一該算法的目標是使每次磁頭移動時間最少。它不一定是最短平均柱面定位時間,但比定是最短平均柱面定位時間,但比FCFS算法有更算法有更好的性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論