




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Unit 9操作系統(tǒng)原理操作系統(tǒng)原理馮耀霖馮耀霖設備,也稱外部設備或設備,也稱外部設備或I/O設備,是指那些由于原理、設備,是指那些由于原理、結構、數(shù)據(jù)格式等原因不能與系統(tǒng)總線直接連接的裝置。結構、數(shù)據(jù)格式等原因不能與系統(tǒng)總線直接連接的裝置。它們也是計算機系統(tǒng)不可或缺的重要組成部分,是計算機它們也是計算機系統(tǒng)不可或缺的重要組成部分,是計算機主機(主機(CPU+內(nèi)存)與外部環(huán)境進行交互和溝通的通道。內(nèi)存)與外部環(huán)境進行交互和溝通的通道。顯然,顯然,I/O設備的存在才使得計算機的存在有了意義,設備的存在才使得計算機的存在有了意義,就像一個人,如果沒有與人交際和溝通的能力,則這個人就像一個人,如果沒
2、有與人交際和溝通的能力,則這個人通常被認為是癡呆或白癡,即使他實際上是一個天才。同通常被認為是癡呆或白癡,即使他實際上是一個天才。同樣,一臺沒有樣,一臺沒有I/O設備的計算機,不管其計算功能多么強設備的計算機,不管其計算功能多么強大,也是廢鐵一堆。所以,設備管理也是操作系統(tǒng)的重要大,也是廢鐵一堆。所以,設備管理也是操作系統(tǒng)的重要組成部分,是操作系統(tǒng)的基本功能之一,而且由于組成部分,是操作系統(tǒng)的基本功能之一,而且由于I/O設設備的種類繁多,各自的特性和使用方式有很大差異,因此,備的種類繁多,各自的特性和使用方式有很大差異,因此,設備管理軟件可以說是操作系統(tǒng)中最繁雜的部分。設備管理軟件可以說是操作
3、系統(tǒng)中最繁雜的部分。 內(nèi)容內(nèi)容設備設備設備管理概述設備管理概述設備驅動程序設備驅動程序獨立于設備的獨立于設備的I/O軟件軟件用戶級用戶級I/O軟件軟件1 設備分類設備分類設備的差異性設備的差異性設備控制器設備控制器I/O控制方式控制方式1.1 可以說,外部設備(簡稱外設或設備)是計算機系統(tǒng)可以說,外部設備(簡稱外設或設備)是計算機系統(tǒng)中最多樣、差異最大的組成部分,不同的計算機系統(tǒng)所配中最多樣、差異最大的組成部分,不同的計算機系統(tǒng)所配置的外設也不同。對外設的分類方法有許多種,主要有以置的外設也不同。對外設的分類方法有許多種,主要有以下三種:下三種:基本分類法基本分類法功能分類法功能分類法管理分類
4、法管理分類法1. 基本分類法基本分類法它把外設大致分為三類:它把外設大致分為三類:(1) 外存外存:磁盤、光盤、:磁盤、光盤、U盤。盤。(2) 人機通信設備人機通信設備:輸入設備有:鍵盤、鼠標、話筒、光筆、掃描儀、數(shù)輸入設備有:鍵盤、鼠標、話筒、光筆、掃描儀、數(shù)碼相機等;碼相機等;輸出設備有:顯示器、打印機、繪圖儀、揚聲器等。輸出設備有:顯示器、打印機、繪圖儀、揚聲器等。(3) 機機通信設備機機通信設備:輸入設備有:傳感器、儀器儀表等;輸入設備有:傳感器、儀器儀表等;輸出設備有:執(zhí)行器、儀器儀表等;輸出設備有:執(zhí)行器、儀器儀表等;輸入輸出設備有:網(wǎng)卡、輸入輸出設備有:網(wǎng)卡、Modem等。等。2
5、. 功能分類法功能分類法如果從外設的功能上來分,只有兩種:存儲設備和通如果從外設的功能上來分,只有兩種:存儲設備和通信設備。信設備。(1)存儲設備存儲設備即外存,外存的共同特點是都對存儲即外存,外存的共同特點是都對存儲區(qū)進行分塊管理,也就是說,這些設備在邏輯上可以看成區(qū)進行分塊管理,也就是說,這些設備在邏輯上可以看成是有若干存儲塊組成的存儲空間,所以傳統(tǒng)上也被稱作是有若干存儲塊組成的存儲空間,所以傳統(tǒng)上也被稱作塊塊設備設備。另外,為了進行大塊數(shù)據(jù)的傳輸,通常需要在內(nèi)存。另外,為了進行大塊數(shù)據(jù)的傳輸,通常需要在內(nèi)存為它們創(chuàng)建比較大的數(shù)據(jù)緩沖區(qū)。為它們創(chuàng)建比較大的數(shù)據(jù)緩沖區(qū)。(2)通信設備通信設備
6、除了外存之外的那些外設通常都是通除了外存之外的那些外設通常都是通信設備,它們是計算機與外部環(huán)境進行交互的主要手段。信設備,它們是計算機與外部環(huán)境進行交互的主要手段。這些設備的數(shù)據(jù)量往往不是很大,也不是很集中,因此這這些設備的數(shù)據(jù)量往往不是很大,也不是很集中,因此這類設備在內(nèi)存中不需要較大的緩沖區(qū),或者就根本沒有緩類設備在內(nèi)存中不需要較大的緩沖區(qū),或者就根本沒有緩沖區(qū),例如鍵盤、鼠標等。這些設備傳統(tǒng)上也被稱作沖區(qū),例如鍵盤、鼠標等。這些設備傳統(tǒng)上也被稱作字符字符設備設備。 3. 管理分類法管理分類法按設備的管理性質可把外設分為兩類:按設備的管理性質可把外設分為兩類:(1)系統(tǒng)設備是指操作系統(tǒng)生成
7、時就納入系統(tǒng)管理系統(tǒng)設備是指操作系統(tǒng)生成時就納入系統(tǒng)管理范圍的各種范圍的各種標準設備標準設備(基本配置),操作系統(tǒng)提供有相應(基本配置),操作系統(tǒng)提供有相應的數(shù)據(jù)結構和設備驅動程序等。如鍵盤、鼠標、顯示器、的數(shù)據(jù)結構和設備驅動程序等。如鍵盤、鼠標、顯示器、磁盤驅動器等。磁盤驅動器等。(2)用戶設備是指系統(tǒng)設備之外的用戶設備是指系統(tǒng)設備之外的非標準設備非標準設備,在,在安裝操作系統(tǒng)時沒有配置,而由用戶根據(jù)需要自己安裝配安裝操作系統(tǒng)時沒有配置,而由用戶根據(jù)需要自己安裝配置。如掃描儀、繪圖儀等。置。如掃描儀、繪圖儀等。 1.2 設備的差異性設備的差異性外部設備由于種類不同,制造商不同,技術標準不同,
8、外部設備由于種類不同,制造商不同,技術標準不同,其特性可以有巨大的不同。而這種不同越是明顯,對操作其特性可以有巨大的不同。而這種不同越是明顯,對操作系統(tǒng)的設計的挑戰(zhàn)就越大。因為屏蔽這些巨大的不同,使系統(tǒng)的設計的挑戰(zhàn)就越大。因為屏蔽這些巨大的不同,使得不同的設備相互共存并不是一件容易的事情。得不同的設備相互共存并不是一件容易的事情。其中最為明顯的一種差異是數(shù)據(jù)傳輸?shù)乃俣?,它涵蓋其中最為明顯的一種差異是數(shù)據(jù)傳輸?shù)乃俣龋w的范圍從每秒十個字節(jié)到幾兆個字節(jié)。表的范圍從每秒十個字節(jié)到幾兆個字節(jié)。表9-1給出的是較給出的是較為常見的一些設備的數(shù)據(jù)傳輸率。為常見的一些設備的數(shù)據(jù)傳輸率。輸入輸出設備輸入輸
9、出設備數(shù)據(jù)傳輸速率數(shù)據(jù)傳輸速率鍵盤鍵盤10B鼠標鼠標100B56KModem7KB雙向雙向ISDN線路線路16KB激光打印機激光打印機100KB掃描儀掃描儀400KB以太網(wǎng)以太網(wǎng)1.25MBUSB1.5MBIDE磁盤磁盤5MB40X CD-ROM6MB表表9-1 外設的數(shù)據(jù)傳輸率外設的數(shù)據(jù)傳輸率輸入輸出設備輸入輸出設備數(shù)據(jù)傳輸速率數(shù)據(jù)傳輸速率快速以太網(wǎng)快速以太網(wǎng)12.5MBISA總線總線16.7MBEIDE磁盤磁盤16.7MBXGA監(jiān)視器監(jiān)視器60MBSONET OC-1278MBSCSI Ultra磁盤磁盤80MB千兆級以太網(wǎng)千兆級以太網(wǎng)125MBUltrium磁帶磁帶320MBPCI總線總
10、線528MBSun千兆平面千兆平面XB backplane20GB1.3 設備控制器設備控制器從設備的物理結構上來看,外設可能是電器的或機械從設備的物理結構上來看,外設可能是電器的或機械的,甚至是機、電、光多種技術結合的。但不管其主體是的,甚至是機、電、光多種技術結合的。但不管其主體是哪種構成,只要它要與電子計算機相連接,那它就必須有哪種構成,只要它要與電子計算機相連接,那它就必須有電子器件部分。這也就是說,計算機的外設必須由兩部分電子器件部分。這也就是說,計算機的外設必須由兩部分組成:一是外設的執(zhí)行部分(電氣的、機械或機、電、光組成:一是外設的執(zhí)行部分(電氣的、機械或機、電、光多種技術結合的
11、),也稱設備主體;二是外設與系統(tǒng)的接多種技術結合的),也稱設備主體;二是外設與系統(tǒng)的接口部分,而且這部分一定是電子部分,因為計算機系統(tǒng)必口部分,而且這部分一定是電子部分,因為計算機系統(tǒng)必須通過這些接口來對外設進行控制和數(shù)據(jù)傳輸。須通過這些接口來對外設進行控制和數(shù)據(jù)傳輸。設備控制器(也稱設備控制器(也稱適配器適配器)是外設與總線之間的一組)是外設與總線之間的一組電子器件。例如,串行口控制器就是一種簡單的設備控制電子器件。例如,串行口控制器就是一種簡單的設備控制器,它是計算機上用來控制串行信號的一塊芯片或一個芯器,它是計算機上用來控制串行信號的一塊芯片或一個芯片組。再如貼在磁盤側面的電子線路板也是
12、一種設備控制片組。再如貼在磁盤側面的電子線路板也是一種設備控制 器器磁盤控制器,磁盤控制器,CPU就是通過這個控制器來對磁盤進就是通過這個控制器來對磁盤進行各種操作的。行各種操作的。為使處理器可以像訪問內(nèi)存那樣來訪問外設,計算機為使處理器可以像訪問內(nèi)存那樣來訪問外設,計算機系統(tǒng)必須提供一些互不沖突、能按地址訪問、并能以數(shù)字系統(tǒng)必須提供一些互不沖突、能按地址訪問、并能以數(shù)字信號進行數(shù)據(jù)傳送的設備寄存器。通常每個設備都有三類信號進行數(shù)據(jù)傳送的設備寄存器。通常每個設備都有三類設備寄存器:狀態(tài)寄存器、控制寄存器、數(shù)據(jù)寄存器。這設備寄存器:狀態(tài)寄存器、控制寄存器、數(shù)據(jù)寄存器。這些寄存器都有自己的專有地址
13、,稱做些寄存器都有自己的專有地址,稱做端口端口(port)。這些)。這些寄存器的作用分別為:寄存器的作用分別為:狀態(tài)寄存器狀態(tài)寄存器用來由控制器向處理器提供設備的當前用來由控制器向處理器提供設備的當前工作狀態(tài)。例如,設備的當前操作是否執(zhí)行完畢,數(shù)據(jù)是工作狀態(tài)。例如,設備的當前操作是否執(zhí)行完畢,數(shù)據(jù)是否可以被讀出或寫入,以及各種錯誤提示等。這些信息通否可以被讀出或寫入,以及各種錯誤提示等。這些信息通常都用字位(常都用字位(bit)來表示。)來表示。 控制寄存器控制寄存器主要用來由處理器向控制器傳送操作命主要用來由處理器向控制器傳送操作命令。還用來管理外設工作模式,即在設備初始化時或運行令。還用來
14、管理外設工作模式,即在設備初始化時或運行時,處理器可以通過向控制寄存器寫入命令來改變設備工時,處理器可以通過向控制寄存器寫入命令來改變設備工作模式或設備狀態(tài)。例如,在串口寄存器中專有一位信息作模式或設備狀態(tài)。例如,在串口寄存器中專有一位信息是用來選擇通信方式的(全工或半工),還有一位信息是是用來選擇通信方式的(全工或半工),還有一位信息是用來設置數(shù)據(jù)字長的,以及其他用來設置通信波特率等的用來設置數(shù)據(jù)字長的,以及其他用來設置通信波特率等的各個控制位。各個控制位。數(shù)據(jù)寄存器數(shù)據(jù)寄存器(有些設備控制器又進一步設置為輸入(有些設備控制器又進一步設置為輸入數(shù)據(jù)寄存器和輸出數(shù)據(jù)寄存器)則是輸入輸出數(shù)據(jù)的暫
15、存數(shù)據(jù)寄存器和輸出數(shù)據(jù)寄存器)則是輸入輸出數(shù)據(jù)的暫存寄存器,用來實現(xiàn)設備與處理器之間的數(shù)據(jù)交換。寄存器,用來實現(xiàn)設備與處理器之間的數(shù)據(jù)交換。除了設備寄存器外,有些設備控制器還設有除了設備寄存器外,有些設備控制器還設有I/O數(shù)據(jù)數(shù)據(jù)緩沖區(qū)緩沖區(qū),以提高與,以提高與CPU交互數(shù)據(jù)的效率。塊設備控制器都交互數(shù)據(jù)的效率。塊設備控制器都設有設有I/O數(shù)據(jù)緩沖區(qū),而有些字符設備控制器也設有數(shù)據(jù)緩沖區(qū),而有些字符設備控制器也設有I/O數(shù)據(jù)緩沖區(qū),如視頻控制器。數(shù)據(jù)緩沖區(qū),如視頻控制器。所有設備控制器的寄存器和所有設備控制器的寄存器和I/O數(shù)據(jù)緩沖區(qū)構成的地數(shù)據(jù)緩沖區(qū)構成的地址空間稱作址空間稱作I/O地址空間
16、地址空間(I/O空間),對于空間),對于I/O地址空地址空間的處理有三種方式:間的處理有三種方式: (1)獨立編址的獨立編址的I/O空間空間在這種方式下,在這種方式下,I/O空間與內(nèi)存是完全脫離的。每個空間與內(nèi)存是完全脫離的。每個設備寄存器被賦予一個設備寄存器被賦予一個I/O端口,這個端口就是一個端口,這個端口就是一個9位位或或16位的一個整數(shù),它與內(nèi)存地址沒有任何關系。而正位的一個整數(shù),它與內(nèi)存地址沒有任何關系。而正是由于端口與內(nèi)存地址沒有任何關系,或者說端口不是內(nèi)是由于端口與內(nèi)存地址沒有任何關系,或者說端口不是內(nèi)存地址,操作系統(tǒng)必須使用專門的輸入輸出特殊指令來進存地址,操作系統(tǒng)必須使用專門
17、的輸入輸出特殊指令來進行數(shù)據(jù)的讀寫。例如,許多指令集使用行數(shù)據(jù)的讀寫。例如,許多指令集使用IN REG, PORT指令用來從設備讀數(shù)據(jù),而指令指令用來從設備讀數(shù)據(jù),而指令OUT PORT, REG則用來則用來將數(shù)據(jù)寫入設備。將數(shù)據(jù)寫入設備。這種方式的優(yōu)點是這種方式的優(yōu)點是I/O空間與內(nèi)存分離,輸入輸出操空間與內(nèi)存分離,輸入輸出操作不會影響或干擾內(nèi)存操作,尤其是輸入輸出軟件的可靠作不會影響或干擾內(nèi)存操作,尤其是輸入輸出軟件的可靠性通常不如內(nèi)存管理軟件,這種分離就顯得更有價值。但性通常不如內(nèi)存管理軟件,這種分離就顯得更有價值。但俗話說,成也蕭何,敗也蕭何。這個優(yōu)點恰恰也是其缺點。俗話說,成也蕭何,
18、敗也蕭何。這個優(yōu)點恰恰也是其缺點。由于由于I/O空間與內(nèi)存分離,輸入輸出指令與內(nèi)存訪問指令空間與內(nèi)存分離,輸入輸出指令與內(nèi)存訪問指令自然也不相同,輸入輸出所使用的自然也不相同,輸入輸出所使用的IN/OUT等指令都是低等指令都是低級的匯編指令。由于高級編程語言不支持這種低級指令,級的匯編指令。由于高級編程語言不支持這種低級指令,從而形成高級語言屏蔽的一個漏洞。程序員如果想要進行從而形成高級語言屏蔽的一個漏洞。程序員如果想要進行I/O,則必須使用低級語言,這將增大程序設計的難度和,則必須使用低級語言,這將增大程序設計的難度和可靠性??煽啃?。 (2)內(nèi)存映射內(nèi)存映射I/O空間空間顧名思義,就是將顧名
19、思義,就是將I/O空間映射到內(nèi)存里面,與內(nèi)存空間映射到內(nèi)存里面,與內(nèi)存統(tǒng)一編址。具體來說,就是系統(tǒng)在內(nèi)存空間中劃出一部分統(tǒng)一編址。具體來說,就是系統(tǒng)在內(nèi)存空間中劃出一部分來作為來作為I/O空間,即所有設備寄存器的端口和空間,即所有設備寄存器的端口和I/O數(shù)據(jù)緩數(shù)據(jù)緩沖區(qū)都是正規(guī)的內(nèi)存地址空間的一部分,沖區(qū)都是正規(guī)的內(nèi)存地址空間的一部分, CPU對這些空對這些空間的讀寫與對普通內(nèi)存的讀寫使用同樣的指令,但引起的間的讀寫與對普通內(nèi)存的讀寫使用同樣的指令,但引起的是與外部設備間的數(shù)據(jù)傳送。是與外部設備間的數(shù)據(jù)傳送。RISC(精簡指令集)類(精簡指令集)類CPU計算機都使用這種方式。計算機都使用這種方
20、式。這種方式雖然具有這種方式雖然具有I/O與內(nèi)存訪問統(tǒng)一的優(yōu)點,但是與內(nèi)存訪問統(tǒng)一的優(yōu)點,但是也存在一些問題。例如總線競爭,在單總線系統(tǒng)里,內(nèi)存也存在一些問題。例如總線競爭,在單總線系統(tǒng)里,內(nèi)存和外設都需要對總線上的數(shù)據(jù)進行監(jiān)聽,以確認命令是否和外設都需要對總線上的數(shù)據(jù)進行監(jiān)聽,以確認命令是否針對自己。這樣將產(chǎn)生總線競爭而降低系統(tǒng)效率。針對自己。這樣將產(chǎn)生總線競爭而降低系統(tǒng)效率。 (3)混合混合I/O空間空間這是上述兩種方式的組合:這是上述兩種方式的組合:I/O數(shù)據(jù)緩沖區(qū)為內(nèi)存映數(shù)據(jù)緩沖區(qū)為內(nèi)存映射,而設備寄存器則獨立于內(nèi)存。例如采用射,而設備寄存器則獨立于內(nèi)存。例如采用Intel奔騰處奔騰處
21、理器的計算機系統(tǒng),將理器的計算機系統(tǒng),將640K到到1M的主存地址留給的主存地址留給I/O數(shù)數(shù)據(jù)緩沖區(qū),而據(jù)緩沖區(qū),而0到到64K的地址留給的地址留給I/O端口。端口。設備控制器與設備控制器與CPU通過總線來連接。總線是一種嚴格通過總線來連接??偩€是一種嚴格定義的描述了線上傳輸數(shù)據(jù)的協(xié)議,凡是符合總線協(xié)議的定義的描述了線上傳輸數(shù)據(jù)的協(xié)議,凡是符合總線協(xié)議的各種設備都可以共同使用總線與各種設備都可以共同使用總線與CPU進行數(shù)據(jù)通信。進行數(shù)據(jù)通信。 CPU內(nèi)存內(nèi)存字符設備字符設備控制器控制器字符設備字符設備控制器控制器DMA控制器控制器總線總線圖圖9-1 單總線型單總線型I/O系統(tǒng)結構系統(tǒng)結構1.
22、4 I/O控制方式控制方式I/O控制方式,即為實現(xiàn)數(shù)據(jù)的輸入輸出,控制方式,即為實現(xiàn)數(shù)據(jù)的輸入輸出,CPU與外與外設之間的交互方式。有三種基本的設之間的交互方式。有三種基本的I/O控制方式:控制方式:輪詢(輪詢(polling)方式)方式中斷驅動方式中斷驅動方式DMA方式方式采用何種采用何種I/O控制方式將直接影響設備管理的實施方控制方式將直接影響設備管理的實施方法及效率。法及效率。1. 輪詢方式輪詢方式 也稱程序控制方式。它要求在程序中的也稱程序控制方式。它要求在程序中的I/O指令后緊指令后緊接著安排循環(huán)查詢指令,即在接著安排循環(huán)查詢指令,即在CPU啟動了設備控制器進啟動了設備控制器進行數(shù)據(jù)
23、的輸入輸出后便以循環(huán)查詢設備狀態(tài)的方式來等待行數(shù)據(jù)的輸入輸出后便以循環(huán)查詢設備狀態(tài)的方式來等待I/O的完成。的完成。這種方式的特點是:這種方式的特點是:CPU處于主動地位,涉入處于主動地位,涉入I/O過過程的程度很深,而外設則處于被動地位,是一種同步工作程的程度很深,而外設則處于被動地位,是一種同步工作方式。方式。2. 中斷驅動方式中斷驅動方式使用輪詢方式時,使用輪詢方式時,CPU需要讀取設備狀態(tài)寄存器以檢需要讀取設備狀態(tài)寄存器以檢測設備的當前狀態(tài),如果設備還未完成此次的測設備的當前狀態(tài),如果設備還未完成此次的I/O,則需,則需要要CPU不斷地查詢,由于不斷地查詢,由于CPU與外設的速度差距巨
24、大,與外設的速度差距巨大,因此在因此在I/O過程中,過程中,CPU絕大部分時間都處于繁忙等待狀絕大部分時間都處于繁忙等待狀態(tài),態(tài),CPU的效率十分低下。的效率十分低下。一種更為有效的方式是讓設備處于某種主動地位,而一種更為有效的方式是讓設備處于某種主動地位,而將將CPU從忙等待中解脫出來。在啟動了某個外設后,立即從忙等待中解脫出來。在啟動了某個外設后,立即阻塞現(xiàn)行進程,阻塞現(xiàn)行進程,CPU就可被調(diào)度轉去執(zhí)行其他進程而不是就可被調(diào)度轉去執(zhí)行其他進程而不是在原地踏步等待。當某個數(shù)據(jù)在原地踏步等待。當某個數(shù)據(jù)I/O任務完成后,由設備控任務完成后,由設備控制器向制器向CPU發(fā)出一個發(fā)出一個I/O中斷,
25、驅動中斷,驅動CPU中止現(xiàn)行進程的中止現(xiàn)行進程的執(zhí)行而轉去執(zhí)行相應的中斷處理程序,并喚醒等待該執(zhí)行而轉去執(zhí)行相應的中斷處理程序,并喚醒等待該I/O的進程。的進程。顯然,這種顯然,這種I/O控制方式可以大大提高控制方式可以大大提高CPU的效率,的效率,因此是設備與因此是設備與CPU進行交互的基本手段。進行交互的基本手段。3. DMA方式方式雖然中斷驅動方式避免了輪詢方式的忙等待現(xiàn)象,從雖然中斷驅動方式避免了輪詢方式的忙等待現(xiàn)象,從而大大提高了而大大提高了CPU的效率,但這主要是對慢速的字符設的效率,但這主要是對慢速的字符設備而言的。而對于一次需要傳輸大量數(shù)據(jù)的高速塊設備來備而言的。而對于一次需要
26、傳輸大量數(shù)據(jù)的高速塊設備來說,仍然不能令人滿意。因為設備的數(shù)據(jù)寄存器的容量是說,仍然不能令人滿意。因為設備的數(shù)據(jù)寄存器的容量是有限的,故一個有限的,故一個I/O任務中待傳輸?shù)臄?shù)據(jù)需要多次送往數(shù)任務中待傳輸?shù)臄?shù)據(jù)需要多次送往數(shù)據(jù)寄存器,而每當設備傳送完一次數(shù)據(jù)寄存器中的數(shù)據(jù)時,據(jù)寄存器,而每當設備傳送完一次數(shù)據(jù)寄存器中的數(shù)據(jù)時,就會觸發(fā)一次就會觸發(fā)一次I/O中斷,因此在塊設備的一次中斷,因此在塊設備的一次I/O任務的任務的完成過程中,完成過程中,CPU需要響應和處理許多次需要響應和處理許多次I/O中斷,而每中斷,而每一次一次I/O中斷的響應和處理都需要付出不小的額外中斷的響應和處理都需要付出不小
27、的額外CPU開開銷,銷,CPU的效率并未獲得太多改善。的效率并未獲得太多改善。人們發(fā)現(xiàn),在設備與主機交換大量數(shù)據(jù)時,人們發(fā)現(xiàn),在設備與主機交換大量數(shù)據(jù)時,CPU只是只是數(shù)據(jù)傳輸?shù)囊粋€中介,用功能強大的數(shù)據(jù)傳輸?shù)囊粋€中介,用功能強大的CPU長時間去充當長時間去充當 一個傳輸數(shù)據(jù)的中介角色顯然得不償失。于是就設計出一一個傳輸數(shù)據(jù)的中介角色顯然得不償失。于是就設計出一種專門負責執(zhí)行數(shù)據(jù)種專門負責執(zhí)行數(shù)據(jù)I/O事務的處理器事務的處理器I/O處理器處理器,它比它比CPU要簡單得多,但也便宜很多,它只能執(zhí)行少量要簡單得多,但也便宜很多,它只能執(zhí)行少量的指令,主要是數(shù)據(jù)的指令,主要是數(shù)據(jù)I/O指令。指令。I
28、/O處理器既可以構建在處理器既可以構建在設備控制器里面(這樣的控制器稱為設備控制器里面(這樣的控制器稱為DMA控制器控制器),也),也可以作為獨立的實體掛在計算機主板上。最簡單的可以作為獨立的實體掛在計算機主板上。最簡單的I/O處處理器在一個時間只能處理一個理器在一個時間只能處理一個I/O,即不能并發(fā),而復雜,即不能并發(fā),而復雜的的I/O處理器可以同時處理多個處理器可以同時處理多個I/O,即它能夠提供多個,即它能夠提供多個I/O通道,每個通道可以對應一個通道,每個通道可以對應一個I/O設備。有了設備。有了I/O處處理器,就可以將理器,就可以將CPU從繁雜的從繁雜的I/O事務中解脫出來。事務中解
29、脫出來。DMA(Direct Memory Access,直接內(nèi)存訪問直接內(nèi)存訪問)方式就是使用方式就是使用I/O處理器的處理器的I/O控制方式,主要是針對塊控制方式,主要是針對塊設備的。設備的。DMA方式的目的當然是降低方式的目的當然是降低CPU響應中斷的頻率,使響應中斷的頻率,使得一個傳輸大量數(shù)據(jù)的得一個傳輸大量數(shù)據(jù)的I/O任務中需要響應許多次中斷變?nèi)蝿罩行枰憫S多次中斷變?yōu)橹豁憫淮沃袛?。為只響應一次中斷。DMA方式在設備和內(nèi)存之間建立了直方式在設備和內(nèi)存之間建立了直接數(shù)據(jù)通路,即設備和內(nèi)存之間可直接讀寫數(shù)據(jù),且數(shù)據(jù)接數(shù)據(jù)通路,即設備和內(nèi)存之間可直接讀寫數(shù)據(jù),且數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)
30、塊。一個傳輸?shù)幕締挝皇菙?shù)據(jù)塊。一個I/O任務中的所有數(shù)據(jù)是任務中的所有數(shù)據(jù)是在一個在一個DMA控制器的控制下完成傳輸?shù)?,且在整個傳輸過控制器的控制下完成傳輸?shù)模以谡麄€傳輸過程中無需程中無需CPU的直接干預,直到該任務中的所有數(shù)據(jù)都傳的直接干預,直到該任務中的所有數(shù)據(jù)都傳輸完后,輸完后,DMA控制器才向控制器才向CPU發(fā)出一個發(fā)出一個I/O中斷。中斷。DMA控制器在普通設備控制器的基礎上又增設了兩個控制器在普通設備控制器的基礎上又增設了兩個寄存器:內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器。寄存器:內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器。DMA方式的方式的I/O過程如下:過程如下:CPU對對DMA控制器進行設置
31、,告訴其存放控制器進行設置,告訴其存放I/O數(shù)數(shù)據(jù)的主存區(qū)地址和傳輸長度(分別送入內(nèi)存地址寄存器和據(jù)的主存區(qū)地址和傳輸長度(分別送入內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器);數(shù)據(jù)計數(shù)寄存器);啟動啟動DMA過程,將系統(tǒng)總線的使用權暫時移交給過程,將系統(tǒng)總線的使用權暫時移交給DMA控制器;控制器; DMA控制器進行數(shù)據(jù)傳輸,即接管對系統(tǒng)總線的控制器進行數(shù)據(jù)傳輸,即接管對系統(tǒng)總線的使用權(總線周期竊用),啟動設備進行數(shù)據(jù)的使用權(總線周期竊用),啟動設備進行數(shù)據(jù)的I/O,并,并進行數(shù)據(jù)傳送個數(shù)的計數(shù)以及內(nèi)存區(qū)地址的增量;進行數(shù)據(jù)傳送個數(shù)的計數(shù)以及內(nèi)存區(qū)地址的增量;當數(shù)據(jù)傳送完畢,當數(shù)據(jù)傳送完畢,DMA控制
32、器向控制器向CPU發(fā)出一個發(fā)出一個I/O中斷,同時向中斷,同時向CPU移交總線使用權。移交總線使用權。CPU響應中斷,處理善后事宜。響應中斷,處理善后事宜。DMA方式的優(yōu)點是顯著減少了中斷次數(shù)和方式的優(yōu)點是顯著減少了中斷次數(shù)和CPU的的I/O操作次數(shù),從而大大減輕了操作次數(shù),從而大大減輕了CPU的的I/O負擔,加快了負擔,加快了I/O的速度,不僅有利于的速度,不僅有利于CPU效率的發(fā)揮,而且能滿足高效率的發(fā)揮,而且能滿足高速速I/O設備對成組數(shù)據(jù)的高速傳送要求。缺點自然是增加設備對成組數(shù)據(jù)的高速傳送要求。缺點自然是增加了成本和復雜性,而且由于了成本和復雜性,而且由于DMA控制器需要與控制器需要
33、與CPU競爭競爭系統(tǒng)總線,其效率的提高不如理論上的期望。系統(tǒng)總線,其效率的提高不如理論上的期望。2 設備管理的目標和功能設備管理的目標和功能 設備控制塊設備控制塊I/O軟件的分層結構軟件的分層結構2.1 設備管理的目標和功能設備管理的目標和功能 1. 設備管理的目標設備管理的目標設備管理是操作系統(tǒng)的重要組成部分,現(xiàn)代操作系統(tǒng)設備管理是操作系統(tǒng)的重要組成部分,現(xiàn)代操作系統(tǒng)的設備管理的基本目標除了公平和有效之外,另一目標是的設備管理的基本目標除了公平和有效之外,另一目標是把所有外設都抽象成文件,使得對物理特征各異的各種設把所有外設都抽象成文件,使得對物理特征各異的各種設備都可以以統(tǒng)一的文件方式進行
34、操作。具體地說,它必須備都可以以統(tǒng)一的文件方式進行操作。具體地說,它必須滿足下述設計要求:滿足下述設計要求:為用戶提供方便、統(tǒng)一的設備使用界面。將復雜的為用戶提供方便、統(tǒng)一的設備使用界面。將復雜的具體設備操作控制過程隱藏起來,通過統(tǒng)一的文件操作界具體設備操作控制過程隱藏起來,通過統(tǒng)一的文件操作界面進行面進行I/O操作,既方便了用戶對設備的使用和滿足用戶操作,既方便了用戶對設備的使用和滿足用戶使用外設的各種要求,又有利于將不同類型的設備配置在使用外設的各種要求,又有利于將不同類型的設備配置在系統(tǒng)中。系統(tǒng)中。 提高外設的利用率,盡量提高并行程度。一方面,提高外設的利用率,盡量提高并行程度。一方面,
35、用戶使用外設常有很大的隨機性,設備管理應能根據(jù)當時用戶使用外設常有很大的隨機性,設備管理應能根據(jù)當時設備的忙閑狀況進行分配,實現(xiàn)資源共享。另一方面,充設備的忙閑狀況進行分配,實現(xiàn)資源共享。另一方面,充分發(fā)揮設備和主機的效率,有效地解決分發(fā)揮設備和主機的效率,有效地解決CPU與外設之間與外設之間傳輸速率不協(xié)調(diào)的問題。另外,將獨享設備盡量虛擬成共傳輸速率不協(xié)調(diào)的問題。另外,將獨享設備盡量虛擬成共享設備,以增大資源利用率和降低死鎖發(fā)生的概率。例如,享設備,以增大資源利用率和降低死鎖發(fā)生的概率。例如,將一臺打印機虛擬成多臺可共享的邏輯打印機。將一臺打印機虛擬成多臺可共享的邏輯打印機。用戶程序獨立于設備
36、,即實現(xiàn)程序與設備的無關性。用戶程序獨立于設備,即實現(xiàn)程序與設備的無關性。程序中可使用邏輯設備名或設備文件名來使用設備,它們程序中可使用邏輯設備名或設備文件名來使用設備,它們與實際使用的物理設備無關。當物理設備發(fā)生故障或有更與實際使用的物理設備無關。當物理設備發(fā)生故障或有更換時,用戶程序不必修改,就可使用系統(tǒng)分配的其他相關換時,用戶程序不必修改,就可使用系統(tǒng)分配的其他相關設備。設備。2. 設備管理的功能設備管理的功能為了達到設備管理的目標,設備管理系統(tǒng)通常需要實為了達到設備管理的目標,設備管理系統(tǒng)通常需要實現(xiàn)如下基本功能:現(xiàn)如下基本功能:設備驅動和錯誤處理。主要是按照設備驅動和錯誤處理。主要是
37、按照I/O控制方式,控制方式,對不同的設備完成相應的對不同的設備完成相應的I/O中斷、設備控制器操作、讀中斷、設備控制器操作、讀寫操作等物理寫操作等物理I/O過程。針對不同的設備請求,通過設備過程。針對不同的設備請求,通過設備驅動程序完成對設備的直接控制。錯誤處理指的是對輸入驅動程序完成對設備的直接控制。錯誤處理指的是對輸入輸出過程中產(chǎn)生的錯誤進行偵測與糾正,而且糾錯應該在輸出過程中產(chǎn)生的錯誤進行偵測與糾正,而且糾錯應該在最靠近硬件的層面上進行。最靠近硬件的層面上進行。系統(tǒng)與設備間的協(xié)調(diào)。主要是速度上的協(xié)調(diào),要解系統(tǒng)與設備間的協(xié)調(diào)。主要是速度上的協(xié)調(diào),要解決快速的決快速的CPU與慢速的與慢速的
38、I/O設備之間的操作不匹配的問題,設備之間的操作不匹配的問題,通常采用通常采用I/O緩沖區(qū)的方式來解決這個矛盾。設備管緩沖區(qū)的方式來解決這個矛盾。設備管理要實現(xiàn)理要實現(xiàn)I/O緩沖區(qū)的建立、分配及回收。緩沖區(qū)的建立、分配及回收。設備調(diào)度與分配。即對等待共享設備設備調(diào)度與分配。即對等待共享設備I/O操作的進操作的進程進行調(diào)度,而對多個進程爭用獨占設備進行分配。程進行調(diào)度,而對多個進程爭用獨占設備進行分配。 2.2 設備控制塊與設備文件設備控制塊與設備文件就如用進程控制塊(就如用進程控制塊(PCB)來表示一個進程,用文件)來表示一個進程,用文件控制塊(控制塊(FCB)來表示一個文件一樣,操作系統(tǒng)用設
39、備控)來表示一個文件一樣,操作系統(tǒng)用設備控制塊(制塊(DCB)來抽象表示一個外部設備。操作系統(tǒng)在內(nèi)核)來抽象表示一個外部設備。操作系統(tǒng)在內(nèi)核空間中為每個設備建立一個設備控制塊,用于描述本設備空間中為每個設備建立一個設備控制塊,用于描述本設備的各種抽象屬性及控制信息。的各種抽象屬性及控制信息。DCB包含的內(nèi)容如:包含的內(nèi)容如:設備名(即設備文件名)設備名(即設備文件名)設備設備ID設備工作狀態(tài)設備工作狀態(tài)控制器端口控制器端口I/O緩沖區(qū)端口緩沖區(qū)端口I/O請求隊列指針請求隊列指針設備驅動程序指針設備驅動程序指針設備中斷處理程序指針設備中斷處理程序指針設備設備ID由主設備號和次設備號構成。主設備號
40、用于標由主設備號和次設備號構成。主設備號用于標識設備類型,如識設備類型,如IDE硬盤、硬盤、SCSI硬盤、顯示器、打印機等,硬盤、顯示器、打印機等,同一類設備使用的是同一個設備驅動程序。次設備號用于同一類設備使用的是同一個設備驅動程序。次設備號用于標識同類設備中的某個具體設備及其控制器,即同類設備標識同類設備中的某個具體設備及其控制器,即同類設備的序號。的序號。這里的這里的設備驅動程序指針設備驅動程序指針實際上是一個指針組,其中實際上是一個指針組,其中的每個指針指向一個設備操作函數(shù)。設備驅動程序容易被的每個指針指向一個設備操作函數(shù)。設備驅動程序容易被人誤認為是一個完整的、能夠獨立運行的程序,其
41、實不然,人誤認為是一個完整的、能夠獨立運行的程序,其實不然,它只是一組進程可調(diào)用的、能對設備實施它只是一組進程可調(diào)用的、能對設備實施I/O操作及控制操作及控制操作的內(nèi)核功能函數(shù),如操作的內(nèi)核功能函數(shù),如open( ); /打開打開close( ); /關閉關閉read( ); /讀數(shù)據(jù)讀數(shù)據(jù)write( ); /寫數(shù)據(jù)寫數(shù)據(jù)llseek( ); /移動讀寫指針移動讀寫指針readdir( );/讀目錄讀目錄ioclt( ); /輸入輸出控制輸入輸出控制release( ); /釋放緩存釋放緩存當然,對于塊設備和字符設備以及不同的塊設備和不當然,對于塊設備和字符設備以及不同的塊設備和不同的字符設
42、備,各自所含的功能函數(shù)的個數(shù)有所不同,同同的字符設備,各自所含的功能函數(shù)的個數(shù)有所不同,同名函數(shù)具體執(zhí)行的算法也是不同的,從而構成了不同設備名函數(shù)具體執(zhí)行的算法也是不同的,從而構成了不同設備的驅動程序。設備驅動程序就是操作系統(tǒng)對設備的物理抽的驅動程序。設備驅動程序就是操作系統(tǒng)對設備的物理抽象(最底層抽象)。象(最底層抽象)。至于如何管理至于如何管理DCB則可以有不同的方法。自則可以有不同的方法。自UNIX后,后,現(xiàn)代操作系統(tǒng)普遍將現(xiàn)代操作系統(tǒng)普遍將DCB抽象成抽象成特殊文件特殊文件(即(即設備文件設備文件)。)。與數(shù)據(jù)文件一樣,系統(tǒng)為每個設備文件建立一個與數(shù)據(jù)文件一樣,系統(tǒng)為每個設備文件建立一
43、個 FCB,但,但設備文件的特殊之處在于,它并沒有數(shù)據(jù)文件意義上的文設備文件的特殊之處在于,它并沒有數(shù)據(jù)文件意義上的文件體,即它并不在磁盤空間中占有一席之地,換言之,操件體,即它并不在磁盤空間中占有一席之地,換言之,操作系統(tǒng)并不給設備文件分配磁盤空間單元。那么,作系統(tǒng)并不給設備文件分配磁盤空間單元。那么,設備文設備文件的文件體是什么呢?就是件的文件體是什么呢?就是DCB!例如,例如,Linux是按如下方式處理的。是按如下方式處理的。Linux支持三種類型的硬件設備:字符設備、塊設備支持三種類型的硬件設備:字符設備、塊設備及網(wǎng)絡設備。及網(wǎng)絡設備。字符設備能夠存儲或傳輸不定長數(shù)據(jù)。某些字符設備字符
44、設備能夠存儲或傳輸不定長數(shù)據(jù)。某些字符設備可以每次傳送一個字節(jié),可以不經(jīng)過緩沖區(qū)直接進行讀可以每次傳送一個字節(jié),可以不經(jīng)過緩沖區(qū)直接進行讀寫,如系統(tǒng)中的串行口寫,如系統(tǒng)中的串行口/dev/dnao和和/dev/cnal,傳送,傳送完一個字節(jié)后產(chǎn)生一個完一個字節(jié)后產(chǎn)生一個I/O中斷;另一些字符設備可以在中斷;另一些字符設備可以在設備內(nèi)緩存數(shù)據(jù),因此可以一次傳送完多個字節(jié)后產(chǎn)生一設備內(nèi)緩存數(shù)據(jù),因此可以一次傳送完多個字節(jié)后產(chǎn)生一個個I/O中斷。中斷。塊設備以塊為單位傳輸數(shù)據(jù)。每個塊設備都可建有一塊設備以塊為單位傳輸數(shù)據(jù)。每個塊設備都可建有一個個I/O數(shù)據(jù)緩沖區(qū)隊列,緩沖區(qū)的大小與塊相等,因此,數(shù)據(jù)
45、緩沖區(qū)隊列,緩沖區(qū)的大小與塊相等,因此,塊設備一次可傳輸一塊或多塊數(shù)據(jù)。塊設備一次可傳輸一塊或多塊數(shù)據(jù)。網(wǎng)絡設備也稱包設備(如以太網(wǎng)卡),是通過網(wǎng)絡設備也稱包設備(如以太網(wǎng)卡),是通過BSDsocket和網(wǎng)絡子系統(tǒng)訪問,它負責數(shù)據(jù)包的發(fā)送和接收。和網(wǎng)絡子系統(tǒng)訪問,它負責數(shù)據(jù)包的發(fā)送和接收。網(wǎng)絡協(xié)議(如網(wǎng)絡協(xié)議(如TCP/IP)就建立在網(wǎng)絡設備驅動程序之上。)就建立在網(wǎng)絡設備驅動程序之上。與字符設備和塊設備不同的是,網(wǎng)絡設備傳輸?shù)牟皇菬o結與字符設備和塊設備不同的是,網(wǎng)絡設備傳輸?shù)牟皇菬o結構的流式數(shù)據(jù),而是有結構的數(shù)據(jù)包。構的流式數(shù)據(jù),而是有結構的數(shù)據(jù)包。針對這三類設備,針對這三類設備,Linux
46、在內(nèi)核空間中建立了三個在內(nèi)核空間中建立了三個設設備注冊表備注冊表(也稱(也稱設備開關表設備開關表),分別是:),分別是:塊設備注冊表塊設備注冊表、字符設備注冊表、字符設備注冊表、以及以及網(wǎng)絡設備注冊表網(wǎng)絡設備注冊表,它們均為線性,它們均為線性表(數(shù)組)表(數(shù)組) 。每個已配置在系統(tǒng)中的外設都在相應的設。每個已配置在系統(tǒng)中的外設都在相應的設備注冊表中占有一個表項。表項中包含了備注冊表中占有一個表項。表項中包含了DCB中的核心中的核心內(nèi)容,主要有:設備名(即設備文件名)、主設備號、內(nèi)容,主要有:設備名(即設備文件名)、主設備號、驅動程序指針。驅動程序指針。DCB中的其他內(nèi)容則被記錄在中的其他內(nèi)容則
47、被記錄在 i 節(jié)點中。節(jié)點中。i 節(jié)點中也節(jié)點中也設置有主設備號,通過它與相應的注冊表表項連接了起設置有主設備號,通過它與相應的注冊表表項連接了起來。從而在設備文件名與設備驅動程序之間建立起了一來。從而在設備文件名與設備驅動程序之間建立起了一條通路。見圖條通路。見圖9-2。i節(jié)點號節(jié)點號外設外設主設備號主設備號fops*read()*write()write()read()驅動程序驅動程序中處程序中處程序設備設備文件名文件名設備目錄設備目錄i 節(jié)點節(jié)點設備注冊表設備注冊表圖圖9-2 設備文件名到設備驅動程序的通路設備文件名到設備驅動程序的通路*intrrpt()2.3 I/O軟件的分層結構軟件
48、的分層結構設備管理軟件,也稱作設備管理軟件,也稱作I/O控制系統(tǒng)(控制系統(tǒng)(IOCS)或)或I/O軟件軟件 ,是操作系統(tǒng)中非常繁雜的部分,通常按照,是操作系統(tǒng)中非常繁雜的部分,通常按照I/O功能進行分層,每一層提供獨特的功能,并與相鄰功能進行分層,每一層提供獨特的功能,并與相鄰的層面間設計有標準界面。當然,不同的操作系統(tǒng)這種的層面間設計有標準界面。當然,不同的操作系統(tǒng)這種分層是不同的,但一般都會有如下幾層(從高到低)分層是不同的,但一般都會有如下幾層(從高到低) :用戶級用戶級I/O軟件軟件獨立于設備的獨立于設備的I/O軟件軟件設備驅動程序設備驅動程序設備中斷處理程序設備中斷處理程序 I/O
49、請求請求 (用戶進程)(用戶進程) I/O 應答應答用戶級用戶級I/O軟件軟件獨立于設備的獨立于設備的I/O軟件軟件設備驅動程序設備驅動程序硬硬 件件圖圖9-3 I/O軟件的分層結構軟件的分層結構設備中斷處理程序設備中斷處理程序3 由于大多數(shù)由于大多數(shù)I/O均為中斷驅動,設備中斷處理程序就均為中斷驅動,設備中斷處理程序就成為成為I/O軟件的不可分割的組成部分。由于設備中斷處理軟件的不可分割的組成部分。由于設備中斷處理程序直接與硬件相關,針對不同的外部設備,中斷響應的程序直接與硬件相關,針對不同的外部設備,中斷響應的處理也不盡相同,因此,設備中斷處理程序處于處理也不盡相同,因此,設備中斷處理程序
50、處于I/O軟件軟件分層結構里面的最底層。而為了降低操作系統(tǒng)的復雜性,分層結構里面的最底層。而為了降低操作系統(tǒng)的復雜性,設備中斷處理程序的暴露窗口應該越小越好,與其打交道設備中斷處理程序的暴露窗口應該越小越好,與其打交道的的OS部分也是越少越好。部分也是越少越好。而降低暴露窗口的最好辦法是讓設備驅動程序負責而降低暴露窗口的最好辦法是讓設備驅動程序負責I/O中斷響應,即設備驅動程序啟動中斷響應,即設備驅動程序啟動I/O操作后阻塞(通操作后阻塞(通過執(zhí)行信號量的過執(zhí)行信號量的P操作或等待信號),然后等待操作或等待信號),然后等待I/O中斷。中斷。當響應當響應I/O中斷時,先執(zhí)行設備中斷處理程序,在設
51、備中中斷時,先執(zhí)行設備中斷處理程序,在設備中斷處理程序完成相關的處理后喚醒設備驅動程序(通過執(zhí)斷處理程序完成相關的處理后喚醒設備驅動程序(通過執(zhí)行信號量的行信號量的V操作或發(fā)送信號)。操作或發(fā)送信號)。I/O中斷處理過程大致有以下幾個步驟:中斷處理過程大致有以下幾個步驟:1. 關中斷。關中斷。CPU中的中斷響應部件響應中斷請求后立中的中斷響應部件響應中斷請求后立即關中斷。即關中斷。2. 保存現(xiàn)行進程(被中斷的進程)的執(zhí)行現(xiàn)場(上下保存現(xiàn)行進程(被中斷的進程)的執(zhí)行現(xiàn)場(上下文)。文)。3. 分析中斷源(中斷類型和發(fā)出中斷的設備分析中斷源(中斷類型和發(fā)出中斷的設備ID),切),切換到相應的設備中
52、斷處理程序。換到相應的設備中斷處理程序。4. 執(zhí)行設備中斷處理程序。設備中斷處理程序首先從執(zhí)行設備中斷處理程序。設備中斷處理程序首先從設備控制器中讀出設備狀態(tài),根據(jù)設備的當前狀態(tài)作相應設備控制器中讀出設備狀態(tài),根據(jù)設備的當前狀態(tài)作相應處理;最后喚醒相應的設備驅動程序。處理;最后喚醒相應的設備驅動程序。5. 恢復被中斷進程的執(zhí)行現(xiàn)場。恢復被中斷進程的執(zhí)行現(xiàn)場。6. 開中斷。開中斷。4 什么是設備驅動程序什么是設備驅動程序設備驅動程序的算法框架設備驅動程序的算法框架4.1 什么是設備驅動程序什么是設備驅動程序設備驅動程序,顧名思義,就是直接驅動外部設備進設備驅動程序,顧名思義,就是直接驅動外部設備
53、進行行I/O操作的軟件。其作用就是實現(xiàn)對外部設備的軟件封操作的軟件。其作用就是實現(xiàn)對外部設備的軟件封裝,隱藏外部設備的所有硬件細節(jié),向用戶提供一個統(tǒng)一裝,隱藏外部設備的所有硬件細節(jié),向用戶提供一個統(tǒng)一的操作界面,的操作界面,是操作系統(tǒng)對外部設備的物理抽象是操作系統(tǒng)對外部設備的物理抽象。它屬于。它屬于與設備控制器直接聯(lián)系的與設備控制器直接聯(lián)系的IOCS部分,與具體的外設直接部分,與具體的外設直接相關,并針對每個特定的外設進行過優(yōu)化。設備驅動程序相關,并針對每個特定的外設進行過優(yōu)化。設備驅動程序通常由設備制造商提供,但歸屬于操作系統(tǒng)內(nèi)核。正因為通常由設備制造商提供,但歸屬于操作系統(tǒng)內(nèi)核。正因為這一
54、屬性,設備驅動程序是操作系統(tǒng)安全的一大隱患。這一屬性,設備驅動程序是操作系統(tǒng)安全的一大隱患。由于需要直接驅動設備的運行,設備驅動程序必須清由于需要直接驅動設備的運行,設備驅動程序必須清楚設備的所有物理細節(jié)。例如,磁盤驅動程序必須清楚磁楚設備的所有物理細節(jié)。例如,磁盤驅動程序必須清楚磁盤控制器設置有多少寄存器及其端口,了解磁盤擁有的柱盤控制器設置有多少寄存器及其端口,了解磁盤擁有的柱面數(shù)(磁道數(shù))、磁頭數(shù)(盤面數(shù))、扇區(qū)數(shù)及扇區(qū)的容面數(shù)(磁道數(shù))、磁頭數(shù)(盤面數(shù))、扇區(qū)數(shù)及扇區(qū)的容量、臂的移動、交叉訪問系數(shù)、電機驅動器、磁頭穩(wěn)定時量、臂的移動、交叉訪問系數(shù)、電機驅動器、磁頭穩(wěn)定時間以及所有保證磁
55、盤正常工作的硬件機制。鼠標驅動程序間以及所有保證磁盤正常工作的硬件機制。鼠標驅動程序自然需要具備辨認是哪個按鍵被按下的能力。自然需要具備辨認是哪個按鍵被按下的能力。每種設備配置有一個設備驅動程序,但一個設備驅動每種設備配置有一個設備驅動程序,但一個設備驅動程序并不是一個完整獨立的程序,而是由一組相對獨立的程序并不是一個完整獨立的程序,而是由一組相對獨立的設備操作函數(shù)(內(nèi)核函數(shù))所構成,其中的每個函數(shù)都可設備操作函數(shù)(內(nèi)核函數(shù))所構成,其中的每個函數(shù)都可被進程單獨調(diào)用,實現(xiàn)相關的物理被進程單獨調(diào)用,實現(xiàn)相關的物理I/O。在在UNIX中,設備驅動程序與整個中,設備驅動程序與整個OS內(nèi)核編在一個二內(nèi)
56、核編在一個二進制文件里。如果要增加新的設備驅動程序或者修改現(xiàn)有進制文件里。如果要增加新的設備驅動程序或者修改現(xiàn)有的設備驅動程序,則需要重新編譯整個操作系統(tǒng)內(nèi)核。的設備驅動程序,則需要重新編譯整個操作系統(tǒng)內(nèi)核。UNIX的這種做法主要是考慮到安全因素。由于用戶無法的這種做法主要是考慮到安全因素。由于用戶無法動態(tài)地裝卸設備驅動程序,操作系統(tǒng)的安全性較高。不動態(tài)地裝卸設備驅動程序,操作系統(tǒng)的安全性較高。不過,這種不能動態(tài)裝卸的限制讓人感覺十分不便,因此在過,這種不能動態(tài)裝卸的限制讓人感覺十分不便,因此在最新的最新的UNIX以及以及Linux版本里,建立了較復雜的可安裝版本里,建立了較復雜的可安裝內(nèi)核模
57、塊機制,它可支持設備驅動程序的動態(tài)裝卸。內(nèi)核模塊機制,它可支持設備驅動程序的動態(tài)裝卸。Windows操作系統(tǒng)從一開始(操作系統(tǒng)從一開始(NT開始)就支持設備開始)就支持設備驅動程序的動態(tài)裝卸,這也是驅動程序的動態(tài)裝卸,這也是Windows不如不如UNIX安全安全的一個原因。的一個原因。 4.2 設備驅動程序的算法框架設備驅動程序的算法框架(1) 在收到一個在收到一個I/O請求后,設備驅動程序做的第一請求后,設備驅動程序做的第一件事是檢查輸入?yún)?shù)是否合法。如果不合法,則錯誤返回;件事是檢查輸入?yún)?shù)是否合法。如果不合法,則錯誤返回;否則,將否則,將I/O請求的抽象表示轉換為設備控制器能夠認識請求的
58、抽象表示轉換為設備控制器能夠認識的具體表示,例如,將線性的盤塊號映射為磁道、磁頭、的具體表示,例如,將線性的盤塊號映射為磁道、磁頭、扇區(qū)等。扇區(qū)等。(2) 然后,設備驅動程序需要檢查設備狀態(tài)以確認設然后,設備驅動程序需要檢查設備狀態(tài)以確認設備是否處于閑置狀態(tài)。如果設備正忙著,則將備是否處于閑置狀態(tài)。如果設備正忙著,則將I/O請求送請求送入該設備的等待隊列以待處理,并阻塞調(diào)用者;否則,若入該設備的等待隊列以待處理,并阻塞調(diào)用者;否則,若設備空閑,就驅動設備運行并啟動電機。設備空閑,就驅動設備運行并啟動電機。(3) 接著開始驅動真正的接著開始驅動真正的I/O操作。設備驅動程序通操作。設備驅動程序通
59、過向設備寄存器里送入一系列的過向設備寄存器里送入一系列的I/O控制命令來進行物理控制命令來進行物理的數(shù)據(jù)傳輸工作。如果需要,設備驅動程序通過自行阻塞的數(shù)據(jù)傳輸工作。如果需要,設備驅動程序通過自行阻塞來等待來等待I/O中斷。中斷。(4) 在被中斷處理程序喚醒后,讀取設備狀態(tài)寄存器在被中斷處理程序喚醒后,讀取設備狀態(tài)寄存器中的信息以檢查此中的信息以檢查此I/O操作是否正確完成。如果正確完成操作是否正確完成。如果正確完成的話,進行的話,進行I/O操作的善后處理,例如,對于讀操作,需操作的善后處理,例如,對于讀操作,需要將要將I/O緩沖區(qū)中的數(shù)據(jù)傳送到調(diào)用者指定的內(nèi)存數(shù)據(jù)區(qū)緩沖區(qū)中的數(shù)據(jù)傳送到調(diào)用者指
60、定的內(nèi)存數(shù)據(jù)區(qū)中,繼續(xù)中,繼續(xù)(5)。如果未正確完成的話,檢查錯誤狀態(tài),對。如果未正確完成的話,檢查錯誤狀態(tài),對可修復性錯誤進行必要的出錯處理,否則錯誤返回??尚迯托藻e誤進行必要的出錯處理,否則錯誤返回。(5) 如果該設備的等待隊列非空,則喚醒等待的進程。如果該設備的等待隊列非空,則喚醒等待的進程。(6) 正常返回此正常返回此I/O請求的調(diào)用者。請求的調(diào)用者。5 統(tǒng)一界面統(tǒng)一界面I/O緩沖緩沖設備的安全保護設備的安全保護設備的分配與調(diào)度設備的分配與調(diào)度錯誤處理錯誤處理假脫機假脫機一般來說,設備驅動程序并不直接從用戶程序處接收一般來說,設備驅動程序并不直接從用戶程序處接收I/O請求,而是通過另外
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年體育休閑廣場運動項目引進與推廣研究報告
- 藥品藥店安全管理制度
- 藥品銷售異常管理制度
- 藥店醫(yī)保網(wǎng)絡管理制度
- 藥店消毒制度管理制度
- 萊西中學資產(chǎn)管理制度
- 設備臺賬資料管理制度
- 設備客戶報修管理制度
- 設備更新維護管理制度
- 設備申請購買管理制度
- 中國血脂管理指南理論知識考核試題及答案
- 教考結合·必修上冊文言知識梳理- 備考
- 血管活性藥物靜脈輸注護理
- 2024年機關事業(yè)單位工人汽車駕駛員高級技師國家題庫練習題答案
- 村級積分制管理
- Nikon尼康D3100中文說明書
- 國家開放大學2024春《1494員工勞動關系管理》期末考試真題及答案-開
- DBJ∕T 13-234-2024 不發(fā)火建筑地面應用技術標準
- 2024年新疆中考地理真題卷及答案
- 人教版初三物理總復習電學專題復習教學設計
- 項目風險記錄及跟蹤表
評論
0/150
提交評論