版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、11第五章第五章 I/O設(shè)備管理設(shè)備管理操作系統(tǒng)的目標(biāo)就是給用戶提供一個高操作系統(tǒng)的目標(biāo)就是給用戶提供一個高層的機(jī)器接口(虛擬機(jī));層的機(jī)器接口(虛擬機(jī));在現(xiàn)代計算機(jī)系統(tǒng)中,有大量的輸入輸在現(xiàn)代計算機(jī)系統(tǒng)中,有大量的輸入輸出設(shè)備,其種類繁多,差異大。而且隨出設(shè)備,其種類繁多,差異大。而且隨著技術(shù)的發(fā)展,著技術(shù)的發(fā)展,新設(shè)備新設(shè)備也不斷地出現(xiàn)。也不斷地出現(xiàn)。因此,如何管理好這些設(shè)備,使資源得因此,如何管理好這些設(shè)備,使資源得以合理的利用,是操作系統(tǒng)的一個主要以合理的利用,是操作系統(tǒng)的一個主要功能。功能。221. I/O硬件硬件2. I/O控制方式控制方式3. I/O軟件軟件4. 磁盤磁盤本章的
2、組織結(jié)構(gòu)本章的組織結(jié)構(gòu)335.1 I/O硬件硬件 對于對于I/O硬件,硬件,操作系統(tǒng)操作系統(tǒng)所關(guān)心的并不是所關(guān)心的并不是硬件自身的設(shè)計、制造和維護(hù),而是如何來硬件自身的設(shè)計、制造和維護(hù),而是如何來對它進(jìn)行編程,即該設(shè)備給軟件提供的接口對它進(jìn)行編程,即該設(shè)備給軟件提供的接口是什么,包括它所接受的控制命令、所完成是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出錯報告。的功能,以及所返回的出錯報告。445.1.1 I/O設(shè)備的類型設(shè)備的類型人機(jī)交互設(shè)備人機(jī)交互設(shè)備:視頻顯示設(shè)備視頻顯示設(shè)備,鍵盤鍵盤,打印機(jī)打印機(jī);按交互方向分類:按交互方向分類: 輸入設(shè)備:鍵盤、鼠標(biāo)、掃描儀;輸入設(shè)備:
3、鍵盤、鼠標(biāo)、掃描儀; 到計算機(jī)中到計算機(jī)中 輸出設(shè)備:顯示器、打印機(jī);輸出設(shè)備:顯示器、打印機(jī); 從計算機(jī)中從計算機(jī)中 輸入輸入/輸出:磁盤、網(wǎng)卡。輸出:磁盤、網(wǎng)卡。55按數(shù)據(jù)組織分類:按數(shù)據(jù)組織分類: 塊設(shè)備塊設(shè)備:以數(shù)據(jù)塊來作為信息的存儲和傳輸單:以數(shù)據(jù)塊來作為信息的存儲和傳輸單位,每個數(shù)據(jù)塊都有一個地址,可以直接定位位,每個數(shù)據(jù)塊都有一個地址,可以直接定位和訪問和訪問.數(shù)據(jù)塊之間的讀寫操作是相互獨立的數(shù)據(jù)塊之間的讀寫操作是相互獨立的,如磁盤;,如磁盤; 字符設(shè)備字符設(shè)備:以字符作為信息的存儲和傳輸單位:以字符作為信息的存儲和傳輸單位,只給順序訪問,只給順序訪問-數(shù)據(jù)即字符流,無定位無尋數(shù)
4、據(jù)即字符流,無定位無尋址,如鼠標(biāo);址,如鼠標(biāo);按數(shù)據(jù)傳輸率分類:按數(shù)據(jù)傳輸率分類:低速低速(如鍵盤如鍵盤)、中速、中速(如打如打印機(jī)印機(jī))、高速、高速(如網(wǎng)卡、磁盤如網(wǎng)卡、磁盤)。665.1.2 設(shè)備控制器設(shè)備控制器機(jī)械部分機(jī)械部分電子部分電子部分每一個每一個I/O單元由兩部分組成:單元由兩部分組成:機(jī)械部分機(jī)械部分和和 電子部分電子部分。把它們分開,以提供更加模塊化、更通用的設(shè)計。把它們分開,以提供更加模塊化、更通用的設(shè)計。視頻控視頻控制器制器77機(jī)械部分即為機(jī)械部分即為I/O設(shè)備本身設(shè)備本身;電子部分稱為:電子部分稱為:設(shè)備控制器設(shè)備控制器(device controller)或)或適配器
5、適配器(adapter)。)。 適配器適配器的形式通常是印刷電路卡,可以插入的形式通常是印刷電路卡,可以插入到主板的擴(kuò)充槽中;到主板的擴(kuò)充槽中; 控制器控制器的形式是一組芯片的形式是一組芯片,主要集成在主版或主要集成在主版或I/O設(shè)備內(nèi)部;設(shè)備內(nèi)部;兩者功能相同兩者功能相同:完成設(shè)備與主機(jī)間的連接和完成設(shè)備與主機(jī)間的連接和通訊。通訊。8例如例如:v顯示器顯示器-機(jī)械設(shè)備機(jī)械設(shè)備,不能顯示字符不能顯示字符v視頻控制器視頻控制器(顯卡顯卡)-插在主版上插在主版上v顯示器與顯卡相連顯示器與顯卡相連-從計算機(jī)讀數(shù)據(jù)顯示從計算機(jī)讀數(shù)據(jù)顯示995.1.3 I/O地址地址 每個設(shè)備控制器都有一些每個設(shè)備控制
6、器都有一些寄存器寄存器用來與用來與CPU通信。通通信。通過這些寄存器中寫入不同的值,過這些寄存器中寫入不同的值,OS能命令該設(shè)備去能命令該設(shè)備去執(zhí)行發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、打開、關(guān)閉等操作;執(zhí)行發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、打開、關(guān)閉等操作;OS也也能通過讀取這些寄存器的值來了解設(shè)備的當(dāng)前狀態(tài)。能通過讀取這些寄存器的值來了解設(shè)備的當(dāng)前狀態(tài)。 此外,許多控制器還有一個此外,許多控制器還有一個數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)供供OS讀寫。讀寫。CPU外外部部設(shè)設(shè)備備控控制制邏邏輯輯電電路路控制寄存器控制寄存器狀態(tài)寄存器狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器1010現(xiàn)在的問題是:現(xiàn)在的問題是:CPU如何與設(shè)備控制器當(dāng)如何與設(shè)備控制器
7、當(dāng)中的寄存器進(jìn)行通信?中的寄存器進(jìn)行通信?如何訪問設(shè)備的數(shù)據(jù)如何訪問設(shè)備的數(shù)據(jù)緩沖區(qū)?因為這不是普通的緩沖區(qū)?因為這不是普通的內(nèi)存訪問內(nèi)存訪問!方法有三種:方法有三種: I/O獨立編址;獨立編址; 內(nèi)存映像編址;內(nèi)存映像編址; 混合編址。混合編址。11111. I/O獨立編址獨立編址w 基本思路:給控制器中的基本思路:給控制器中的每一個寄存器每一個寄存器分配一個唯分配一個唯一的一的I/O端口(端口(I/O port)編號,稱為)編號,稱為I/O端口地址,端口地址,然后用專門的然后用專門的I/O指令對端口進(jìn)行操作;指令對端口進(jìn)行操作;w 這些端口地址所構(gòu)成的這些端口地址所構(gòu)成的地址空間是完全獨立
8、的,地址空間是完全獨立的,與內(nèi)存的地址空間沒有與內(nè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)點:優(yōu)點:I/O設(shè)備不占用內(nèi)存地址空間,而且設(shè)備不占用內(nèi)存地址空間,而且程序設(shè)計時,易于區(qū)分是對內(nèi)存操作還是對程序設(shè)計時,易于區(qū)分是對內(nèi)存操作還是對I/O端口操作。端口操作。w例子:例子:8086/8088,給,給I/O端口分配的地址端口分配的地址空間空間64K,0000HFFFFH, 只有只有IN和和OUT指令進(jìn)行讀寫操作。指令進(jìn)行讀寫操作。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. 內(nèi)存映像編址內(nèi)存映像編址w 基本思路:把所有控制器當(dāng)中的每一個寄存器都映基本思路:把所有控制器當(dāng)中的每一個寄存器都映射為一個內(nèi)存地址,專門用于射為一個內(nèi)存地址,專門用于I/O操作(功能上),操作(功能上),對這些單元的讀寫操作即為普通的內(nèi)存訪問操作。對這些單元的讀寫操作即為普通的內(nèi)存訪問操作。w 端口地址空間與內(nèi)存的地址空間統(tǒng)一編址,前者是端口地址空間與內(nèi)存的地址空間統(tǒng)一編址,前者是后者的一部分,一般位于后者的頂端部分。后者的一部分,一般位于后者的頂端部分。1515w優(yōu)點:優(yōu)點:F 編程方便,無需編程方便,無需專門的專門的I/O指令指令(C vs
11、. 匯匯編編);F 對普通的內(nèi)存單元可進(jìn)行的所有操作指令對普通的內(nèi)存單元可進(jìn)行的所有操作指令均可作用于均可作用于I/O端口,如端口,如TEST指令;指令;F 無須專門的保護(hù)機(jī)制來防止用戶進(jìn)程執(zhí)行無須專門的保護(hù)機(jī)制來防止用戶進(jìn)程執(zhí)行I/O。1616w缺點:缺點:F 不能對控制寄存器的內(nèi)容進(jìn)行不能對控制寄存器的內(nèi)容進(jìn)行Cache,必,必須關(guān)閉;須關(guān)閉;F 每一次都要判斷訪問的是內(nèi)存還是每一次都要判斷訪問的是內(nèi)存還是I/O。17173. 混合編址混合編址w 基本思路:對于設(shè)備控制器中的寄存器,采用獨立基本思路:對于設(shè)備控制器中的寄存器,采用獨立編址的方法;而對于設(shè)備的數(shù)據(jù)緩沖區(qū),采用內(nèi)存編址的方法;
12、而對于設(shè)備的數(shù)據(jù)緩沖區(qū),采用內(nèi)存映像編址的方法。映像編址的方法。w 例如:例如:Pentium,把內(nèi)存地址空間,把內(nèi)存地址空間640K1M保留作保留作為設(shè)備的數(shù)據(jù)緩沖區(qū),另外,還有一個獨立的為設(shè)備的數(shù)據(jù)緩沖區(qū),另外,還有一個獨立的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的端口地
13、址?,F(xiàn)在的的端口地址。現(xiàn)在的問題是:根據(jù)已有的這些知識,現(xiàn)在問題是:根據(jù)已有的這些知識,現(xiàn)在能否能否開始編程使用這些開始編程使用這些I/O設(shè)備,完成相應(yīng)的輸設(shè)備,完成相應(yīng)的輸入輸出功能呢?若能,如何來使用?入輸出功能呢?若能,如何來使用?答案是能!答案是能!方法:程序循環(huán)檢測方法:程序循環(huán)檢測I/O(Programmed I/O)。20205.2 I/O控制方式控制方式程序循環(huán)檢測方式程序循環(huán)檢測方式(Programmed I/O);中斷驅(qū)動方式中斷驅(qū)動方式(Interrupt-driven I/O);直接內(nèi)存訪問方式直接內(nèi)存訪問方式(DMA, Direct Memory Access);21
14、215.2.1 程序循環(huán)檢測方式程序循環(huán)檢測方式w 基本思路:基本思路:在程序(設(shè)備驅(qū)動程序)中通過在程序(設(shè)備驅(qū)動程序)中通過不斷地檢不斷地檢測測I/OI/O設(shè)備的當(dāng)前狀態(tài)設(shè)備的當(dāng)前狀態(tài),來控制,來控制I/OI/O操作的完成。具體操作的完成。具體來說,在進(jìn)行來說,在進(jìn)行I/OI/O操作之前,要循環(huán)地檢測設(shè)備是否就操作之前,要循環(huán)地檢測設(shè)備是否就緒;在緒;在I/OI/O操作進(jìn)行之中,要循環(huán)地檢測設(shè)備是否已完操作進(jìn)行之中,要循環(huán)地檢測設(shè)備是否已完成;在成;在I/OI/O操作完成之后,還要把輸入的數(shù)據(jù)保存到內(nèi)操作完成之后,還要把輸入的數(shù)據(jù)保存到內(nèi)存(輸入操作)。從硬件來說,控制存(輸入操作)。從硬
15、件來說,控制I/OI/O的所有工作均的所有工作均由由CPUCPU來完成。來完成。w 也稱為也稱為繁忙等待繁忙等待方式(方式(busy waiting)或)或輪詢輪詢方式方式(polling)。)。w 缺點:在進(jìn)行缺點:在進(jìn)行I/O操作時,一直占用操作時,一直占用CPU時間。時間。2222一個例子一個例子已知已知I/O地址采用內(nèi)存映像編址的方式,現(xiàn)需要地址采用內(nèi)存映像編址的方式,現(xiàn)需要在打印機(jī)上打印一個字符串在打印機(jī)上打印一個字符串“ABCDEFGH”?;舅悸罚喊堰@基本思路:把這8個字符逐個送到打印機(jī)設(shè)備的個字符逐個送到打印機(jī)設(shè)備的I/O端口地址(內(nèi)存地址)。端口地址(內(nèi)存地址)。A B C
16、D E F G H內(nèi)存內(nèi)存pprinter_status_regprinter_data_register2323for (i = 0; i sys_read);該函數(shù)又調(diào)用相應(yīng)的設(shè)備驅(qū)動程序,驅(qū)動該函數(shù)又調(diào)用相應(yīng)的設(shè)備驅(qū)動程序,驅(qū)動程序在啟動程序在啟動I/O操作后被阻塞操作后被阻塞(-driver_read);I/O操作完成后,將產(chǎn)生一個中斷,然后中操作完成后,將產(chǎn)生一個中斷,然后中斷處理程序?qū)⒔庸軘嗵幚沓绦驅(qū)⒔庸蹸PU,并喚醒被阻塞的,并喚醒被阻塞的驅(qū)動程序。驅(qū)動程序。方案一方案一5353驅(qū)動程序以什么形式存在?單獨的一個進(jìn)驅(qū)動程序以什么形式存在?單獨的一個進(jìn)程嗎?調(diào)用驅(qū)動時程嗎?調(diào)用驅(qū)動
17、時有無進(jìn)程切換有無進(jìn)程切換?中斷處理程序是誰寫的?中斷處理程序是誰寫的?OS or 廠商廠商?設(shè)備驅(qū)動程序與中斷處理程序(兩個設(shè)備驅(qū)動程序與中斷處理程序(兩個進(jìn)程進(jìn)程間)如何同步?間)如何同步?如果有多個進(jìn)程同時都要訪問該如果有多個進(jìn)程同時都要訪問該I/O設(shè)備,設(shè)備,該怎么辦?該怎么辦?問題問題5454我們要為一個簡單的字符輸入設(shè)備實現(xiàn)相我們要為一個簡單的字符輸入設(shè)備實現(xiàn)相應(yīng)的設(shè)備驅(qū)動程序。應(yīng)的設(shè)備驅(qū)動程序。當(dāng)用戶進(jìn)程需要當(dāng)用戶進(jìn)程需要I/O操作時,啟動相應(yīng)操作時,啟動相應(yīng)系統(tǒng)系統(tǒng)調(diào)用調(diào)用,最終執(zhí)行各種設(shè)備統(tǒng)一的對外接口,最終執(zhí)行各種設(shè)備統(tǒng)一的對外接口函數(shù)函數(shù)read(devID, buf,
18、size)。設(shè)備驅(qū)動程序主要由兩個函數(shù)組成:設(shè)備驅(qū)動程序主要由兩個函數(shù)組成:foo_read(),該設(shè)備對,該設(shè)備對read接口函數(shù)的具體接口函數(shù)的具體實現(xiàn)。實現(xiàn)。foo_interrupt(),中斷處理函數(shù)。,中斷處理函數(shù)。一個例子一個例子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);用戶進(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只適合需要互斥訪問的設(shè)備。只適合需要互斥訪問的設(shè)備。塊設(shè)備如何處理?塊設(shè)備如何處理?例如:例如:A進(jìn)程訪問磁盤的第進(jìn)程訪問磁盤的第i個數(shù)據(jù)塊個數(shù)據(jù)塊,B進(jìn)程也要訪問第進(jìn)程也要訪問第i個數(shù)據(jù)塊,如何個數(shù)據(jù)塊,如何優(yōu)化,減少優(yōu)化,減少I/O操作?操作?5858數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu):請求隊列
21、請求隊列(request queue););塊設(shè)備驅(qū)動程序:塊設(shè)備驅(qū)動程序:上層函數(shù)上層函數(shù),負(fù)責(zé)管理請,負(fù)責(zé)管理請求隊列;求隊列;底層函數(shù)底層函數(shù),負(fù)責(zé)與硬件打交道,負(fù)責(zé)與硬件打交道,完成真正的完成真正的I/O;I/O請求的提交與真正實現(xiàn)是分離的。各個請求的提交與真正實現(xiàn)是分離的。各個用戶進(jìn)程(通過內(nèi)核)調(diào)用上層函數(shù),提用戶進(jìn)程(通過內(nèi)核)調(diào)用上層函數(shù),提交交I/O請求請求(mak_request),然后阻塞;底層函數(shù),然后阻塞;底層函數(shù)則從隊列中取出每個則從隊列中取出每個I/O請求,并完成之。請求,并完成之。能夠?qū)Ω鱾€能夠?qū)Ω鱾€I/O請求進(jìn)行優(yōu)化,如數(shù)據(jù)塊的請求進(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
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 設(shè)備獨立的設(shè)備獨立的I/O軟件軟件設(shè)備獨立的設(shè)備獨立的I/O軟件是
24、系統(tǒng)內(nèi)核的一部分,它的基軟件是系統(tǒng)內(nèi)核的一部分,它的基本任務(wù)是實現(xiàn)所有設(shè)備都需要的一些通用的本任務(wù)是實現(xiàn)所有設(shè)備都需要的一些通用的I/O功功能,并向用戶級軟件提供一個統(tǒng)一的能,并向用戶級軟件提供一個統(tǒng)一的接口接口。實現(xiàn)的主要功能:實現(xiàn)的主要功能: 給上層應(yīng)用的統(tǒng)一接口;給上層應(yīng)用的統(tǒng)一接口; 與設(shè)備驅(qū)動程序的統(tǒng)一接口;與設(shè)備驅(qū)動程序的統(tǒng)一接口; 提供與設(shè)備無關(guān)的數(shù)據(jù)塊大小;提供與設(shè)備無關(guān)的數(shù)據(jù)塊大小; 緩沖技術(shù);緩沖技術(shù);6161 提供與設(shè)備無關(guān)的數(shù)據(jù)塊大小提供與設(shè)備無關(guān)的數(shù)據(jù)塊大小磁盤的訪問是以扇區(qū)為單位,但不同的磁盤可能磁盤的訪問是以扇區(qū)為單位,但不同的磁盤可能會有不同的扇區(qū)大小,因此,設(shè)
25、備獨立的會有不同的扇區(qū)大小,因此,設(shè)備獨立的I/OI/O軟件軟件可以向上層掩蓋這一事實,并提供統(tǒng)一的邏輯塊可以向上層掩蓋這一事實,并提供統(tǒng)一的邏輯塊大小,例如,它可以將若干個物理扇區(qū)合并成一大小,例如,它可以將若干個物理扇區(qū)合并成一個邏輯塊,這樣,對于上層的軟件來說,它們所個邏輯塊,這樣,對于上層的軟件來說,它們所面對的都是一些抽象的設(shè)備,這些設(shè)備都使用相面對的都是一些抽象的設(shè)備,這些設(shè)備都使用相同大小的邏輯塊。同大小的邏輯塊。6262 緩沖技術(shù)緩沖技術(shù)w 基本思想:在實現(xiàn)數(shù)據(jù)的基本思想:在實現(xiàn)數(shù)據(jù)的I/O操作時,為緩解操作時,為緩解CPU與外部設(shè)備之間速度不匹配的矛盾,提高資源利用與外部設(shè)備
26、之間速度不匹配的矛盾,提高資源利用率,在內(nèi)存中開辟一個空間,用作率,在內(nèi)存中開辟一個空間,用作緩沖區(qū)(緩沖區(qū)(36M、3、1)。63635.3.6 用戶空間的用戶空間的I/O軟件軟件雖然大多數(shù)的雖然大多數(shù)的I/O軟件都包含在操作系統(tǒng)中,但也有軟件都包含在操作系統(tǒng)中,但也有一小部分是與用戶程序進(jìn)行鏈接的庫函數(shù),或者是一小部分是與用戶程序進(jìn)行鏈接的庫函數(shù),或者是完全運行在用戶空間的程序。完全運行在用戶空間的程序。v 庫函數(shù):如庫函數(shù):如C語言里與語言里與I/O有關(guān)的庫函數(shù)有關(guān)的庫函數(shù)write、read等,它們實質(zhì)上只是將它們的參數(shù)再傳遞給等,它們實質(zhì)上只是將它們的參數(shù)再傳遞給系統(tǒng)調(diào)用函數(shù),并由后
27、者來完成實際的系統(tǒng)調(diào)用函數(shù),并由后者來完成實際的I/O操作;操作;v Spooling技術(shù):在多道系統(tǒng)中,一種處理獨占設(shè)技術(shù):在多道系統(tǒng)中,一種處理獨占設(shè)備的方法。備的方法。6464Spooling技術(shù)技術(shù)w 利用利用假脫機(jī)技術(shù)假脫機(jī)技術(shù)(SPOOLing, Simultaneous Peripheral Operation On Line, 也稱虛擬設(shè)備技術(shù))也稱虛擬設(shè)備技術(shù))可把獨占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從可把獨占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從而提高設(shè)備利用率。而提高設(shè)備利用率。w 基本思想:在多道系統(tǒng)中,對于一個獨占的設(shè)備,基本思想:在多道系統(tǒng)中,對于一個獨占的設(shè)備,專
28、門利用一道程序(專門利用一道程序(SPOOLing程序)來完成對該程序)來完成對該設(shè)備的設(shè)備的I/O操作。操作。Application AApplication BSPOOLingProgramDeviceVirtual I/OActual I/O6565w 優(yōu)點:優(yōu)點: 高速的虛擬高速的虛擬I/O操作:應(yīng)用程序的虛擬操作:應(yīng)用程序的虛擬I/O比實比實際際I/O速度提高,縮短應(yīng)用程序的執(zhí)行時間。另速度提高,縮短應(yīng)用程序的執(zhí)行時間。另一方面,程序的虛擬一方面,程序的虛擬I/O操作時間和實際操作時間和實際I/O操操作時間分離開來。作時間分離開來。 實現(xiàn)對獨占設(shè)備的共享:由實現(xiàn)對獨占設(shè)備的共享:由S
29、pooling程序提供虛程序提供虛擬設(shè)備,可以對獨占設(shè)備依次共享使用。擬設(shè)備,可以對獨占設(shè)備依次共享使用。w 舉例:打印機(jī)是一種獨占設(shè)備,可用舉例:打印機(jī)是一種獨占設(shè)備,可用Spooling技術(shù)技術(shù) 創(chuàng)建一個創(chuàng)建一個Spooling進(jìn)程進(jìn)程 (后臺打印程序后臺打印程序, daemon)和一個和一個Spooling目錄。當(dāng)進(jìn)程需要打印一個文件目錄。當(dāng)進(jìn)程需要打印一個文件時,首先生成將要打印的文件,并放入時,首先生成將要打印的文件,并放入Spooling目錄,然后由目錄,然后由daemon進(jìn)程來負(fù)責(zé)打印。進(jìn)程來負(fù)責(zé)打印。66665.4 磁盤磁盤磁盤的硬件;磁盤的硬件;磁盤格式化;磁盤格式化;磁盤調(diào)
30、度算法;磁盤調(diào)度算法;出錯處理。出錯處理。67675.4.1 磁盤的硬件磁盤的硬件w 磁盤的硬件結(jié)構(gòu):磁盤(軟盤和硬盤)由一個或多磁盤的硬件結(jié)構(gòu):磁盤(軟盤和硬盤)由一個或多個金屬盤片組成,這些盤片組合固定在一根旋轉(zhuǎn)軸個金屬盤片組成,這些盤片組合固定在一根旋轉(zhuǎn)軸上,由同一個馬達(dá)驅(qū)動。每個盤片有上下兩個盤面,上,由同一個馬達(dá)驅(qū)動。每個盤片有上下兩個盤面,在盤面上涂有磁性材料,信息就記錄在這些盤面上。在盤面上涂有磁性材料,信息就記錄在這些盤面上。在每個盤面上方,都有一個磁頭,它固定在一個磁在每個盤面上方,都有一個磁頭,它固定在一個磁頭臂上,而磁頭臂又固定在一個傳動裝置上。通過頭臂上,而磁頭臂又固定
31、在一個傳動裝置上。通過磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出和修改。和修改。6868磁道磁道扇區(qū)扇區(qū)柱面柱面讀寫磁頭讀寫磁頭磁頭臂磁頭臂盤片盤片傳動裝置傳動裝置旋轉(zhuǎn)軸旋轉(zhuǎn)軸移動方向移動方向6969w 磁道磁道:當(dāng)傳動裝置固定在某個位置時,若盤面旋轉(zhuǎn):當(dāng)傳動裝置固定在某個位置時,若盤面旋轉(zhuǎn)一圈,磁頭所能訪問的圓環(huán)區(qū)域;一圈,磁頭所能訪問的圓環(huán)區(qū)域;w 柱面柱面:在所有盤面上,半徑相同的所有磁道即組成:在所有盤面上,半徑相同的所有磁道即組成一個柱面;一個柱面;w 扇區(qū)扇區(qū):每一個磁道被劃分為若干個扇區(qū);:每一個磁道被劃分為若干個扇區(qū);w 磁盤的訪問
32、過程磁盤的訪問過程:以扇區(qū)作為最小的尋址和存取單:以扇區(qū)作為最小的尋址和存取單位。首先移動傳動裝置,通過它來移動磁頭,從而位。首先移動傳動裝置,通過它來移動磁頭,從而定位正確的柱面。然后選中相應(yīng)的磁頭,等我們想定位正確的柱面。然后選中相應(yīng)的磁頭,等我們想要的扇區(qū)正好路過這個磁頭正下方的時候,就可以要的扇區(qū)正好路過這個磁頭正下方的時候,就可以對它進(jìn)行訪問了。對它進(jìn)行訪問了。7070w如何寫一個字節(jié)?讀修改寫如何寫一個字節(jié)?讀修改寫 讀入包含該字節(jié)的扇區(qū);讀入包含該字節(jié)的扇區(qū); 修改該字節(jié);修改該字節(jié); 把整個扇區(qū)寫回到磁盤;把整個扇區(qū)寫回到磁盤;7171參數(shù)參數(shù)IBM 360-KB軟盤軟盤Bar
33、racuda 180硬盤硬盤柱面數(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)時間旋轉(zhuǎn)時間200毫秒毫秒8.33毫秒毫秒馬達(dá)啟馬達(dá)啟/停時間停時間250毫秒毫秒20秒秒扇區(qū)傳送時間扇區(qū)傳送時間22毫秒毫秒17微秒微秒7272虛擬磁盤地址虛擬磁盤地址w 物理地址:柱面號、盤面號(磁頭號)、扇區(qū)號;物理地址:柱面號、盤面號(磁頭號)、扇區(qū)號
34、;這隱含著兩個約束條件:每個柱面上的盤面?zhèn)€數(shù)都這隱含著兩個約束條件:每個柱面上的盤面?zhèn)€數(shù)都是一樣的;每個磁道上的扇區(qū)個數(shù)都是一樣的。是一樣的;每個磁道上的扇區(qū)個數(shù)都是一樣的。w 考慮到半徑不同的磁道,其圓環(huán)區(qū)域的考慮到半徑不同的磁道,其圓環(huán)區(qū)域的面積不同面積不同,現(xiàn)代磁盤在設(shè)計時,把所有磁道按半徑大小,劃分現(xiàn)代磁盤在設(shè)計時,把所有磁道按半徑大小,劃分為若干個環(huán)帶,在不同環(huán)帶上,每個磁道所劃分的為若干個環(huán)帶,在不同環(huán)帶上,每個磁道所劃分的扇區(qū)數(shù)是不一樣的,這就違背了第二個約束條件;扇區(qū)數(shù)是不一樣的,這就違背了第二個約束條件;w 虛擬地址:把每個磁道多少個扇區(qū)等物理細(xì)節(jié)隱藏虛擬地址:把每個磁道多少
35、個扇區(qū)等物理細(xì)節(jié)隱藏在設(shè)備內(nèi)部,對外提供統(tǒng)一的虛擬地址在設(shè)備內(nèi)部,對外提供統(tǒng)一的虛擬地址(x, y, z),即,即虛擬的柱面號、盤面號和扇區(qū)號,對內(nèi)再將其映射虛擬的柱面號、盤面號和扇區(qū)號,對內(nèi)再將其映射為實際的柱面、盤面和扇區(qū)(由控制器完成)。為實際的柱面、盤面和扇區(qū)(由控制器完成)。7373物理扇區(qū)分布物理扇區(qū)分布虛擬扇區(qū)分布虛擬扇區(qū)分布32 4 + 16 4 = 19224 8 = 19274745.4.2 磁盤格式化磁盤格式化w 硬盤的格式化可分為三個步驟,即低級格式化、分硬盤的格式化可分為三個步驟,即低級格式化、分區(qū)和高級格式化。區(qū)和高級格式化。w 低級格式化:標(biāo)出低級格式化:標(biāo)出磁道
36、磁道和和扇區(qū)扇區(qū),在相鄰的扇區(qū)之間,在相鄰的扇區(qū)之間有狹窄的間隙隔開。一個扇區(qū)的格式是:相位編碼有狹窄的間隙隔開。一個扇區(qū)的格式是:相位編碼(preamble)數(shù)據(jù)區(qū)糾錯碼()數(shù)據(jù)區(qū)糾錯碼(ECC)。)。F 相位編碼:以某個特定的位組合模式開始,向相位編碼:以某個特定的位組合模式開始,向硬件表明這是一個新扇區(qū)的開始。還包括柱面硬件表明這是一個新扇區(qū)的開始。還包括柱面號、扇區(qū)號、扇區(qū)大小等類似信息;號、扇區(qū)號、扇區(qū)大小等類似信息;F 數(shù)據(jù)區(qū):由格式化程序確定其大小,一般數(shù)據(jù)區(qū):由格式化程序確定其大小,一般512;F 糾錯碼:包含冗余信息,用來糾正讀取錯誤;糾錯碼:包含冗余信息,用來糾正讀取錯誤;
37、7575w 分區(qū)分區(qū):用分區(qū)軟件把整個硬盤劃分為若干個邏輯分:用分區(qū)軟件把整個硬盤劃分為若干個邏輯分區(qū),每個分區(qū)可視為一個獨立的磁盤。在多數(shù)計算區(qū),每個分區(qū)可視為一個獨立的磁盤。在多數(shù)計算機(jī)上,用第機(jī)上,用第0個扇區(qū)來存放一些系統(tǒng)啟動代碼和一個扇區(qū)來存放一些系統(tǒng)啟動代碼和一個分區(qū)表,記錄了每個分區(qū)的起始扇區(qū)和大小。個分區(qū)表,記錄了每個分區(qū)的起始扇區(qū)和大小。w 高級格式化高級格式化:對每一個邏輯分區(qū),分別進(jìn)行一種高:對每一個邏輯分區(qū),分別進(jìn)行一種高級格式化(即通常的格式化操作),生成一個引導(dǎo)級格式化(即通常的格式化操作),生成一個引導(dǎo)塊、空閑存儲管理結(jié)構(gòu)、根目錄和一個空白的文件塊、空閑存儲管理結(jié)
38、構(gòu)、根目錄和一個空白的文件系統(tǒng)。對不同的分區(qū),可以使用不同的文件系統(tǒng),系統(tǒng)。對不同的分區(qū),可以使用不同的文件系統(tǒng),如如FAT16、FAT32、NTFS等。等。76765.4.3 磁盤調(diào)度算法磁盤調(diào)度算法磁盤的訪問是以扇區(qū)作為最小的尋址和存取單位,磁盤的訪問是以扇區(qū)作為最小的尋址和存取單位,在訪問一個磁盤扇區(qū)時,所需的時間主要有:在訪問一個磁盤扇區(qū)時,所需的時間主要有: 柱面定位時間:磁頭在磁頭臂牽引下,移動到指柱面定位時間:磁頭在磁頭臂牽引下,移動到指定柱面的機(jī)械運動時間;定柱面的機(jī)械運動時間; 旋轉(zhuǎn)延遲時間:等待指定的扇區(qū)旋轉(zhuǎn)到磁頭的正旋轉(zhuǎn)延遲時間:等待指定的扇區(qū)旋轉(zhuǎn)到磁頭的正下方所需的機(jī)械
39、運動時間;它與磁盤轉(zhuǎn)速有關(guān),下方所需的機(jī)械運動時間;它與磁盤轉(zhuǎn)速有關(guān),如:軟盤轉(zhuǎn)速可為如:軟盤轉(zhuǎn)速可為600rpm(每分鐘轉(zhuǎn)速每分鐘轉(zhuǎn)速),硬盤可,硬盤可為為7,200rpm至至10,000rpm; 數(shù)據(jù)傳送時間:從指定扇區(qū)讀寫數(shù)據(jù)的時間。數(shù)據(jù)傳送時間:從指定扇區(qū)讀寫數(shù)據(jù)的時間。7777方法方法1:合理地組織磁盤數(shù)據(jù)的存儲位置合理地組織磁盤數(shù)據(jù)的存儲位置。例子:磁盤的轉(zhuǎn)速為例子:磁盤的轉(zhuǎn)速為10,000rpm,每個磁道有,每個磁道有300個扇個扇區(qū),每個扇區(qū)有區(qū),每個扇區(qū)有512字節(jié),現(xiàn)要讀一個字節(jié),現(xiàn)要讀一個150KB的文件。的文件。假設(shè)柱面定位假設(shè)柱面定位(平均平均)時間為時間為6.9毫秒
40、,旋轉(zhuǎn)延遲毫秒,旋轉(zhuǎn)延遲(平均平均)時時間為旋轉(zhuǎn)時間的一半間為旋轉(zhuǎn)時間的一半(3ms),扇區(qū)數(shù)據(jù)傳送時間,扇區(qū)數(shù)據(jù)傳送時間17微秒;微秒;(1)文件由同一個磁道上的文件由同一個磁道上的300個連續(xù)扇區(qū)構(gòu)成:個連續(xù)扇區(qū)構(gòu)成:(2)文件由文件由300個隨機(jī)分布的扇區(qū)構(gòu)成:個隨機(jī)分布的扇區(qū)構(gòu)成:隨機(jī)分布時的訪問時間為連續(xù)分布時的隨機(jī)分布時的訪問時間為連續(xù)分布時的187倍。倍。如何提高磁盤訪問速度?如何提高磁盤訪問速度?6.9ms + 3ms + 6ms = 15.9ms; (why?)(6.9ms + 3ms + 0.017ms)*300 = 2975.1ms;7878方法方法2:磁盤調(diào)度。:磁盤調(diào)
41、度。如何提高磁盤訪問速度?如何提高磁盤訪問速度?w 對于大多數(shù)磁盤來說,柱面定位時間(磁頭移動時對于大多數(shù)磁盤來說,柱面定位時間(磁頭移動時間)在訪問時間中占主要部分,因此減少平均的柱間)在訪問時間中占主要部分,因此減少平均的柱面定位時間將有效地改進(jìn)系統(tǒng)的輸入輸出性能。面定位時間將有效地改進(jìn)系統(tǒng)的輸入輸出性能。w 基本思路:來自基本思路:來自不同進(jìn)程不同進(jìn)程的磁盤訪問請求構(gòu)成一個的磁盤訪問請求構(gòu)成一個隨機(jī)分布的請求隊列。磁盤調(diào)度的基本思路就是通隨機(jī)分布的請求隊列。磁盤調(diào)度的基本思路就是通過對這些過對這些I/O請求的執(zhí)行順序進(jìn)行調(diào)整,來減少整請求的執(zhí)行順序進(jìn)行調(diào)整,來減少整個請求隊列所對應(yīng)的平均
42、柱面定位時間。個請求隊列所對應(yīng)的平均柱面定位時間。w 磁盤調(diào)度算法:磁盤調(diào)度程序所采用的算法。磁盤調(diào)度算法:磁盤調(diào)度程序所采用的算法。誰來做這件事情?誰來做這件事情?79791. 先來先服務(wù)算法先來先服務(wù)算法w 先來先服務(wù)先來先服務(wù)(First-Come First-Served, FCFS):按訪:按訪問請求到達(dá)的先后順序來依次執(zhí)行。問請求到達(dá)的先后順序來依次執(zhí)行。w 優(yōu)點:簡單、公平;優(yōu)點:簡單、公平;w 缺點:效率不高。相鄰的兩次訪問請求可能相距甚缺點:效率不高。相鄰的兩次訪問請求可能相距甚遠(yuǎn),從而使磁頭反復(fù)地移動較長的距離。遠(yuǎn),從而使磁頭反復(fù)地移動較長的距離。w 舉例:假設(shè)一個磁盤總共
43、有舉例:假設(shè)一個磁盤總共有200個柱面,它們的編個柱面,它們的編號為號為0199,訪問請求的到達(dá)順序為(柱面號):,訪問請求的到達(dá)順序為(柱面號):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):從訪問請求隊列當(dāng)中,選擇從當(dāng)前磁頭位置出發(fā),從訪問請求隊列當(dāng)中,選擇從當(dāng)前磁頭位置出發(fā),移動最少的訪問請求去執(zhí)行。移動最少的訪問請求去執(zhí)行。w 該算法的目標(biāo)是使每次磁頭移動時間最少。它不一該算法的目標(biāo)是使每次磁頭移動時間最少。它不一定是最短平均柱面定位時間,但比定是最短平均柱面定位時間,但比FCFS算法有更算法有更好的性
溫馨提示
- 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年借殼上市業(yè)務(wù)合作框架協(xié)議
- 2025年健康食品代理委托協(xié)議
- 2025年地暖安裝協(xié)議
- 2025年出售合同解約協(xié)議書
- 2025年保密協(xié)議約定規(guī)范規(guī)則
- 2025年增資協(xié)議訂立簽字合同
- 2025年兒童房家具定制協(xié)議
- 2025年數(shù)據(jù)中心裝修升級與物業(yè)安全保障合同3篇
- 二零二五版鋼材貿(mào)易融資及風(fēng)險管理合同3篇
- 2025年度新能源儲能技術(shù)研發(fā)承包合同范本4篇
- 2024年發(fā)電廠交接班管理制度(二篇)
- 《數(shù)學(xué)課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版(原版)
- 農(nóng)機(jī)維修市場前景分析
- HG+20231-2014化學(xué)工業(yè)建設(shè)項目試車規(guī)范
- 匯款賬戶變更協(xié)議
- 電力系統(tǒng)動態(tài)仿真與建模
- 蝦皮shopee新手賣家考試題庫及答案
- 四川省宜賓市2023-2024學(xué)年八年級上學(xué)期期末義務(wù)教育階段教學(xué)質(zhì)量監(jiān)測英語試題
- 價值醫(yī)療的概念 實踐及其實現(xiàn)路徑
- 2024年中國華能集團(tuán)燃料有限公司招聘筆試參考題庫含答案解析
- 《紅樓夢》中的男性形象解讀
評論
0/150
提交評論