




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Unit 9操作系統(tǒng)原理操作系統(tǒng)原理馮耀霖馮耀霖設(shè)備,也稱外部設(shè)備或設(shè)備,也稱外部設(shè)備或I/O設(shè)備,是指那些由于原理、設(shè)備,是指那些由于原理、結(jié)構(gòu)、數(shù)據(jù)格式等原因不能與系統(tǒng)總線直接連接的裝置。結(jié)構(gòu)、數(shù)據(jù)格式等原因不能與系統(tǒng)總線直接連接的裝置。它們也是計算機系統(tǒng)不可或缺的重要組成部分,是計算機它們也是計算機系統(tǒng)不可或缺的重要組成部分,是計算機主機(主機(CPU+內(nèi)存)與外部環(huán)境進行交互和溝通的通道。內(nèi)存)與外部環(huán)境進行交互和溝通的通道。顯然,顯然,I/O設(shè)備的存在才使得計算機的存在有了意義,設(shè)備的存在才使得計算機的存在有了意義,就像一個人,如果沒有與人交際和溝通的能力,則這個人就像一個人,如果沒
2、有與人交際和溝通的能力,則這個人通常被認為是癡呆或白癡,即使他實際上是一個天才。同通常被認為是癡呆或白癡,即使他實際上是一個天才。同樣,一臺沒有樣,一臺沒有I/O設(shè)備的計算機,不管其計算功能多么強設(shè)備的計算機,不管其計算功能多么強大,也是廢鐵一堆。所以,設(shè)備管理也是操作系統(tǒng)的重要大,也是廢鐵一堆。所以,設(shè)備管理也是操作系統(tǒng)的重要組成部分,是操作系統(tǒng)的基本功能之一,而且由于組成部分,是操作系統(tǒng)的基本功能之一,而且由于I/O設(shè)設(shè)備的種類繁多,各自的特性和使用方式有很大差異,因此,備的種類繁多,各自的特性和使用方式有很大差異,因此,設(shè)備管理軟件可以說是操作系統(tǒng)中最繁雜的部分。設(shè)備管理軟件可以說是操作
3、系統(tǒng)中最繁雜的部分。 內(nèi)容內(nèi)容設(shè)備設(shè)備設(shè)備管理概述設(shè)備管理概述設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序獨立于設(shè)備的獨立于設(shè)備的I/O軟件軟件用戶級用戶級I/O軟件軟件1 設(shè)備分類設(shè)備分類設(shè)備的差異性設(shè)備的差異性設(shè)備控制器設(shè)備控制器I/O控制方式控制方式1.1 可以說,外部設(shè)備(簡稱外設(shè)或設(shè)備)是計算機系統(tǒng)可以說,外部設(shè)備(簡稱外設(shè)或設(shè)備)是計算機系統(tǒng)中最多樣、差異最大的組成部分,不同的計算機系統(tǒng)所配中最多樣、差異最大的組成部分,不同的計算機系統(tǒng)所配置的外設(shè)也不同。對外設(shè)的分類方法有許多種,主要有以置的外設(shè)也不同。對外設(shè)的分類方法有許多種,主要有以下三種:下三種:基本分類法基本分類法功能分類法功能分類法管理分類
4、法管理分類法1. 基本分類法基本分類法它把外設(shè)大致分為三類:它把外設(shè)大致分為三類:(1) 外存外存:磁盤、光盤、:磁盤、光盤、U盤。盤。(2) 人機通信設(shè)備人機通信設(shè)備:輸入設(shè)備有:鍵盤、鼠標、話筒、光筆、掃描儀、數(shù)輸入設(shè)備有:鍵盤、鼠標、話筒、光筆、掃描儀、數(shù)碼相機等;碼相機等;輸出設(shè)備有:顯示器、打印機、繪圖儀、揚聲器等。輸出設(shè)備有:顯示器、打印機、繪圖儀、揚聲器等。(3) 機機通信設(shè)備機機通信設(shè)備:輸入設(shè)備有:傳感器、儀器儀表等;輸入設(shè)備有:傳感器、儀器儀表等;輸出設(shè)備有:執(zhí)行器、儀器儀表等;輸出設(shè)備有:執(zhí)行器、儀器儀表等;輸入輸出設(shè)備有:網(wǎng)卡、輸入輸出設(shè)備有:網(wǎng)卡、Modem等。等。2
5、. 功能分類法功能分類法如果從外設(shè)的功能上來分,只有兩種:存儲設(shè)備和通如果從外設(shè)的功能上來分,只有兩種:存儲設(shè)備和通信設(shè)備。信設(shè)備。(1)存儲設(shè)備存儲設(shè)備即外存,外存的共同特點是都對存儲即外存,外存的共同特點是都對存儲區(qū)進行分塊管理,也就是說,這些設(shè)備在邏輯上可以看成區(qū)進行分塊管理,也就是說,這些設(shè)備在邏輯上可以看成是有若干存儲塊組成的存儲空間,所以傳統(tǒng)上也被稱作是有若干存儲塊組成的存儲空間,所以傳統(tǒng)上也被稱作塊塊設(shè)備設(shè)備。另外,為了進行大塊數(shù)據(jù)的傳輸,通常需要在內(nèi)存。另外,為了進行大塊數(shù)據(jù)的傳輸,通常需要在內(nèi)存為它們創(chuàng)建比較大的數(shù)據(jù)緩沖區(qū)。為它們創(chuàng)建比較大的數(shù)據(jù)緩沖區(qū)。(2)通信設(shè)備通信設(shè)備
6、除了外存之外的那些外設(shè)通常都是通除了外存之外的那些外設(shè)通常都是通信設(shè)備,它們是計算機與外部環(huán)境進行交互的主要手段。信設(shè)備,它們是計算機與外部環(huán)境進行交互的主要手段。這些設(shè)備的數(shù)據(jù)量往往不是很大,也不是很集中,因此這這些設(shè)備的數(shù)據(jù)量往往不是很大,也不是很集中,因此這類設(shè)備在內(nèi)存中不需要較大的緩沖區(qū),或者就根本沒有緩類設(shè)備在內(nèi)存中不需要較大的緩沖區(qū),或者就根本沒有緩沖區(qū),例如鍵盤、鼠標等。這些設(shè)備傳統(tǒng)上也被稱作沖區(qū),例如鍵盤、鼠標等。這些設(shè)備傳統(tǒng)上也被稱作字符字符設(shè)備設(shè)備。 3. 管理分類法管理分類法按設(shè)備的管理性質(zhì)可把外設(shè)分為兩類:按設(shè)備的管理性質(zhì)可把外設(shè)分為兩類:(1)系統(tǒng)設(shè)備是指操作系統(tǒng)生成
7、時就納入系統(tǒng)管理系統(tǒng)設(shè)備是指操作系統(tǒng)生成時就納入系統(tǒng)管理范圍的各種范圍的各種標準設(shè)備標準設(shè)備(基本配置),操作系統(tǒng)提供有相應(yīng)(基本配置),操作系統(tǒng)提供有相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和設(shè)備驅(qū)動程序等。如鍵盤、鼠標、顯示器、的數(shù)據(jù)結(jié)構(gòu)和設(shè)備驅(qū)動程序等。如鍵盤、鼠標、顯示器、磁盤驅(qū)動器等。磁盤驅(qū)動器等。(2)用戶設(shè)備是指系統(tǒng)設(shè)備之外的用戶設(shè)備是指系統(tǒng)設(shè)備之外的非標準設(shè)備非標準設(shè)備,在,在安裝操作系統(tǒng)時沒有配置,而由用戶根據(jù)需要自己安裝配安裝操作系統(tǒng)時沒有配置,而由用戶根據(jù)需要自己安裝配置。如掃描儀、繪圖儀等。置。如掃描儀、繪圖儀等。 1.2 設(shè)備的差異性設(shè)備的差異性外部設(shè)備由于種類不同,制造商不同,技術(shù)標準不同,
8、外部設(shè)備由于種類不同,制造商不同,技術(shù)標準不同,其特性可以有巨大的不同。而這種不同越是明顯,對操作其特性可以有巨大的不同。而這種不同越是明顯,對操作系統(tǒng)的設(shè)計的挑戰(zhàn)就越大。因為屏蔽這些巨大的不同,使系統(tǒng)的設(shè)計的挑戰(zhàn)就越大。因為屏蔽這些巨大的不同,使得不同的設(shè)備相互共存并不是一件容易的事情。得不同的設(shè)備相互共存并不是一件容易的事情。其中最為明顯的一種差異是數(shù)據(jù)傳輸?shù)乃俣?,它涵蓋其中最為明顯的一種差異是數(shù)據(jù)傳輸?shù)乃俣?,它涵蓋的范圍從每秒十個字節(jié)到幾兆個字節(jié)。表的范圍從每秒十個字節(jié)到幾兆個字節(jié)。表9-1給出的是較給出的是較為常見的一些設(shè)備的數(shù)據(jù)傳輸率。為常見的一些設(shè)備的數(shù)據(jù)傳輸率。輸入輸出設(shè)備輸入輸
9、出設(shè)備數(shù)據(jù)傳輸速率數(shù)據(jù)傳輸速率鍵盤鍵盤10B鼠標鼠標100B56KModem7KB雙向雙向ISDN線路線路16KB激光打印機激光打印機100KB掃描儀掃描儀400KB以太網(wǎng)以太網(wǎng)1.25MBUSB1.5MBIDE磁盤磁盤5MB40X CD-ROM6MB表表9-1 外設(shè)的數(shù)據(jù)傳輸率外設(shè)的數(shù)據(jù)傳輸率輸入輸出設(shè)備輸入輸出設(shè)備數(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 設(shè)備控制器設(shè)備控制器從設(shè)備的物理結(jié)構(gòu)上來看,外設(shè)可能是電器的或機械從設(shè)備的物理結(jié)構(gòu)上來看,外設(shè)可能是電器的或機械的,甚至是機、電、光多種技術(shù)結(jié)合的。但不管其主體是的,甚至是機、電、光多種技術(shù)結(jié)合的。但不管其主體是哪種構(gòu)成,只要它要與電子計算機相連接,那它就必須有哪種構(gòu)成,只要它要與電子計算機相連接,那它就必須有電子器件部分。這也就是說,計算機的外設(shè)必須由兩部分電子器件部分。這也就是說,計算機的外設(shè)必須由兩部分組成:一是外設(shè)的執(zhí)行部分(電氣的、機械或機、電、光組成:一是外設(shè)的執(zhí)行部分(電氣的、機械或機、電、光多種技術(shù)結(jié)合的
11、),也稱設(shè)備主體;二是外設(shè)與系統(tǒng)的接多種技術(shù)結(jié)合的),也稱設(shè)備主體;二是外設(shè)與系統(tǒng)的接口部分,而且這部分一定是電子部分,因為計算機系統(tǒng)必口部分,而且這部分一定是電子部分,因為計算機系統(tǒng)必須通過這些接口來對外設(shè)進行控制和數(shù)據(jù)傳輸。須通過這些接口來對外設(shè)進行控制和數(shù)據(jù)傳輸。設(shè)備控制器(也稱設(shè)備控制器(也稱適配器適配器)是外設(shè)與總線之間的一組)是外設(shè)與總線之間的一組電子器件。例如,串行口控制器就是一種簡單的設(shè)備控制電子器件。例如,串行口控制器就是一種簡單的設(shè)備控制器,它是計算機上用來控制串行信號的一塊芯片或一個芯器,它是計算機上用來控制串行信號的一塊芯片或一個芯片組。再如貼在磁盤側(cè)面的電子線路板也是
12、一種設(shè)備控制片組。再如貼在磁盤側(cè)面的電子線路板也是一種設(shè)備控制 器器磁盤控制器,磁盤控制器,CPU就是通過這個控制器來對磁盤進就是通過這個控制器來對磁盤進行各種操作的。行各種操作的。為使處理器可以像訪問內(nèi)存那樣來訪問外設(shè),計算機為使處理器可以像訪問內(nèi)存那樣來訪問外設(shè),計算機系統(tǒng)必須提供一些互不沖突、能按地址訪問、并能以數(shù)字系統(tǒng)必須提供一些互不沖突、能按地址訪問、并能以數(shù)字信號進行數(shù)據(jù)傳送的設(shè)備寄存器。通常每個設(shè)備都有三類信號進行數(shù)據(jù)傳送的設(shè)備寄存器。通常每個設(shè)備都有三類設(shè)備寄存器:狀態(tài)寄存器、控制寄存器、數(shù)據(jù)寄存器。這設(shè)備寄存器:狀態(tài)寄存器、控制寄存器、數(shù)據(jù)寄存器。這些寄存器都有自己的專有地址
13、,稱做些寄存器都有自己的專有地址,稱做端口端口(port)。這些)。這些寄存器的作用分別為:寄存器的作用分別為:狀態(tài)寄存器狀態(tài)寄存器用來由控制器向處理器提供設(shè)備的當前用來由控制器向處理器提供設(shè)備的當前工作狀態(tài)。例如,設(shè)備的當前操作是否執(zhí)行完畢,數(shù)據(jù)是工作狀態(tài)。例如,設(shè)備的當前操作是否執(zhí)行完畢,數(shù)據(jù)是否可以被讀出或?qū)懭?,以及各種錯誤提示等。這些信息通否可以被讀出或?qū)懭耄约案鞣N錯誤提示等。這些信息通常都用字位(常都用字位(bit)來表示。)來表示。 控制寄存器控制寄存器主要用來由處理器向控制器傳送操作命主要用來由處理器向控制器傳送操作命令。還用來管理外設(shè)工作模式,即在設(shè)備初始化時或運行令。還用來
14、管理外設(shè)工作模式,即在設(shè)備初始化時或運行時,處理器可以通過向控制寄存器寫入命令來改變設(shè)備工時,處理器可以通過向控制寄存器寫入命令來改變設(shè)備工作模式或設(shè)備狀態(tài)。例如,在串口寄存器中專有一位信息作模式或設(shè)備狀態(tài)。例如,在串口寄存器中專有一位信息是用來選擇通信方式的(全工或半工),還有一位信息是是用來選擇通信方式的(全工或半工),還有一位信息是用來設(shè)置數(shù)據(jù)字長的,以及其他用來設(shè)置通信波特率等的用來設(shè)置數(shù)據(jù)字長的,以及其他用來設(shè)置通信波特率等的各個控制位。各個控制位。數(shù)據(jù)寄存器數(shù)據(jù)寄存器(有些設(shè)備控制器又進一步設(shè)置為輸入(有些設(shè)備控制器又進一步設(shè)置為輸入數(shù)據(jù)寄存器和輸出數(shù)據(jù)寄存器)則是輸入輸出數(shù)據(jù)的暫
15、存數(shù)據(jù)寄存器和輸出數(shù)據(jù)寄存器)則是輸入輸出數(shù)據(jù)的暫存寄存器,用來實現(xiàn)設(shè)備與處理器之間的數(shù)據(jù)交換。寄存器,用來實現(xiàn)設(shè)備與處理器之間的數(shù)據(jù)交換。除了設(shè)備寄存器外,有些設(shè)備控制器還設(shè)有除了設(shè)備寄存器外,有些設(shè)備控制器還設(shè)有I/O數(shù)據(jù)數(shù)據(jù)緩沖區(qū)緩沖區(qū),以提高與,以提高與CPU交互數(shù)據(jù)的效率。塊設(shè)備控制器都交互數(shù)據(jù)的效率。塊設(shè)備控制器都設(shè)有設(shè)有I/O數(shù)據(jù)緩沖區(qū),而有些字符設(shè)備控制器也設(shè)有數(shù)據(jù)緩沖區(qū),而有些字符設(shè)備控制器也設(shè)有I/O數(shù)據(jù)緩沖區(qū),如視頻控制器。數(shù)據(jù)緩沖區(qū),如視頻控制器。所有設(shè)備控制器的寄存器和所有設(shè)備控制器的寄存器和I/O數(shù)據(jù)緩沖區(qū)構(gòu)成的地數(shù)據(jù)緩沖區(qū)構(gòu)成的地址空間稱作址空間稱作I/O地址空間
16、地址空間(I/O空間),對于空間),對于I/O地址空地址空間的處理有三種方式:間的處理有三種方式: (1)獨立編址的獨立編址的I/O空間空間在這種方式下,在這種方式下,I/O空間與內(nèi)存是完全脫離的。每個空間與內(nèi)存是完全脫離的。每個設(shè)備寄存器被賦予一個設(shè)備寄存器被賦予一個I/O端口,這個端口就是一個端口,這個端口就是一個9位位或或16位的一個整數(shù),它與內(nèi)存地址沒有任何關(guān)系。而正位的一個整數(shù),它與內(nèi)存地址沒有任何關(guān)系。而正是由于端口與內(nèi)存地址沒有任何關(guān)系,或者說端口不是內(nèi)是由于端口與內(nèi)存地址沒有任何關(guān)系,或者說端口不是內(nèi)存地址,操作系統(tǒng)必須使用專門的輸入輸出特殊指令來進存地址,操作系統(tǒng)必須使用專門
17、的輸入輸出特殊指令來進行數(shù)據(jù)的讀寫。例如,許多指令集使用行數(shù)據(jù)的讀寫。例如,許多指令集使用IN REG, PORT指令用來從設(shè)備讀數(shù)據(jù),而指令指令用來從設(shè)備讀數(shù)據(jù),而指令OUT PORT, REG則用來則用來將數(shù)據(jù)寫入設(shè)備。將數(shù)據(jù)寫入設(shè)備。這種方式的優(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,則必須使用低級語言,這將增大程序設(shè)計的難度和,則必須使用低級語言,這將增大程序設(shè)計的難度和可靠性??煽啃?。 (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空間,即所有設(shè)備寄存器的端口和空間,即所有設(shè)備寄存器的端口和I/O數(shù)據(jù)緩數(shù)據(jù)緩沖區(qū)都是正規(guī)的內(nèi)存地址空間的一部分,沖區(qū)都是正規(guī)的內(nèi)存地址空間的一部分, CPU對這些空對這些空間的讀寫與對普通內(nèi)存的讀寫使用同樣的指令,但引起的間的讀寫與對普通內(nèi)存的讀寫使用同樣的指令,但引起的是與外部設(shè)備間的數(shù)據(jù)傳送。是與外部設(shè)備間的數(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è)都需要對總線上的數(shù)據(jù)進行監(jiān)聽,以確認命令是否和外設(shè)都需要對總線上的數(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)存映射,而設(shè)備寄存器則獨立于內(nèi)存。例如采用射,而設(shè)備寄存器則獨立于內(nèi)存。例如采用Intel奔騰處奔騰處
21、理器的計算機系統(tǒng),將理器的計算機系統(tǒng),將640K到到1M的主存地址留給的主存地址留給I/O數(shù)數(shù)據(jù)緩沖區(qū),而據(jù)緩沖區(qū),而0到到64K的地址留給的地址留給I/O端口。端口。設(shè)備控制器與設(shè)備控制器與CPU通過總線來連接??偩€是一種嚴格通過總線來連接??偩€是一種嚴格定義的描述了線上傳輸數(shù)據(jù)的協(xié)議,凡是符合總線協(xié)議的定義的描述了線上傳輸數(shù)據(jù)的協(xié)議,凡是符合總線協(xié)議的各種設(shè)備都可以共同使用總線與各種設(shè)備都可以共同使用總線與CPU進行數(shù)據(jù)通信。進行數(shù)據(jù)通信。 CPU內(nèi)存內(nèi)存字符設(shè)備字符設(shè)備控制器控制器字符設(shè)備字符設(shè)備控制器控制器DMA控制器控制器總線總線圖圖9-1 單總線型單總線型I/O系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)1.
22、4 I/O控制方式控制方式I/O控制方式,即為實現(xiàn)數(shù)據(jù)的輸入輸出,控制方式,即為實現(xiàn)數(shù)據(jù)的輸入輸出,CPU與外與外設(shè)之間的交互方式。有三種基本的設(shè)之間的交互方式。有三種基本的I/O控制方式:控制方式:輪詢(輪詢(polling)方式)方式中斷驅(qū)動方式中斷驅(qū)動方式DMA方式方式采用何種采用何種I/O控制方式將直接影響設(shè)備管理的實施方控制方式將直接影響設(shè)備管理的實施方法及效率。法及效率。1. 輪詢方式輪詢方式 也稱程序控制方式。它要求在程序中的也稱程序控制方式。它要求在程序中的I/O指令后緊指令后緊接著安排循環(huán)查詢指令,即在接著安排循環(huán)查詢指令,即在CPU啟動了設(shè)備控制器進啟動了設(shè)備控制器進行數(shù)據(jù)
23、的輸入輸出后便以循環(huán)查詢設(shè)備狀態(tài)的方式來等待行數(shù)據(jù)的輸入輸出后便以循環(huán)查詢設(shè)備狀態(tài)的方式來等待I/O的完成。的完成。這種方式的特點是:這種方式的特點是:CPU處于主動地位,涉入處于主動地位,涉入I/O過過程的程度很深,而外設(shè)則處于被動地位,是一種同步工作程的程度很深,而外設(shè)則處于被動地位,是一種同步工作方式。方式。2. 中斷驅(qū)動方式中斷驅(qū)動方式使用輪詢方式時,使用輪詢方式時,CPU需要讀取設(shè)備狀態(tài)寄存器以檢需要讀取設(shè)備狀態(tài)寄存器以檢測設(shè)備的當前狀態(tài),如果設(shè)備還未完成此次的測設(shè)備的當前狀態(tài),如果設(shè)備還未完成此次的I/O,則需,則需要要CPU不斷地查詢,由于不斷地查詢,由于CPU與外設(shè)的速度差距巨
24、大,與外設(shè)的速度差距巨大,因此在因此在I/O過程中,過程中,CPU絕大部分時間都處于繁忙等待狀絕大部分時間都處于繁忙等待狀態(tài),態(tài),CPU的效率十分低下。的效率十分低下。一種更為有效的方式是讓設(shè)備處于某種主動地位,而一種更為有效的方式是讓設(shè)備處于某種主動地位,而將將CPU從忙等待中解脫出來。在啟動了某個外設(shè)后,立即從忙等待中解脫出來。在啟動了某個外設(shè)后,立即阻塞現(xiàn)行進程,阻塞現(xiàn)行進程,CPU就可被調(diào)度轉(zhuǎn)去執(zhí)行其他進程而不是就可被調(diào)度轉(zhuǎn)去執(zhí)行其他進程而不是在原地踏步等待。當某個數(shù)據(jù)在原地踏步等待。當某個數(shù)據(jù)I/O任務(wù)完成后,由設(shè)備控任務(wù)完成后,由設(shè)備控制器向制器向CPU發(fā)出一個發(fā)出一個I/O中斷,
25、驅(qū)動中斷,驅(qū)動CPU中止現(xiàn)行進程的中止現(xiàn)行進程的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序,并喚醒等待該執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序,并喚醒等待該I/O的進程。的進程。顯然,這種顯然,這種I/O控制方式可以大大提高控制方式可以大大提高CPU的效率,的效率,因此是設(shè)備與因此是設(shè)備與CPU進行交互的基本手段。進行交互的基本手段。3. DMA方式方式雖然中斷驅(qū)動方式避免了輪詢方式的忙等待現(xiàn)象,從雖然中斷驅(qū)動方式避免了輪詢方式的忙等待現(xiàn)象,從而大大提高了而大大提高了CPU的效率,但這主要是對慢速的字符設(shè)的效率,但這主要是對慢速的字符設(shè)備而言的。而對于一次需要傳輸大量數(shù)據(jù)的高速塊設(shè)備來備而言的。而對于一次需要
26、傳輸大量數(shù)據(jù)的高速塊設(shè)備來說,仍然不能令人滿意。因為設(shè)備的數(shù)據(jù)寄存器的容量是說,仍然不能令人滿意。因為設(shè)備的數(shù)據(jù)寄存器的容量是有限的,故一個有限的,故一個I/O任務(wù)中待傳輸?shù)臄?shù)據(jù)需要多次送往數(shù)任務(wù)中待傳輸?shù)臄?shù)據(jù)需要多次送往數(shù)據(jù)寄存器,而每當設(shè)備傳送完一次數(shù)據(jù)寄存器中的數(shù)據(jù)時,據(jù)寄存器,而每當設(shè)備傳送完一次數(shù)據(jù)寄存器中的數(shù)據(jù)時,就會觸發(fā)一次就會觸發(fā)一次I/O中斷,因此在塊設(shè)備的一次中斷,因此在塊設(shè)備的一次I/O任務(wù)的任務(wù)的完成過程中,完成過程中,CPU需要響應(yīng)和處理許多次需要響應(yīng)和處理許多次I/O中斷,而每中斷,而每一次一次I/O中斷的響應(yīng)和處理都需要付出不小的額外中斷的響應(yīng)和處理都需要付出不小
27、的額外CPU開開銷,銷,CPU的效率并未獲得太多改善。的效率并未獲得太多改善。人們發(fā)現(xiàn),在設(shè)備與主機交換大量數(shù)據(jù)時,人們發(fā)現(xiàn),在設(shè)備與主機交換大量數(shù)據(jù)時,CPU只是只是數(shù)據(jù)傳輸?shù)囊粋€中介,用功能強大的數(shù)據(jù)傳輸?shù)囊粋€中介,用功能強大的CPU長時間去充當長時間去充當 一個傳輸數(shù)據(jù)的中介角色顯然得不償失。于是就設(shè)計出一一個傳輸數(shù)據(jù)的中介角色顯然得不償失。于是就設(shè)計出一種專門負責(zé)執(zhí)行數(shù)據(jù)種專門負責(zé)執(zhí)行數(shù)據(jù)I/O事務(wù)的處理器事務(wù)的處理器I/O處理器處理器,它比它比CPU要簡單得多,但也便宜很多,它只能執(zhí)行少量要簡單得多,但也便宜很多,它只能執(zhí)行少量的指令,主要是數(shù)據(jù)的指令,主要是數(shù)據(jù)I/O指令。指令。I
28、/O處理器既可以構(gòu)建在處理器既可以構(gòu)建在設(shè)備控制器里面(這樣的控制器稱為設(shè)備控制器里面(這樣的控制器稱為DMA控制器控制器),也),也可以作為獨立的實體掛在計算機主板上。最簡單的可以作為獨立的實體掛在計算機主板上。最簡單的I/O處處理器在一個時間只能處理一個理器在一個時間只能處理一個I/O,即不能并發(fā),而復(fù)雜,即不能并發(fā),而復(fù)雜的的I/O處理器可以同時處理多個處理器可以同時處理多個I/O,即它能夠提供多個,即它能夠提供多個I/O通道,每個通道可以對應(yīng)一個通道,每個通道可以對應(yīng)一個I/O設(shè)備。有了設(shè)備。有了I/O處處理器,就可以將理器,就可以將CPU從繁雜的從繁雜的I/O事務(wù)中解脫出來。事務(wù)中解
29、脫出來。DMA(Direct Memory Access,直接內(nèi)存訪問直接內(nèi)存訪問)方式就是使用方式就是使用I/O處理器的處理器的I/O控制方式,主要是針對塊控制方式,主要是針對塊設(shè)備的。設(shè)備的。DMA方式的目的當然是降低方式的目的當然是降低CPU響應(yīng)中斷的頻率,使響應(yīng)中斷的頻率,使得一個傳輸大量數(shù)據(jù)的得一個傳輸大量數(shù)據(jù)的I/O任務(wù)中需要響應(yīng)許多次中斷變?nèi)蝿?wù)中需要響應(yīng)許多次中斷變?yōu)橹豁憫?yīng)一次中斷。為只響應(yīng)一次中斷。DMA方式在設(shè)備和內(nèi)存之間建立了直方式在設(shè)備和內(nèi)存之間建立了直接數(shù)據(jù)通路,即設(shè)備和內(nèi)存之間可直接讀寫數(shù)據(jù),且數(shù)據(jù)接數(shù)據(jù)通路,即設(shè)備和內(nèi)存之間可直接讀寫數(shù)據(jù),且數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)
30、塊。一個傳輸?shù)幕締挝皇菙?shù)據(jù)塊。一個I/O任務(wù)中的所有數(shù)據(jù)是任務(wù)中的所有數(shù)據(jù)是在一個在一個DMA控制器的控制下完成傳輸?shù)?,且在整個傳輸過控制器的控制下完成傳輸?shù)?,且在整個傳輸過程中無需程中無需CPU的直接干預(yù),直到該任務(wù)中的所有數(shù)據(jù)都傳的直接干預(yù),直到該任務(wù)中的所有數(shù)據(jù)都傳輸完后,輸完后,DMA控制器才向控制器才向CPU發(fā)出一個發(fā)出一個I/O中斷。中斷。DMA控制器在普通設(shè)備控制器的基礎(chǔ)上又增設(shè)了兩個控制器在普通設(shè)備控制器的基礎(chǔ)上又增設(shè)了兩個寄存器:內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器。寄存器:內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器。DMA方式的方式的I/O過程如下:過程如下:CPU對對DMA控制器進行設(shè)置
31、,告訴其存放控制器進行設(shè)置,告訴其存放I/O數(shù)數(shù)據(jù)的主存區(qū)地址和傳輸長度(分別送入內(nèi)存地址寄存器和據(jù)的主存區(qū)地址和傳輸長度(分別送入內(nèi)存地址寄存器和數(shù)據(jù)計數(shù)寄存器);數(shù)據(jù)計數(shù)寄存器);啟動啟動DMA過程,將系統(tǒng)總線的使用權(quán)暫時移交給過程,將系統(tǒng)總線的使用權(quán)暫時移交給DMA控制器;控制器; DMA控制器進行數(shù)據(jù)傳輸,即接管對系統(tǒng)總線的控制器進行數(shù)據(jù)傳輸,即接管對系統(tǒng)總線的使用權(quán)(總線周期竊用),啟動設(shè)備進行數(shù)據(jù)的使用權(quán)(總線周期竊用),啟動設(shè)備進行數(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移交總線使用權(quán)。移交總線使用權(quán)。CPU響應(yīng)中斷,處理善后事宜。響應(yīng)中斷,處理善后事宜。DMA方式的優(yōu)點是顯著減少了中斷次數(shù)和方式的優(yōu)點是顯著減少了中斷次數(shù)和CPU的的I/O操作次數(shù),從而大大減輕了操作次數(shù),從而大大減輕了CPU的的I/O負擔(dān),加快了負擔(dān),加快了I/O的速度,不僅有利于的速度,不僅有利于CPU效率的發(fā)揮,而且能滿足高效率的發(fā)揮,而且能滿足高速速I/O設(shè)備對成組數(shù)據(jù)的高速傳送要求。缺點自然是增加設(shè)備對成組數(shù)據(jù)的高速傳送要求。缺點自然是增加了成本和復(fù)雜性,而且由于了成本和復(fù)雜性,而且由于DMA控制器需要與控制器需要
33、與CPU競爭競爭系統(tǒng)總線,其效率的提高不如理論上的期望。系統(tǒng)總線,其效率的提高不如理論上的期望。2 設(shè)備管理的目標和功能設(shè)備管理的目標和功能 設(shè)備控制塊設(shè)備控制塊I/O軟件的分層結(jié)構(gòu)軟件的分層結(jié)構(gòu)2.1 設(shè)備管理的目標和功能設(shè)備管理的目標和功能 1. 設(shè)備管理的目標設(shè)備管理的目標設(shè)備管理是操作系統(tǒng)的重要組成部分,現(xiàn)代操作系統(tǒng)設(shè)備管理是操作系統(tǒng)的重要組成部分,現(xiàn)代操作系統(tǒng)的設(shè)備管理的基本目標除了公平和有效之外,另一目標是的設(shè)備管理的基本目標除了公平和有效之外,另一目標是把所有外設(shè)都抽象成文件,使得對物理特征各異的各種設(shè)把所有外設(shè)都抽象成文件,使得對物理特征各異的各種設(shè)備都可以以統(tǒng)一的文件方式進行
34、操作。具體地說,它必須備都可以以統(tǒng)一的文件方式進行操作。具體地說,它必須滿足下述設(shè)計要求:滿足下述設(shè)計要求:為用戶提供方便、統(tǒng)一的設(shè)備使用界面。將復(fù)雜的為用戶提供方便、統(tǒng)一的設(shè)備使用界面。將復(fù)雜的具體設(shè)備操作控制過程隱藏起來,通過統(tǒng)一的文件操作界具體設(shè)備操作控制過程隱藏起來,通過統(tǒng)一的文件操作界面進行面進行I/O操作,既方便了用戶對設(shè)備的使用和滿足用戶操作,既方便了用戶對設(shè)備的使用和滿足用戶使用外設(shè)的各種要求,又有利于將不同類型的設(shè)備配置在使用外設(shè)的各種要求,又有利于將不同類型的設(shè)備配置在系統(tǒng)中。系統(tǒng)中。 提高外設(shè)的利用率,盡量提高并行程度。一方面,提高外設(shè)的利用率,盡量提高并行程度。一方面,
35、用戶使用外設(shè)常有很大的隨機性,設(shè)備管理應(yīng)能根據(jù)當時用戶使用外設(shè)常有很大的隨機性,設(shè)備管理應(yīng)能根據(jù)當時設(shè)備的忙閑狀況進行分配,實現(xiàn)資源共享。另一方面,充設(shè)備的忙閑狀況進行分配,實現(xiàn)資源共享。另一方面,充分發(fā)揮設(shè)備和主機的效率,有效地解決分發(fā)揮設(shè)備和主機的效率,有效地解決CPU與外設(shè)之間與外設(shè)之間傳輸速率不協(xié)調(diào)的問題。另外,將獨享設(shè)備盡量虛擬成共傳輸速率不協(xié)調(diào)的問題。另外,將獨享設(shè)備盡量虛擬成共享設(shè)備,以增大資源利用率和降低死鎖發(fā)生的概率。例如,享設(shè)備,以增大資源利用率和降低死鎖發(fā)生的概率。例如,將一臺打印機虛擬成多臺可共享的邏輯打印機。將一臺打印機虛擬成多臺可共享的邏輯打印機。用戶程序獨立于設(shè)備
36、,即實現(xiàn)程序與設(shè)備的無關(guān)性。用戶程序獨立于設(shè)備,即實現(xiàn)程序與設(shè)備的無關(guān)性。程序中可使用邏輯設(shè)備名或設(shè)備文件名來使用設(shè)備,它們程序中可使用邏輯設(shè)備名或設(shè)備文件名來使用設(shè)備,它們與實際使用的物理設(shè)備無關(guān)。當物理設(shè)備發(fā)生故障或有更與實際使用的物理設(shè)備無關(guān)。當物理設(shè)備發(fā)生故障或有更換時,用戶程序不必修改,就可使用系統(tǒng)分配的其他相關(guān)換時,用戶程序不必修改,就可使用系統(tǒng)分配的其他相關(guān)設(shè)備。設(shè)備。2. 設(shè)備管理的功能設(shè)備管理的功能為了達到設(shè)備管理的目標,設(shè)備管理系統(tǒng)通常需要實為了達到設(shè)備管理的目標,設(shè)備管理系統(tǒng)通常需要實現(xiàn)如下基本功能:現(xiàn)如下基本功能:設(shè)備驅(qū)動和錯誤處理。主要是按照設(shè)備驅(qū)動和錯誤處理。主要是
37、按照I/O控制方式,控制方式,對不同的設(shè)備完成相應(yīng)的對不同的設(shè)備完成相應(yīng)的I/O中斷、設(shè)備控制器操作、讀中斷、設(shè)備控制器操作、讀寫操作等物理寫操作等物理I/O過程。針對不同的設(shè)備請求,通過設(shè)備過程。針對不同的設(shè)備請求,通過設(shè)備驅(qū)動程序完成對設(shè)備的直接控制。錯誤處理指的是對輸入驅(qū)動程序完成對設(shè)備的直接控制。錯誤處理指的是對輸入輸出過程中產(chǎn)生的錯誤進行偵測與糾正,而且糾錯應(yīng)該在輸出過程中產(chǎn)生的錯誤進行偵測與糾正,而且糾錯應(yīng)該在最靠近硬件的層面上進行。最靠近硬件的層面上進行。系統(tǒng)與設(shè)備間的協(xié)調(diào)。主要是速度上的協(xié)調(diào),要解系統(tǒng)與設(shè)備間的協(xié)調(diào)。主要是速度上的協(xié)調(diào),要解決快速的決快速的CPU與慢速的與慢速的
38、I/O設(shè)備之間的操作不匹配的問題,設(shè)備之間的操作不匹配的問題,通常采用通常采用I/O緩沖區(qū)的方式來解決這個矛盾。設(shè)備管緩沖區(qū)的方式來解決這個矛盾。設(shè)備管理要實現(xiàn)理要實現(xiàn)I/O緩沖區(qū)的建立、分配及回收。緩沖區(qū)的建立、分配及回收。設(shè)備調(diào)度與分配。即對等待共享設(shè)備設(shè)備調(diào)度與分配。即對等待共享設(shè)備I/O操作的進操作的進程進行調(diào)度,而對多個進程爭用獨占設(shè)備進行分配。程進行調(diào)度,而對多個進程爭用獨占設(shè)備進行分配。 2.2 設(shè)備控制塊與設(shè)備文件設(shè)備控制塊與設(shè)備文件就如用進程控制塊(就如用進程控制塊(PCB)來表示一個進程,用文件)來表示一個進程,用文件控制塊(控制塊(FCB)來表示一個文件一樣,操作系統(tǒng)用設(shè)
39、備控)來表示一個文件一樣,操作系統(tǒng)用設(shè)備控制塊(制塊(DCB)來抽象表示一個外部設(shè)備。操作系統(tǒng)在內(nèi)核)來抽象表示一個外部設(shè)備。操作系統(tǒng)在內(nèi)核空間中為每個設(shè)備建立一個設(shè)備控制塊,用于描述本設(shè)備空間中為每個設(shè)備建立一個設(shè)備控制塊,用于描述本設(shè)備的各種抽象屬性及控制信息。的各種抽象屬性及控制信息。DCB包含的內(nèi)容如:包含的內(nèi)容如:設(shè)備名(即設(shè)備文件名)設(shè)備名(即設(shè)備文件名)設(shè)備設(shè)備ID設(shè)備工作狀態(tài)設(shè)備工作狀態(tài)控制器端口控制器端口I/O緩沖區(qū)端口緩沖區(qū)端口I/O請求隊列指針請求隊列指針設(shè)備驅(qū)動程序指針設(shè)備驅(qū)動程序指針設(shè)備中斷處理程序指針設(shè)備中斷處理程序指針設(shè)備設(shè)備ID由主設(shè)備號和次設(shè)備號構(gòu)成。主設(shè)備號
40、用于標由主設(shè)備號和次設(shè)備號構(gòu)成。主設(shè)備號用于標識設(shè)備類型,如識設(shè)備類型,如IDE硬盤、硬盤、SCSI硬盤、顯示器、打印機等,硬盤、顯示器、打印機等,同一類設(shè)備使用的是同一個設(shè)備驅(qū)動程序。次設(shè)備號用于同一類設(shè)備使用的是同一個設(shè)備驅(qū)動程序。次設(shè)備號用于標識同類設(shè)備中的某個具體設(shè)備及其控制器,即同類設(shè)備標識同類設(shè)備中的某個具體設(shè)備及其控制器,即同類設(shè)備的序號。的序號。這里的這里的設(shè)備驅(qū)動程序指針設(shè)備驅(qū)動程序指針實際上是一個指針組,其中實際上是一個指針組,其中的每個指針指向一個設(shè)備操作函數(shù)。設(shè)備驅(qū)動程序容易被的每個指針指向一個設(shè)備操作函數(shù)。設(shè)備驅(qū)動程序容易被人誤認為是一個完整的、能夠獨立運行的程序,其
41、實不然,人誤認為是一個完整的、能夠獨立運行的程序,其實不然,它只是一組進程可調(diào)用的、能對設(shè)備實施它只是一組進程可調(diào)用的、能對設(shè)備實施I/O操作及控制操作及控制操作的內(nèi)核功能函數(shù),如操作的內(nèi)核功能函數(shù),如open( ); /打開打開close( ); /關(guān)閉關(guān)閉read( ); /讀數(shù)據(jù)讀數(shù)據(jù)write( ); /寫數(shù)據(jù)寫數(shù)據(jù)llseek( ); /移動讀寫指針移動讀寫指針readdir( );/讀目錄讀目錄ioclt( ); /輸入輸出控制輸入輸出控制release( ); /釋放緩存釋放緩存當然,對于塊設(shè)備和字符設(shè)備以及不同的塊設(shè)備和不當然,對于塊設(shè)備和字符設(shè)備以及不同的塊設(shè)備和不同的字符設(shè)
42、備,各自所含的功能函數(shù)的個數(shù)有所不同,同同的字符設(shè)備,各自所含的功能函數(shù)的個數(shù)有所不同,同名函數(shù)具體執(zhí)行的算法也是不同的,從而構(gòu)成了不同設(shè)備名函數(shù)具體執(zhí)行的算法也是不同的,從而構(gòu)成了不同設(shè)備的驅(qū)動程序。設(shè)備驅(qū)動程序就是操作系統(tǒng)對設(shè)備的物理抽的驅(qū)動程序。設(shè)備驅(qū)動程序就是操作系統(tǒng)對設(shè)備的物理抽象(最底層抽象)。象(最底層抽象)。至于如何管理至于如何管理DCB則可以有不同的方法。自則可以有不同的方法。自UNIX后,后,現(xiàn)代操作系統(tǒng)普遍將現(xiàn)代操作系統(tǒng)普遍將DCB抽象成抽象成特殊文件特殊文件(即(即設(shè)備文件設(shè)備文件)。)。與數(shù)據(jù)文件一樣,系統(tǒng)為每個設(shè)備文件建立一個與數(shù)據(jù)文件一樣,系統(tǒng)為每個設(shè)備文件建立一
43、個 FCB,但,但設(shè)備文件的特殊之處在于,它并沒有數(shù)據(jù)文件意義上的文設(shè)備文件的特殊之處在于,它并沒有數(shù)據(jù)文件意義上的文件體,即它并不在磁盤空間中占有一席之地,換言之,操件體,即它并不在磁盤空間中占有一席之地,換言之,操作系統(tǒng)并不給設(shè)備文件分配磁盤空間單元。那么,作系統(tǒng)并不給設(shè)備文件分配磁盤空間單元。那么,設(shè)備文設(shè)備文件的文件體是什么呢?就是件的文件體是什么呢?就是DCB!例如,例如,Linux是按如下方式處理的。是按如下方式處理的。Linux支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備及網(wǎng)絡(luò)設(shè)備。及網(wǎng)絡(luò)設(shè)備。字符設(shè)備能夠存儲或傳輸不定長數(shù)據(jù)。某些字符設(shè)備字符
44、設(shè)備能夠存儲或傳輸不定長數(shù)據(jù)。某些字符設(shè)備可以每次傳送一個字節(jié),可以不經(jīng)過緩沖區(qū)直接進行讀可以每次傳送一個字節(jié),可以不經(jīng)過緩沖區(qū)直接進行讀寫,如系統(tǒng)中的串行口寫,如系統(tǒng)中的串行口/dev/dnao和和/dev/cnal,傳送,傳送完一個字節(jié)后產(chǎn)生一個完一個字節(jié)后產(chǎn)生一個I/O中斷;另一些字符設(shè)備可以在中斷;另一些字符設(shè)備可以在設(shè)備內(nèi)緩存數(shù)據(jù),因此可以一次傳送完多個字節(jié)后產(chǎn)生一設(shè)備內(nèi)緩存數(shù)據(jù),因此可以一次傳送完多個字節(jié)后產(chǎn)生一個個I/O中斷。中斷。塊設(shè)備以塊為單位傳輸數(shù)據(jù)。每個塊設(shè)備都可建有一塊設(shè)備以塊為單位傳輸數(shù)據(jù)。每個塊設(shè)備都可建有一個個I/O數(shù)據(jù)緩沖區(qū)隊列,緩沖區(qū)的大小與塊相等,因此,數(shù)據(jù)
45、緩沖區(qū)隊列,緩沖區(qū)的大小與塊相等,因此,塊設(shè)備一次可傳輸一塊或多塊數(shù)據(jù)。塊設(shè)備一次可傳輸一塊或多塊數(shù)據(jù)。網(wǎng)絡(luò)設(shè)備也稱包設(shè)備(如以太網(wǎng)卡),是通過網(wǎng)絡(luò)設(shè)備也稱包設(shè)備(如以太網(wǎng)卡),是通過BSDsocket和網(wǎng)絡(luò)子系統(tǒng)訪問,它負責(zé)數(shù)據(jù)包的發(fā)送和接收。和網(wǎng)絡(luò)子系統(tǒng)訪問,它負責(zé)數(shù)據(jù)包的發(fā)送和接收。網(wǎng)絡(luò)協(xié)議(如網(wǎng)絡(luò)協(xié)議(如TCP/IP)就建立在網(wǎng)絡(luò)設(shè)備驅(qū)動程序之上。)就建立在網(wǎng)絡(luò)設(shè)備驅(qū)動程序之上。與字符設(shè)備和塊設(shè)備不同的是,網(wǎng)絡(luò)設(shè)備傳輸?shù)牟皇菬o結(jié)與字符設(shè)備和塊設(shè)備不同的是,網(wǎng)絡(luò)設(shè)備傳輸?shù)牟皇菬o結(jié)構(gòu)的流式數(shù)據(jù),而是有結(jié)構(gòu)的數(shù)據(jù)包。構(gòu)的流式數(shù)據(jù),而是有結(jié)構(gòu)的數(shù)據(jù)包。針對這三類設(shè)備,針對這三類設(shè)備,Linux
46、在內(nèi)核空間中建立了三個在內(nèi)核空間中建立了三個設(shè)設(shè)備注冊表備注冊表(也稱(也稱設(shè)備開關(guān)表設(shè)備開關(guān)表),分別是:),分別是:塊設(shè)備注冊表塊設(shè)備注冊表、字符設(shè)備注冊表、字符設(shè)備注冊表、以及以及網(wǎng)絡(luò)設(shè)備注冊表網(wǎng)絡(luò)設(shè)備注冊表,它們均為線性,它們均為線性表(數(shù)組)表(數(shù)組) 。每個已配置在系統(tǒng)中的外設(shè)都在相應(yīng)的設(shè)。每個已配置在系統(tǒng)中的外設(shè)都在相應(yīng)的設(shè)備注冊表中占有一個表項。表項中包含了備注冊表中占有一個表項。表項中包含了DCB中的核心中的核心內(nèi)容,主要有:設(shè)備名(即設(shè)備文件名)、主設(shè)備號、內(nèi)容,主要有:設(shè)備名(即設(shè)備文件名)、主設(shè)備號、驅(qū)動程序指針。驅(qū)動程序指針。DCB中的其他內(nèi)容則被記錄在中的其他內(nèi)容則
47、被記錄在 i 節(jié)點中。節(jié)點中。i 節(jié)點中也節(jié)點中也設(shè)置有主設(shè)備號,通過它與相應(yīng)的注冊表表項連接了起設(shè)置有主設(shè)備號,通過它與相應(yīng)的注冊表表項連接了起來。從而在設(shè)備文件名與設(shè)備驅(qū)動程序之間建立起了一來。從而在設(shè)備文件名與設(shè)備驅(qū)動程序之間建立起了一條通路。見圖條通路。見圖9-2。i節(jié)點號節(jié)點號外設(shè)外設(shè)主設(shè)備號主設(shè)備號fops*read()*write()write()read()驅(qū)動程序驅(qū)動程序中處程序中處程序設(shè)備設(shè)備文件名文件名設(shè)備目錄設(shè)備目錄i 節(jié)點節(jié)點設(shè)備注冊表設(shè)備注冊表圖圖9-2 設(shè)備文件名到設(shè)備驅(qū)動程序的通路設(shè)備文件名到設(shè)備驅(qū)動程序的通路*intrrpt()2.3 I/O軟件的分層結(jié)構(gòu)軟件
48、的分層結(jié)構(gòu)設(shè)備管理軟件,也稱作設(shè)備管理軟件,也稱作I/O控制系統(tǒng)(控制系統(tǒng)(IOCS)或)或I/O軟件軟件 ,是操作系統(tǒng)中非常繁雜的部分,通常按照,是操作系統(tǒng)中非常繁雜的部分,通常按照I/O功能進行分層,每一層提供獨特的功能,并與相鄰功能進行分層,每一層提供獨特的功能,并與相鄰的層面間設(shè)計有標準界面。當然,不同的操作系統(tǒng)這種的層面間設(shè)計有標準界面。當然,不同的操作系統(tǒng)這種分層是不同的,但一般都會有如下幾層(從高到低)分層是不同的,但一般都會有如下幾層(從高到低) :用戶級用戶級I/O軟件軟件獨立于設(shè)備的獨立于設(shè)備的I/O軟件軟件設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序設(shè)備中斷處理程序設(shè)備中斷處理程序 I/O
49、請求請求 (用戶進程)(用戶進程) I/O 應(yīng)答應(yīng)答用戶級用戶級I/O軟件軟件獨立于設(shè)備的獨立于設(shè)備的I/O軟件軟件設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序硬硬 件件圖圖9-3 I/O軟件的分層結(jié)構(gòu)軟件的分層結(jié)構(gòu)設(shè)備中斷處理程序設(shè)備中斷處理程序3 由于大多數(shù)由于大多數(shù)I/O均為中斷驅(qū)動,設(shè)備中斷處理程序就均為中斷驅(qū)動,設(shè)備中斷處理程序就成為成為I/O軟件的不可分割的組成部分。由于設(shè)備中斷處理軟件的不可分割的組成部分。由于設(shè)備中斷處理程序直接與硬件相關(guān),針對不同的外部設(shè)備,中斷響應(yīng)的程序直接與硬件相關(guān),針對不同的外部設(shè)備,中斷響應(yīng)的處理也不盡相同,因此,設(shè)備中斷處理程序處于處理也不盡相同,因此,設(shè)備中斷處理程序
50、處于I/O軟件軟件分層結(jié)構(gòu)里面的最底層。而為了降低操作系統(tǒng)的復(fù)雜性,分層結(jié)構(gòu)里面的最底層。而為了降低操作系統(tǒng)的復(fù)雜性,設(shè)備中斷處理程序的暴露窗口應(yīng)該越小越好,與其打交道設(shè)備中斷處理程序的暴露窗口應(yīng)該越小越好,與其打交道的的OS部分也是越少越好。部分也是越少越好。而降低暴露窗口的最好辦法是讓設(shè)備驅(qū)動程序負責(zé)而降低暴露窗口的最好辦法是讓設(shè)備驅(qū)動程序負責(zé)I/O中斷響應(yīng),即設(shè)備驅(qū)動程序啟動中斷響應(yīng),即設(shè)備驅(qū)動程序啟動I/O操作后阻塞(通操作后阻塞(通過執(zhí)行信號量的過執(zhí)行信號量的P操作或等待信號),然后等待操作或等待信號),然后等待I/O中斷。中斷。當響應(yīng)當響應(yīng)I/O中斷時,先執(zhí)行設(shè)備中斷處理程序,在設(shè)
51、備中中斷時,先執(zhí)行設(shè)備中斷處理程序,在設(shè)備中斷處理程序完成相關(guān)的處理后喚醒設(shè)備驅(qū)動程序(通過執(zhí)斷處理程序完成相關(guān)的處理后喚醒設(shè)備驅(qū)動程序(通過執(zhí)行信號量的行信號量的V操作或發(fā)送信號)。操作或發(fā)送信號)。I/O中斷處理過程大致有以下幾個步驟:中斷處理過程大致有以下幾個步驟:1. 關(guān)中斷。關(guān)中斷。CPU中的中斷響應(yīng)部件響應(yīng)中斷請求后立中的中斷響應(yīng)部件響應(yīng)中斷請求后立即關(guān)中斷。即關(guān)中斷。2. 保存現(xiàn)行進程(被中斷的進程)的執(zhí)行現(xiàn)場(上下保存現(xiàn)行進程(被中斷的進程)的執(zhí)行現(xiàn)場(上下文)。文)。3. 分析中斷源(中斷類型和發(fā)出中斷的設(shè)備分析中斷源(中斷類型和發(fā)出中斷的設(shè)備ID),切),切換到相應(yīng)的設(shè)備中
52、斷處理程序。換到相應(yīng)的設(shè)備中斷處理程序。4. 執(zhí)行設(shè)備中斷處理程序。設(shè)備中斷處理程序首先從執(zhí)行設(shè)備中斷處理程序。設(shè)備中斷處理程序首先從設(shè)備控制器中讀出設(shè)備狀態(tài),根據(jù)設(shè)備的當前狀態(tài)作相應(yīng)設(shè)備控制器中讀出設(shè)備狀態(tài),根據(jù)設(shè)備的當前狀態(tài)作相應(yīng)處理;最后喚醒相應(yīng)的設(shè)備驅(qū)動程序。處理;最后喚醒相應(yīng)的設(shè)備驅(qū)動程序。5. 恢復(fù)被中斷進程的執(zhí)行現(xiàn)場?;謴?fù)被中斷進程的執(zhí)行現(xiàn)場。6. 開中斷。開中斷。4 什么是設(shè)備驅(qū)動程序什么是設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序的算法框架設(shè)備驅(qū)動程序的算法框架4.1 什么是設(shè)備驅(qū)動程序什么是設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序,顧名思義,就是直接驅(qū)動外部設(shè)備進設(shè)備驅(qū)動程序,顧名思義,就是直接驅(qū)動外部設(shè)備
53、進行行I/O操作的軟件。其作用就是實現(xiàn)對外部設(shè)備的軟件封操作的軟件。其作用就是實現(xiàn)對外部設(shè)備的軟件封裝,隱藏外部設(shè)備的所有硬件細節(jié),向用戶提供一個統(tǒng)一裝,隱藏外部設(shè)備的所有硬件細節(jié),向用戶提供一個統(tǒng)一的操作界面,的操作界面,是操作系統(tǒng)對外部設(shè)備的物理抽象是操作系統(tǒng)對外部設(shè)備的物理抽象。它屬于。它屬于與設(shè)備控制器直接聯(lián)系的與設(shè)備控制器直接聯(lián)系的IOCS部分,與具體的外設(shè)直接部分,與具體的外設(shè)直接相關(guān),并針對每個特定的外設(shè)進行過優(yōu)化。設(shè)備驅(qū)動程序相關(guān),并針對每個特定的外設(shè)進行過優(yōu)化。設(shè)備驅(qū)動程序通常由設(shè)備制造商提供,但歸屬于操作系統(tǒng)內(nèi)核。正因為通常由設(shè)備制造商提供,但歸屬于操作系統(tǒng)內(nèi)核。正因為這一
54、屬性,設(shè)備驅(qū)動程序是操作系統(tǒng)安全的一大隱患。這一屬性,設(shè)備驅(qū)動程序是操作系統(tǒng)安全的一大隱患。由于需要直接驅(qū)動設(shè)備的運行,設(shè)備驅(qū)動程序必須清由于需要直接驅(qū)動設(shè)備的運行,設(shè)備驅(qū)動程序必須清楚設(shè)備的所有物理細節(jié)。例如,磁盤驅(qū)動程序必須清楚磁楚設(shè)備的所有物理細節(jié)。例如,磁盤驅(qū)動程序必須清楚磁盤控制器設(shè)置有多少寄存器及其端口,了解磁盤擁有的柱盤控制器設(shè)置有多少寄存器及其端口,了解磁盤擁有的柱面數(shù)(磁道數(shù))、磁頭數(shù)(盤面數(shù))、扇區(qū)數(shù)及扇區(qū)的容面數(shù)(磁道數(shù))、磁頭數(shù)(盤面數(shù))、扇區(qū)數(shù)及扇區(qū)的容量、臂的移動、交叉訪問系數(shù)、電機驅(qū)動器、磁頭穩(wěn)定時量、臂的移動、交叉訪問系數(shù)、電機驅(qū)動器、磁頭穩(wěn)定時間以及所有保證磁
55、盤正常工作的硬件機制。鼠標驅(qū)動程序間以及所有保證磁盤正常工作的硬件機制。鼠標驅(qū)動程序自然需要具備辨認是哪個按鍵被按下的能力。自然需要具備辨認是哪個按鍵被按下的能力。每種設(shè)備配置有一個設(shè)備驅(qū)動程序,但一個設(shè)備驅(qū)動每種設(shè)備配置有一個設(shè)備驅(qū)動程序,但一個設(shè)備驅(qū)動程序并不是一個完整獨立的程序,而是由一組相對獨立的程序并不是一個完整獨立的程序,而是由一組相對獨立的設(shè)備操作函數(shù)(內(nèi)核函數(shù))所構(gòu)成,其中的每個函數(shù)都可設(shè)備操作函數(shù)(內(nèi)核函數(shù))所構(gòu)成,其中的每個函數(shù)都可被進程單獨調(diào)用,實現(xiàn)相關(guān)的物理被進程單獨調(diào)用,實現(xiàn)相關(guān)的物理I/O。在在UNIX中,設(shè)備驅(qū)動程序與整個中,設(shè)備驅(qū)動程序與整個OS內(nèi)核編在一個二內(nèi)
56、核編在一個二進制文件里。如果要增加新的設(shè)備驅(qū)動程序或者修改現(xiàn)有進制文件里。如果要增加新的設(shè)備驅(qū)動程序或者修改現(xiàn)有的設(shè)備驅(qū)動程序,則需要重新編譯整個操作系統(tǒng)內(nèi)核。的設(shè)備驅(qū)動程序,則需要重新編譯整個操作系統(tǒng)內(nèi)核。UNIX的這種做法主要是考慮到安全因素。由于用戶無法的這種做法主要是考慮到安全因素。由于用戶無法動態(tài)地裝卸設(shè)備驅(qū)動程序,操作系統(tǒng)的安全性較高。不動態(tài)地裝卸設(shè)備驅(qū)動程序,操作系統(tǒng)的安全性較高。不過,這種不能動態(tài)裝卸的限制讓人感覺十分不便,因此在過,這種不能動態(tài)裝卸的限制讓人感覺十分不便,因此在最新的最新的UNIX以及以及Linux版本里,建立了較復(fù)雜的可安裝版本里,建立了較復(fù)雜的可安裝內(nèi)核模
57、塊機制,它可支持設(shè)備驅(qū)動程序的動態(tài)裝卸。內(nèi)核模塊機制,它可支持設(shè)備驅(qū)動程序的動態(tài)裝卸。Windows操作系統(tǒng)從一開始(操作系統(tǒng)從一開始(NT開始)就支持設(shè)備開始)就支持設(shè)備驅(qū)動程序的動態(tài)裝卸,這也是驅(qū)動程序的動態(tài)裝卸,這也是Windows不如不如UNIX安全安全的一個原因。的一個原因。 4.2 設(shè)備驅(qū)動程序的算法框架設(shè)備驅(qū)動程序的算法框架(1) 在收到一個在收到一個I/O請求后,設(shè)備驅(qū)動程序做的第一請求后,設(shè)備驅(qū)動程序做的第一件事是檢查輸入?yún)?shù)是否合法。如果不合法,則錯誤返回;件事是檢查輸入?yún)?shù)是否合法。如果不合法,則錯誤返回;否則,將否則,將I/O請求的抽象表示轉(zhuǎn)換為設(shè)備控制器能夠認識請求的
58、抽象表示轉(zhuǎn)換為設(shè)備控制器能夠認識的具體表示,例如,將線性的盤塊號映射為磁道、磁頭、的具體表示,例如,將線性的盤塊號映射為磁道、磁頭、扇區(qū)等。扇區(qū)等。(2) 然后,設(shè)備驅(qū)動程序需要檢查設(shè)備狀態(tài)以確認設(shè)然后,設(shè)備驅(qū)動程序需要檢查設(shè)備狀態(tài)以確認設(shè)備是否處于閑置狀態(tài)。如果設(shè)備正忙著,則將備是否處于閑置狀態(tài)。如果設(shè)備正忙著,則將I/O請求送請求送入該設(shè)備的等待隊列以待處理,并阻塞調(diào)用者;否則,若入該設(shè)備的等待隊列以待處理,并阻塞調(diào)用者;否則,若設(shè)備空閑,就驅(qū)動設(shè)備運行并啟動電機。設(shè)備空閑,就驅(qū)動設(shè)備運行并啟動電機。(3) 接著開始驅(qū)動真正的接著開始驅(qū)動真正的I/O操作。設(shè)備驅(qū)動程序通操作。設(shè)備驅(qū)動程序通
59、過向設(shè)備寄存器里送入一系列的過向設(shè)備寄存器里送入一系列的I/O控制命令來進行物理控制命令來進行物理的數(shù)據(jù)傳輸工作。如果需要,設(shè)備驅(qū)動程序通過自行阻塞的數(shù)據(jù)傳輸工作。如果需要,設(shè)備驅(qū)動程序通過自行阻塞來等待來等待I/O中斷。中斷。(4) 在被中斷處理程序喚醒后,讀取設(shè)備狀態(tài)寄存器在被中斷處理程序喚醒后,讀取設(shè)備狀態(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),對可修復(fù)性錯誤進行必要的出錯處理,否則錯誤返回??尚迯?fù)性錯誤進行必要的出錯處理,否則錯誤返回。(5) 如果該設(shè)備的等待隊列非空,則喚醒等待的進程。如果該設(shè)備的等待隊列非空,則喚醒等待的進程。(6) 正常返回此正常返回此I/O請求的調(diào)用者。請求的調(diào)用者。5 統(tǒng)一界面統(tǒng)一界面I/O緩沖緩沖設(shè)備的安全保護設(shè)備的安全保護設(shè)備的分配與調(diào)度設(shè)備的分配與調(diào)度錯誤處理錯誤處理假脫機假脫機一般來說,設(shè)備驅(qū)動程序并不直接從用戶程序處接收一般來說,設(shè)備驅(qū)動程序并不直接從用戶程序處接收I/O請求,而是通過另外
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年城市建筑業(yè)勞務(wù)合同
- 完善工程設(shè)計企業(yè)的財務(wù)管理機制
- 2025年中國水晶餐具行業(yè)市場前景預(yù)測及投資價值評估分析報告
- β-Carotene-13C10-Provitamin-A-sub-13-sub-C-sub-10-sub-生命科學(xué)試劑-MCE
- L-006235-Standard-L-235-Standard-生命科學(xué)試劑-MCE
- 2025屆高考物理大一輪復(fù)習(xí)課件 第六章 第26課時 功、功率
- 2025屆高考物理大一輪復(fù)習(xí)課件 第十五章 第78課時 實驗十九:用油膜法估測油酸分子的大小 實驗二十:探究等溫情況下一定質(zhì)量氣體壓強與體積的關(guān)系
- 2025年國際信息學(xué)奧林匹克競賽初中三年級上學(xué)期期末試題解析
- 2025合作合同范本產(chǎn)品銷售與代理合作協(xié)議模板
- 2025房屋租賃代理合同書樣本
- 2025年小學(xué)語文畢業(yè)升學(xué)全真模擬試卷(古詩詞背誦默寫)歷年真題回顧
- 2025年江蘇省蘇州市太倉市英語八年級第二學(xué)期期末復(fù)習(xí)檢測試題含答案
- 2025南京市房屋買賣合同
- 東莞濱海灣新區(qū)管理委員會下屬事業(yè)單位招聘筆試真題2024
- 2025年云南省中考數(shù)學(xué)-26題二次函數(shù)降次冪題35道
- 2025屆中考地理全真模擬卷 【江蘇專用】(含解析)
- 2025年自動駕駛汽車商業(yè)化應(yīng)用場景規(guī)劃與風(fēng)險評估報告
- 安徽宣城郎溪開創(chuàng)控股集團有限公司下屬子公司招聘筆試題庫2025
- 2025年河北省中考乾坤押題卷數(shù)學(xué)試卷A及答案
- 體育俱樂部托管協(xié)議書
- 2025屆江蘇省高三高考科研卷語文試題及參考答案
評論
0/150
提交評論