




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章設(shè)備管理6.1設(shè)備及設(shè)備管理的功能6.2I/O控制方式6.3緩沖技術(shù)
6.4中斷技術(shù)
6.5設(shè)備分配6.6I/O軟件6.7設(shè)備驅(qū)動(dòng)程序6.8磁盤(pán)存儲(chǔ)管理6.9Linux設(shè)備管理
習(xí)題六
6.1設(shè)備與設(shè)備管理的功能
在計(jì)算機(jī)系統(tǒng)中,除了CPU和內(nèi)存之外,其他的大部分硬設(shè)備稱為外部設(shè)備。它包括常用的輸入/輸出設(shè)備、外存設(shè)備以及終端設(shè)備等。這些設(shè)備種類繁多,特性各異,操作方式的區(qū)別也很大,從而使得操作系統(tǒng)的設(shè)備管理變得十分復(fù)雜。本節(jié)首先根據(jù)設(shè)備的用途將各種設(shè)備進(jìn)行簡(jiǎn)單的分類,然后再介紹設(shè)備管理子系統(tǒng)的設(shè)計(jì)目標(biāo)及功能。6.1.1設(shè)備的分類
可以從不同的角度對(duì)設(shè)備進(jìn)行分類。
(1)按系統(tǒng)和用戶,設(shè)備分為系統(tǒng)設(shè)備、用戶設(shè)備。
(2)按輸入/輸出傳送方式,設(shè)備分為字符型設(shè)備、塊設(shè)備。
(3)按資源特點(diǎn),設(shè)備分為獨(dú)享設(shè)備、共享設(shè)備、虛擬設(shè)備。
(4)按設(shè)備硬件物理特性,設(shè)備分為順序存取設(shè)備、直接存取設(shè)備。
(5)按設(shè)備使用,設(shè)備分為物理設(shè)備、邏輯設(shè)備、偽設(shè)備。在此,根據(jù)設(shè)備的用途可以將其分成存儲(chǔ)設(shè)備與輸入/輸出設(shè)備兩大類。
1.存儲(chǔ)設(shè)備
存儲(chǔ)設(shè)備即計(jì)算機(jī)的外存或輔助存儲(chǔ)器,它的主要用途是存儲(chǔ)大量的信息,盡管它們的存儲(chǔ)速度比內(nèi)存低,但比內(nèi)存的容量大得多。例如:磁鼓、磁帶、磁盤(pán)、光盤(pán)等。這類設(shè)備中的數(shù)據(jù)是以物理塊為單位組織與管理的(即存取信息的單位為字符塊),故這類設(shè)備被稱為塊設(shè)備。
2.輸入/輸出設(shè)備
這類設(shè)備是主機(jī)從外界接收信息或向外界發(fā)送信息的媒介。輸入設(shè)備是計(jì)算機(jī)用來(lái)從外界接收信息的設(shè)備,例如:卡片機(jī)、鍵盤(pán)、鼠標(biāo)等。輸出設(shè)備是計(jì)算機(jī)將處理后的信息發(fā)向外界的設(shè)備,例如:顯示器、打印機(jī)、繪圖儀等。這種設(shè)備以每次一個(gè)字符的方式傳送數(shù)據(jù),故稱為字符設(shè)備。6.1.2設(shè)備管理的設(shè)計(jì)目標(biāo)
由于設(shè)備的種類繁多,而且其物理特性和使用方式各不相同,因此設(shè)備管理程序在整個(gè)操作系統(tǒng)中所占比重很大,其設(shè)計(jì)性能的優(yōu)劣直接影響到系統(tǒng)的整體性能。設(shè)備管理要達(dá)到以下主要目標(biāo)。
1.向用戶提供方便的統(tǒng)一接口
使用戶擺脫具體設(shè)備的物理特性,按照統(tǒng)一的規(guī)則使用設(shè)備。另外,程序的運(yùn)行不應(yīng)依賴于特定設(shè)備的完好或空閑與否,要由系統(tǒng)合理地進(jìn)行分配,不論實(shí)際使用哪一臺(tái)同類設(shè)備,程序都應(yīng)正確執(zhí)行。還要保證用戶程序可在不同設(shè)備類型的計(jì)算機(jī)系統(tǒng)中運(yùn)行,不因設(shè)備型號(hào)的變化而影響程序的工作。在已經(jīng)實(shí)現(xiàn)設(shè)備獨(dú)立性的系統(tǒng)中,用戶編寫(xiě)程序時(shí)一般不再使用物理設(shè)備,而使用虛擬設(shè)備,由操作系統(tǒng)實(shí)現(xiàn)虛、實(shí)對(duì)應(yīng)。如在Linux系統(tǒng)中,外部設(shè)備作為特別文件,與其他普通文件一樣由文件系統(tǒng)統(tǒng)一管理,從而在用戶面前對(duì)各種外設(shè)的使用就如同對(duì)普通文件那樣,用戶具體使用的物理設(shè)備由系統(tǒng)統(tǒng)一管理。
2.提高各種設(shè)備的使用效率
為了提高外設(shè)的使用效率,除合理地分配各種外部設(shè)備外,還要盡量提高設(shè)備與設(shè)備、CPU與外設(shè)、進(jìn)程與進(jìn)程之間的并行操作度,以使操作系統(tǒng)獲取最佳效率。
3.各種外設(shè)盡可能采用統(tǒng)一的管理方法
各種外設(shè)采用統(tǒng)一的管理方法,可使設(shè)備管理系統(tǒng)簡(jiǎn)練、可靠且易于維護(hù)。6.1.3設(shè)備管理的功能
1.記錄設(shè)備的管理信息
一個(gè)計(jì)算機(jī)系統(tǒng)中存在著許多設(shè)備以及控制器、通道,在系統(tǒng)運(yùn)行期間,它們完成各自的工作,并處于各種不同的狀態(tài)。假如系統(tǒng)配有多臺(tái)打印機(jī),必須清楚地知道哪些打印機(jī)正在使用,哪些打印機(jī)空閑。當(dāng)有打印請(qǐng)求時(shí),就能合理地將空閑的打印機(jī)分配出去。所以,設(shè)備管理的功能之一就是記住所有設(shè)備、控制器和通道的狀態(tài),以便有效地管理、調(diào)度和使用它們。通常是通過(guò)數(shù)據(jù)結(jié)構(gòu)設(shè)備控制塊(DCB)來(lái)記載有關(guān)設(shè)備管理的信息。
2.進(jìn)行設(shè)備分配
在多道程序系統(tǒng)中,一般的情況下,請(qǐng)求使用某種設(shè)備的進(jìn)程數(shù)大于設(shè)備數(shù)。這時(shí)就要根據(jù)一定的策略或算法合理地把設(shè)備分配給請(qǐng)求進(jìn)程。待進(jìn)程使用完設(shè)備后,實(shí)施設(shè)備的回收,以便分配給其他進(jìn)程使用。若進(jìn)程未能得到所需設(shè)備,就進(jìn)入相應(yīng)設(shè)備的等待隊(duì)列排隊(duì)。完成這部分功能的程序稱為設(shè)備分配程序。
3.完成I/O操作
通常完成這一部分功能的程序叫做設(shè)備驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)程序的任務(wù)是控制設(shè)備的硬件完成指定I/O操作以及I/O操作結(jié)束后的中斷處理。在設(shè)置有通道的系統(tǒng)中,應(yīng)根據(jù)用戶提出的I/O要求,構(gòu)成相應(yīng)的通道程序。通道程序由通道指令構(gòu)成,它們實(shí)現(xiàn)簡(jiǎn)單的I/O控制和操作,通道程序由通道執(zhí)行??傊到y(tǒng)按照用戶的要求調(diào)用具體的設(shè)備驅(qū)動(dòng)程序,啟動(dòng)相應(yīng)的設(shè)備,進(jìn)行I/O操作,并處理來(lái)自設(shè)備的中斷。操作系統(tǒng)中每類設(shè)備都有自己的設(shè)備驅(qū)動(dòng)程序。
4.輸入/輸出緩存的管理
為了緩解設(shè)備與處理機(jī)在運(yùn)行速度上不匹配的問(wèn)題,提高它們之間的并行工作能力,需要使用緩沖技術(shù),在設(shè)備與處理機(jī)之間建立輸入/輸出緩沖區(qū)。設(shè)備管理負(fù)責(zé)對(duì)緩沖的分配與回收。
6.2I/O控制方式
使用設(shè)備完成輸入/輸出(I/O)的過(guò)程,就是主機(jī)與外部設(shè)備之間數(shù)據(jù)傳送的過(guò)程。設(shè)備管理的主要任務(wù)之一是控制設(shè)備與內(nèi)存或CPU之間的數(shù)據(jù)傳送。本節(jié)介紹幾種常用的數(shù)據(jù)傳送控制方式。6.2.1查詢等待方式
查詢等待方式又稱循環(huán)測(cè)試方式、查詢方式。它是早期計(jì)算機(jī)和現(xiàn)代簡(jiǎn)單計(jì)算機(jī)中采用的方式。在這種方式中,設(shè)備中設(shè)置有一個(gè)狀態(tài)觸發(fā)器(busy),由設(shè)備本身改變其值,用于表示設(shè)備的忙閑狀態(tài)。若設(shè)備正在進(jìn)行數(shù)據(jù)的處理,I/O操作尚未結(jié)束,則把觸發(fā)器置1,表示設(shè)備忙,這時(shí)不能進(jìn)行數(shù)據(jù)傳送的操作。反之,若busy為0,則表示目前該設(shè)備可以進(jìn)行數(shù)據(jù)傳送的操作。在系統(tǒng)中設(shè)置一條查詢指令,程序使用這條指令反復(fù)查詢busy的值來(lái)測(cè)試設(shè)備的忙閑狀態(tài),當(dāng)設(shè)備閑時(shí),則啟動(dòng)它進(jìn)行一次I/O操作。而設(shè)備忙(busy=1)時(shí),則不斷地循環(huán)測(cè)試,直至測(cè)試到busy為0時(shí),才結(jié)束循環(huán)測(cè)試執(zhí)行I/O操作。
在這種方式下,在等待設(shè)備成為允許進(jìn)行數(shù)據(jù)傳送狀態(tài)的過(guò)程中,CPU仍要執(zhí)行指令,這種等待方式通常稱為忙式等待。由于CPU在輸入/輸出的循環(huán)測(cè)試上要花費(fèi)大量時(shí)間,因此查詢等待方式下處理機(jī)的利用率很低。6.2.2中斷方式
隨著中斷技術(shù)的出現(xiàn),在對(duì)設(shè)備進(jìn)行I/O控制時(shí)采用了中斷方式。在中斷方式中,CPU在啟動(dòng)設(shè)備進(jìn)行I/O操作后,并不需要檢測(cè)設(shè)備的工作狀態(tài)。在設(shè)備進(jìn)行I/O操作的過(guò)程中,
CPU繼續(xù)運(yùn)行有關(guān)程序。當(dāng)設(shè)備完成一次I/O操作后,向CPU發(fā)出中斷請(qǐng)求,CPU接受設(shè)備的中斷請(qǐng)求后,停止當(dāng)前正在運(yùn)行的程序,轉(zhuǎn)而執(zhí)行對(duì)該設(shè)備進(jìn)行控制的中斷處理程序,然后再次進(jìn)行I/O操作。圖6.1給出了中斷方式I/O控制的示意圖。圖6.1中斷方式I/O控制從圖中可以看到,采用中斷方式使CPU和設(shè)備可以并行工作。由于許多設(shè)備的動(dòng)作中有機(jī)械動(dòng)作,例如,打印機(jī)中打印頭和打印紙的移動(dòng),磁盤(pán)中磁頭的移動(dòng)和磁片的旋轉(zhuǎn)等,這些機(jī)械動(dòng)作的速度是相當(dāng)慢的,一般處在ms數(shù)量級(jí)。與此相對(duì),CPU執(zhí)行指令的速度相當(dāng)高,在ms或ns數(shù)量級(jí)。也就是說(shuō),在設(shè)備完成一次I/O操作動(dòng)作的時(shí)間內(nèi),CPU可以執(zhí)行上千條指令。因此,采用中斷方式控制設(shè)備,可以有效地提高CPU的利用率。多道程序系統(tǒng)中采用中斷方式后,CPU和設(shè)備的并行工作方式為進(jìn)程的并發(fā)運(yùn)行提供了條件。在I/O設(shè)備中斷方式下,中央處理器與I/O設(shè)備之間數(shù)據(jù)的傳輸步驟如下:
(1)每個(gè)進(jìn)程需要傳送數(shù)據(jù)時(shí),發(fā)出指令啟動(dòng)輸入/輸出設(shè)備準(zhǔn)備數(shù)據(jù)。
(2)發(fā)出指令啟動(dòng)設(shè)備之后,該進(jìn)程放棄處理器,等待相關(guān)I/O操作完成。此時(shí),進(jìn)程調(diào)度程序會(huì)調(diào)度其他就緒進(jìn)程使用處理器。
(3)當(dāng)I/O操作完成時(shí),輸入/輸出設(shè)備控制器通過(guò)中斷請(qǐng)求向處理器發(fā)出中斷信號(hào),處理器收到中斷信號(hào)之后,轉(zhuǎn)向預(yù)先設(shè)計(jì)好的中斷處理程序,對(duì)數(shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理,然后設(shè)備再進(jìn)行下一次I/O操作。
(4)系統(tǒng)將喚醒阻塞的進(jìn)程轉(zhuǎn)入就緒狀態(tài)。在隨后的某個(gè)時(shí)刻,進(jìn)程調(diào)度程序會(huì)選中該進(jìn)程繼續(xù)工作。中斷方式的優(yōu)點(diǎn)是,I/O設(shè)備中斷方式使處理器的利用率提高,且能支持多道程序和I/O設(shè)備的并行操作。不過(guò),中斷方式仍然存在一些問(wèn)題。首先,現(xiàn)代計(jì)算機(jī)系統(tǒng)通常配置有各種各樣的輸入/輸出設(shè)備。如果這些I/O設(shè)備都通過(guò)中斷處理方式進(jìn)行并行操作,那么中斷次數(shù)的急劇增加會(huì)造成CPU無(wú)法響應(yīng)中斷和出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。其次,如果I/O控制器的數(shù)據(jù)緩沖區(qū)比較小,在緩沖區(qū)裝滿數(shù)據(jù)之后將會(huì)發(fā)生中斷。那么,在數(shù)據(jù)傳送過(guò)程中,發(fā)生中斷的機(jī)會(huì)較多,這將耗去大量的CPU處理時(shí)間。6.2.3DMA方式
中斷方式較之查詢方式來(lái)說(shuō),可以提高CPU的利用率和保證對(duì)外設(shè)響應(yīng)的實(shí)時(shí)性,但不論是使用程序查詢方式還是中斷方式,若要將數(shù)據(jù)從外設(shè)傳輸?shù)絻?nèi)存,都是先把數(shù)據(jù)從外設(shè)讀到CPU,再?gòu)腃PU把數(shù)據(jù)送到內(nèi)存,反之亦然。而對(duì)于高速外設(shè)(如磁盤(pán)、高速A/D等),中斷方式不能滿足數(shù)據(jù)傳輸速度的要求。因?yàn)?,在中斷方式下,每次中斷均需保存斷點(diǎn)(返回地址)和現(xiàn)場(chǎng)(各寄存器的值,包括標(biāo)志寄存器),中斷返回時(shí),要恢復(fù)斷點(diǎn)和現(xiàn)場(chǎng)。同時(shí),進(jìn)入中斷和從中斷返回均使CPU指令隊(duì)列被清除。所有這些原因,使得中斷方式難以滿足高速外設(shè)對(duì)傳輸速度的要求。對(duì)于高速外設(shè)的數(shù)據(jù)傳輸,一種有效的方式是使用DMA(DirectMemoryAccess)方式,在這種方式下,外設(shè)(一般指磁盤(pán)存儲(chǔ)器)與內(nèi)存之間直接進(jìn)行數(shù)據(jù)成塊交換,不通過(guò)CPU,并且CPU不參與數(shù)據(jù)交換控制,因此可以達(dá)到較高的速度,如Intel8237A(3?MHz),傳輸速度可達(dá)1.5?MB/s。DMA方式下高速外設(shè)和內(nèi)存之間進(jìn)行數(shù)據(jù)傳輸需要使用總線,所以DMA方式下要解決的問(wèn)題主要是總線使用權(quán)的轉(zhuǎn)移。一般情況下,總線使用權(quán)由CPU掌握,在DMA期間總線使用權(quán)交給DMA控制器。
DMA方式由硬件實(shí)現(xiàn),計(jì)算機(jī)硬件中設(shè)有DMA控制器,在DMA中有狀態(tài)寄存器和計(jì)數(shù)器,狀態(tài)寄存器記錄著當(dāng)前DMA的狀態(tài),計(jì)數(shù)器記載著當(dāng)前傳送數(shù)據(jù)的個(gè)數(shù),它一般是一個(gè)減一計(jì)數(shù)器。此外,還有地址寄存器記載與設(shè)備進(jìn)行數(shù)據(jù)傳送的內(nèi)存地址。在設(shè)備與內(nèi)存之間傳送數(shù)據(jù)時(shí),首先把要傳送的數(shù)據(jù)個(gè)數(shù)和接收或發(fā)送數(shù)據(jù)的內(nèi)存地址分別置入DMA計(jì)數(shù)器和地址寄存器中。DMA控制器負(fù)責(zé)DMA請(qǐng)求、DMA處理等工作的控制??偩€使用權(quán)的轉(zhuǎn)移由總線控制器負(fù)責(zé)。
DMA的工作過(guò)程如下:
(1)當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)器。
(2)提出數(shù)據(jù)傳輸要求的進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程占據(jù)CPU。
(3)輸入設(shè)備不斷地竊取CPU工作周期,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫(xiě)入內(nèi)存,直到所要求的字節(jié)全部傳送完畢。
(4)DMA控制器在傳送完所有字節(jié)時(shí),通過(guò)中斷請(qǐng)求線發(fā)出中斷信號(hào)。CPU在接收到中斷信號(hào)后,轉(zhuǎn)入中斷處理程序進(jìn)行后續(xù)處理。
(5)中斷處理結(jié)束后,CPU返回到被中斷的進(jìn)程中,或切換到另一進(jìn)程繼續(xù)執(zhí)行。
與中斷方式每完成一次I/O操作就發(fā)生一次中斷相比,DMA方式大大地減少了中斷的次數(shù),減輕了CPU的負(fù)擔(dān),提高了CPU的利用率。由于I/O設(shè)備直接同內(nèi)存發(fā)生成塊的數(shù)據(jù)交換,因此I/O效率比較高。所以在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,DMA方式得到了廣泛的應(yīng)用。許多輸入/輸出設(shè)備的控制器,特別是塊設(shè)備的控制器,都支持DMA方式。與中斷方式相比,DMA方式具有以下優(yōu)點(diǎn):
(1)中斷方式時(shí)是在數(shù)據(jù)緩沖寄存器滿之后發(fā)中斷要求CPU進(jìn)行中斷處理,而DMA方式則是在所要求轉(zhuǎn)送的數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求CPU進(jìn)行中斷處理。
(2)中斷方式的數(shù)據(jù)傳送是在中斷處理時(shí)由CPU控制完成的,而DMA方式則是在DMA控制器的控制下不經(jīng)過(guò)CPU控制完成的,這就排除了CPU因并行設(shè)備過(guò)多而來(lái)不及處理以及因速度不匹配而造成數(shù)據(jù)丟失等現(xiàn)象。但是,DMA方式仍然存在著以下局限性:
(1)?DMA方式對(duì)外圍設(shè)備的管理和某些操作仍由CPU控制。
(2)隨著系統(tǒng)所配外設(shè)種類和數(shù)量的增加,多個(gè)DMA控制器的同時(shí)使用顯然會(huì)引起內(nèi)存地址的沖突并使控制過(guò)程進(jìn)一步復(fù)雜。
(3)?DMA方式只能在CPU指令周期中不使用總線的間隙內(nèi)工作,這必定影響數(shù)據(jù)傳送的整體速度。由此可知,DMA控制器功能的強(qiáng)弱,是決定DMA效率的關(guān)鍵因素。DMA控制器需要為每次數(shù)據(jù)傳送做大量的工作,數(shù)據(jù)傳送單位的增大意味著傳送次數(shù)的減少。另外,DMA方式竊取了CPU工作周期,CPU處理效率降低了,要想盡量少地竊取CPU工作周期,就要設(shè)法提高DMA控制器的性能,這樣可以較少地影響CPU處理效率。
所以,DMA方式只能完成簡(jiǎn)單的數(shù)據(jù)傳送,對(duì)于設(shè)備狀態(tài)的控制和管理等更復(fù)雜的I/O操作則無(wú)能為力。6.2.4通道方式
采用DMA輸入/輸出控制方式已經(jīng)顯著地減少了CPU的干預(yù),提高了CPU與I/O設(shè)備的并行程度。但是在DMA輸入/輸出控制方式中,一旦開(kāi)始交換信息,CPU要一直“讓”出主存,只能進(jìn)行不需要訪問(wèn)主存的局部工作。因此,DMA輸入/輸出控制方式只解決了高速外存與主存?zhèn)魉蛿?shù)據(jù)的問(wèn)題,并沒(méi)有真正解決CPU與I/O設(shè)備并行操作的問(wèn)題,CPU的效率并不高。除此之外,對(duì)I/O設(shè)備數(shù)量較多的計(jì)算機(jī)系統(tǒng),如果為這些I/O設(shè)備都配置DMA控制器,那么該計(jì)算機(jī)系統(tǒng)的硬件成本將大幅度增加。為了獲得CPU與I/O設(shè)備之間更高的并行能力,也為了讓種類繁多、物理特性各異的I/O設(shè)備能以標(biāo)準(zhǔn)接口的形式連接到系統(tǒng)中,計(jì)算機(jī)系統(tǒng)引入了能獨(dú)立控制I/O設(shè)備操作、自成體系的通道結(jié)構(gòu)。引入通道后才真正實(shí)現(xiàn)了CPU與I/O設(shè)備間的并行工作。在設(shè)置了通道的計(jì)算機(jī)系統(tǒng)中,在需要使用I/O設(shè)備交換一批數(shù)據(jù)時(shí),CPU只干預(yù)通道兩次,第一次是啟動(dòng)通道、設(shè)備和控制器,第二次是結(jié)束時(shí)的中斷處理。
1.通道的概念
通道指專門用來(lái)處理輸入/輸出工作的處理器(簡(jiǎn)稱I/O處理器),它可以是簡(jiǎn)單的處理機(jī),也可以是一臺(tái)復(fù)雜的微型處理機(jī)。它有自己的指令系統(tǒng),甚至有的通道具有局部存儲(chǔ)器。與CPU相比,通道是一個(gè)比CPU功能弱、速度較慢、價(jià)格較為便宜的處理器。但是“通道”一詞在目前微型計(jì)算機(jī)的有關(guān)著作中,常指與DMA或與I/O處理器相連的單純的數(shù)據(jù)傳送通路,它并沒(méi)有處理器的功能。它主要是接受主機(jī)的委托,獨(dú)立地執(zhí)行通道程序,完成設(shè)備與內(nèi)存間的批量數(shù)據(jù)傳送。典型的I/O四級(jí)結(jié)構(gòu)如圖6.2和圖6.3所示。圖6.2通道方式結(jié)構(gòu)圖6.3多通路的通道結(jié)構(gòu)通道的運(yùn)算控制部件包括:
①通道地址字(CAW):存放下一條通道指令存放的地址,其功能類似于中央處理機(jī)的指令地址寄存器。
②通道命令字(CCW):存放正在執(zhí)行的通道指令,其作用相當(dāng)于中央處理機(jī)的指令寄存器。
③通道狀態(tài)字(CSW):存放通道、控制器、設(shè)備的狀態(tài),包括I/O傳輸完成信息、出錯(cuò)信息、重復(fù)執(zhí)行次數(shù)等,其作用相當(dāng)于中央處理機(jī)的狀態(tài)寄存器。
2.通道的種類
根據(jù)信息交換方式以及所連接的設(shè)備種類的不同,可將通道分為三種類型:字節(jié)多路通道、數(shù)據(jù)選擇通道和數(shù)組多路通道。
(1)字節(jié)多路通道。這是一種簡(jiǎn)單的共享通道,包括若干子通道,每個(gè)子通道可獨(dú)立地執(zhí)行一個(gè)通道程序,每個(gè)子通道至少連接一臺(tái)低速設(shè)備。字節(jié)指該通道以字節(jié)為傳輸單位,多路則是指可以分時(shí)執(zhí)行多個(gè)通道程序。當(dāng)一個(gè)通道程序控制某臺(tái)設(shè)備傳送一個(gè)字節(jié)之后,并不等待設(shè)備完成I/O操作,通道硬件就轉(zhuǎn)去執(zhí)行另一個(gè)通道程序,控制另一臺(tái)設(shè)備的數(shù)據(jù)傳送。字節(jié)多路通道主要用于連接大量的低速設(shè)備,如鍵盤(pán)、打印機(jī)等。例如,數(shù)據(jù)傳輸率是1000?B/s,即傳送1個(gè)字節(jié)的間隔是1?ms,而通道從設(shè)備接收或發(fā)送一個(gè)字節(jié)只需要幾百納秒,因此通道在傳送兩個(gè)字節(jié)之間有很多空閑時(shí)間,字節(jié)多路通道正是利用這個(gè)空閑時(shí)間為其他設(shè)備服務(wù)。
(2)數(shù)據(jù)選擇通道。這種類型的通道只有一個(gè)分配型子通道。所謂分配型子通道,是指一個(gè)子通道可以連接多臺(tái)I/O設(shè)備,但每次只能控制一臺(tái)設(shè)備工作,一旦選中某臺(tái)設(shè)備,即由該設(shè)備獨(dú)占該通道,通道就進(jìn)入“忙”狀態(tài),直到該設(shè)備的數(shù)據(jù)傳輸工作全部結(jié)束,即通道程序執(zhí)行結(jié)束。然后通道再選擇另一臺(tái)I/O設(shè)備為其提供服務(wù)。選擇通道又稱高速通道,在物理上它可以連接多個(gè)設(shè)備,但是這些設(shè)備不能同時(shí)工作,在某一段時(shí)間內(nèi)通道只能選擇一個(gè)設(shè)備進(jìn)行工作。選擇通道很像一個(gè)單道程序的處理器,在一段時(shí)間內(nèi)只允許執(zhí)行一個(gè)設(shè)備的通道程序,只有當(dāng)這個(gè)設(shè)備的通道程序全部執(zhí)行完畢后,才能執(zhí)行其他設(shè)備的通道程序。選擇通道主要用于連接高速外圍設(shè)備,如磁盤(pán)、磁帶等,信息以成組方式高速傳輸。由于數(shù)據(jù)傳輸率很高,可以達(dá)到1.5?MB/s,通道在傳送兩個(gè)字節(jié)之間已很少空閑,因此在數(shù)據(jù)傳送期間只為一臺(tái)設(shè)備服務(wù)是合理的。但是這類設(shè)備的輔助操作時(shí)間很長(zhǎng),在很長(zhǎng)的時(shí)間里通道處于等待狀態(tài),因此整個(gè)通道的利用率不是很高。
(3)數(shù)組多路通道。數(shù)組多路通道的基本思想是:當(dāng)某設(shè)備進(jìn)行數(shù)據(jù)傳送時(shí),通道只為該設(shè)備服務(wù)。當(dāng)設(shè)備在執(zhí)行尋址等控制性動(dòng)作時(shí),通道暫時(shí)斷開(kāi)與這個(gè)設(shè)備的連接,掛起該設(shè)備的通道程序,去為其他設(shè)備服務(wù),即執(zhí)行其他設(shè)備的通道程序。所以數(shù)組多路通道很像一個(gè)多道程序的處理器。
這種類型的通道分時(shí)地為多臺(tái)I/O設(shè)備服務(wù),每個(gè)時(shí)間片傳送一個(gè)數(shù)據(jù)塊。數(shù)路通道結(jié)合了數(shù)據(jù)選擇通道傳遞速度高和字節(jié)多路通道能進(jìn)行分時(shí)并行操作的特點(diǎn),形成了另一種通道方式,它具有很高的傳遞速率,又可獲得令人滿意的通道利用率。因此它被廣泛地用來(lái)連接高、中速I/O設(shè)備。字節(jié)多路通道和數(shù)組多路通道的共同之處在于,它們都是多路通道,在一段時(shí)間內(nèi)能交替執(zhí)行多個(gè)設(shè)備的通道程序,使這些設(shè)備同時(shí)工作。
字節(jié)多路通道和數(shù)組多路通道的不同之處如下:
①數(shù)組多路通道允許多個(gè)設(shè)備同時(shí)工作,但只允許一個(gè)設(shè)備進(jìn)行傳輸操作,其他設(shè)備進(jìn)行控制操作。而字節(jié)多路通道不僅允許多個(gè)設(shè)備同時(shí)操作,而且也允許它們同時(shí)進(jìn)行傳輸操作。②數(shù)組多路通道與設(shè)備之間數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊,通道必須為一個(gè)設(shè)備傳送完一個(gè)數(shù)據(jù)塊以后,才能為別的設(shè)備傳送數(shù)據(jù)塊。而字節(jié)多路通道與設(shè)備之間數(shù)據(jù)傳送的基本單位是字節(jié),通道為一個(gè)設(shè)備傳送一個(gè)字節(jié)后,又可以為另一個(gè)設(shè)備傳送一個(gè)字節(jié),因此各設(shè)備與通道之間的數(shù)據(jù)傳送是以字節(jié)為單位交替進(jìn)行。
例如:IBM-370的通道結(jié)構(gòu)如圖6.4所示。圖6.4IBM-370的通道結(jié)構(gòu)
3.通道程序
通道是一個(gè)I/O處理器,它與CPU一樣,包括運(yùn)算、控制邏輯、累加器和寄存器,并有自己的指令系統(tǒng)。指令系統(tǒng)中的每條指令規(guī)定了設(shè)備的一種操作,稱為通道命令(通道指令或通道命令字,CCW)。通道程序是由通道命令按照一定的控制要求組織起來(lái)的,它規(guī)定了I/O設(shè)備所應(yīng)執(zhí)行的操作及順序。
(1)通道命令。每條通道命令規(guī)定了設(shè)備的一種操作,不同的計(jì)算機(jī)系統(tǒng)其通道命令的格式可能不同,但一般都包含以下信息。①操作碼:規(guī)定了指令所執(zhí)行的操作,一般可分為三類,即數(shù)據(jù)傳輸類(如讀、反讀、寫(xiě)、判定狀態(tài)等)、通道轉(zhuǎn)移類、設(shè)備控制類(如磁盤(pán)查詢、磁帶反繞等)。
②內(nèi)存地址:數(shù)據(jù)送入內(nèi)存或從內(nèi)存取出時(shí)的內(nèi)存首址。
③傳送字節(jié)數(shù):本指令所要讀或?qū)懙淖止?jié)數(shù)。
④特征位:用于表示通道程序是否結(jié)束的通道程序結(jié)束位;記錄結(jié)束標(biāo)志位是用于表示通道指令與下一條通道指令所處理的數(shù)據(jù)是同屬一個(gè)記錄,或是處理某記錄的最后一條指令。
(2)通道程序。通道指令的集合構(gòu)成通道程序。通道程序是由中央處理器按數(shù)據(jù)傳送的不同要求自動(dòng)形成的(在大型計(jì)算機(jī)中,通道程序由操作系統(tǒng)中相應(yīng)的設(shè)備管理程序按用戶的輸入/輸出請(qǐng)求自動(dòng)形成)。例如:
write0010020000
write1110025000
它們分別把一個(gè)記錄的200個(gè)字符分別寫(xiě)入從內(nèi)存地址20000開(kāi)始的100個(gè)單元和從內(nèi)存地址25000開(kāi)始的100個(gè)單元中。其中,假設(shè)write操作碼后的1是通道指令結(jié)束標(biāo)志,而另一個(gè)1則是記錄結(jié)束標(biāo)志,該指令省略了設(shè)備號(hào)和設(shè)備特征。編制好的通道程序存放在主存儲(chǔ)器中,并將該程序在主存中的起始地址通知I/O處理器。在大型計(jì)算機(jī)中,常將此起始地址存放在主存固定單元中,這個(gè)用來(lái)存放通道程序首地址的主存同定單元稱為通道地址字(CAW)。而在微型計(jì)算機(jī)中,常將此起始地址存放在主存中的CPU與I/O處理器的通信區(qū)中。與CPU在執(zhí)行指令中將執(zhí)行情況匯集在程序狀態(tài)字PSW一樣,通道程序在執(zhí)行過(guò)程中也把信息匯集在主存的另一個(gè)固定單元中,該單元稱為通道狀態(tài)字(CSW)。通道狀態(tài)字中包括,下一條通道命令的主存地址、通道,以及與之相連的控制器和設(shè)備的狀態(tài)、數(shù)據(jù)傳輸?shù)那闆r。
4.通道的I/O啟動(dòng)與結(jié)束
采用通道方式后,輸入/輸出的執(zhí)行過(guò)程如下:
(1)?CPU在執(zhí)行用戶程序時(shí)遇到I/O請(qǐng)求,根據(jù)用戶的I/O請(qǐng)求生成通道程序(也可以是事先編好的)并放到內(nèi)存中,然后把該通道程序首地址放入CAW中。
(2)?CPU執(zhí)行“啟動(dòng)I/O”指令啟動(dòng)通道工作,通道接收“啟動(dòng)I/O”指令信號(hào),從CAW中取出通道程序首地址,并根據(jù)此地址取出通道程序的第一條指令,放入CCW中;同時(shí)向CPU發(fā)回答信號(hào),通知“啟動(dòng)I/O”指令完成,CPU可繼續(xù)執(zhí)行。通道開(kāi)始執(zhí)行通道程序,控制設(shè)備實(shí)現(xiàn)輸入/輸出操作。
(3)通道完成輸入/輸出操作后,向CPU發(fā)中斷請(qǐng)求信號(hào),請(qǐng)求做I/O操作完成后的善后處理。
其過(guò)程如圖6.5所示。圖6.5I/O操作過(guò)程通道方式與DMA方式相比有以下不同:
(1)在DMA方式中,數(shù)據(jù)的傳送方向、存放數(shù)據(jù)的內(nèi)存始址以及傳送的數(shù)據(jù)塊長(zhǎng)度等都由CPU控制,而在通道方式中,這些都由通道來(lái)進(jìn)行控制。
(2)?DMA方式每臺(tái)設(shè)備至少需要一個(gè)DMA控制器,而一個(gè)通道控制器就可以控制多臺(tái)設(shè)備,顯然,通道方式進(jìn)一步減輕了CPU的工作負(fù)擔(dān),并增加了計(jì)算機(jī)系統(tǒng)的并行工作程度。在通道中,I/O采用專用的輔助處理器處理I/O操作,從而減輕了CPU處理I/O的負(fù)擔(dān)。CPU只要發(fā)出一個(gè)I/O操作命令,剩下的工作完全由通道負(fù)責(zé)。I/O操作結(jié)束后,I/O通道會(huì)發(fā)出一個(gè)中斷請(qǐng)求,表示相應(yīng)操作已完成。
6.3緩沖技術(shù)
6.3.1緩沖技術(shù)的引入
在計(jì)算機(jī)系統(tǒng)中,各種設(shè)備具有不同的物理特性,它們處理數(shù)據(jù)的速度和方式差異很大,此外,CPU與設(shè)備在處理數(shù)據(jù)的速度等方面也完全不同。這將使得CPU不得不停下來(lái)等待慢速設(shè)備的工作。這樣,系統(tǒng)中各個(gè)部件的并行工作的程度仍不能得到充分發(fā)揮,影響了系統(tǒng)的整體效率。為了解決這些問(wèn)題,計(jì)算機(jī)系統(tǒng)引進(jìn)了緩沖技術(shù)。其目的主要是以下兩個(gè)方面。
(1)緩解CPU與I/O設(shè)備間速度不匹配的問(wèn)題。雖然中斷、DMA和通道控制技術(shù)使得系統(tǒng)中設(shè)備和設(shè)備、設(shè)備和CPU等得以并行工作。但是,外圍設(shè)備和CPU的處理速度不匹配的問(wèn)題是客觀存在的。這限制了和處理機(jī)連接的外設(shè)臺(tái)數(shù),且在中斷方式時(shí)造成數(shù)據(jù)丟失。同時(shí),外圍設(shè)備和CPU處理速度不匹配的問(wèn)題也極大地制約了計(jì)算機(jī)系統(tǒng)性能的進(jìn)一步提高和系統(tǒng)應(yīng)用范圍的擴(kuò)大。例如,當(dāng)計(jì)算進(jìn)程并發(fā)性地把大批量數(shù)據(jù)輸出到打印機(jī)上打印時(shí),由于CPU輸出數(shù)據(jù)的速度大大高于打印機(jī)的打印速度,因此,CPU只好停下來(lái)等待。反之,在計(jì)算進(jìn)程進(jìn)行計(jì)算時(shí),打印機(jī)又因無(wú)數(shù)據(jù)輸出而處于空閑狀態(tài)。
外圍設(shè)備與處理機(jī)速度不匹配的問(wèn)題可以采用設(shè)置緩沖區(qū)(器)的方法解決。在設(shè)置了緩沖區(qū)之后,計(jì)算進(jìn)程可把數(shù)據(jù)首先輸出到緩沖區(qū),然后繼續(xù)執(zhí)行;而打印機(jī)則可以從緩沖區(qū)取出數(shù)據(jù)慢慢打印。實(shí)際上,緩存起著中轉(zhuǎn)站的作用。
(2)減少I/O對(duì)CPU的中斷次數(shù)和放寬CPU對(duì)中斷的響應(yīng)時(shí)間。從減少中斷的次數(shù)看,也存在著引入緩沖區(qū)的必要性。在中斷方式時(shí),如果在I/O控制器中增加一個(gè)100個(gè)字符緩沖器,則由前面對(duì)中斷方式的描述可知,I/O控制器對(duì)處理機(jī)的中斷次數(shù)將降低100倍,即等到能存放100個(gè)字符的字符緩沖區(qū)裝滿之后才向處理機(jī)發(fā)一次中斷,這將大大減少處理機(jī)的中斷處理時(shí)間。6.3.2緩沖的種類
根據(jù)不同操作系統(tǒng)使用目的不同,可以采用不同種類的緩沖器,通常有以下幾種緩沖器。
(1)硬件緩沖器。由硬件實(shí)現(xiàn)的緩沖器稱為硬件緩沖器。例如,硬盤(pán)控制器、終端、打印機(jī)都帶有硬件緩沖器。硬件緩沖器的數(shù)據(jù)傳輸速度快,但價(jià)格昂貴,一般容量不會(huì)很大。
(2)軟件緩沖器。軟件緩沖器是在內(nèi)存劃出一部分區(qū)域充當(dāng)緩沖器,也稱為軟件緩沖器。軟件緩沖器的速度沒(méi)有硬件緩沖器的速度快,但價(jià)格相對(duì)便宜。計(jì)算機(jī)系統(tǒng)往往只是在關(guān)鍵的地方采用硬件緩沖器,而通常使用的是軟件緩沖器。
根據(jù)系統(tǒng)設(shè)置緩沖器的多少,通常分為單緩沖、雙緩沖和多緩沖。
(1)單緩沖。單緩沖是在設(shè)備和處理機(jī)之間設(shè)置一個(gè)緩沖器,設(shè)備和處理機(jī)交換數(shù)椐時(shí),先把被交換數(shù)據(jù)寫(xiě)入緩沖器,然后需要數(shù)據(jù)的設(shè)備或處理機(jī)從緩沖器取走數(shù)據(jù)。由于緩沖器屬于臨界資源,即不允許多個(gè)進(jìn)程同時(shí)對(duì)一個(gè)緩沖器操作。因此,盡管單緩沖能匹配設(shè)備和處理機(jī)的處理速度,但是,設(shè)備和設(shè)備之間不能通過(guò)單緩沖達(dá)到并行操作。
(2)雙緩沖。解決兩臺(tái)外設(shè)、打印機(jī)和終端之間的并行操作問(wèn)題的辦法是設(shè)置雙緩沖。有了兩個(gè)緩沖器之后,CPU可把輸出到打印機(jī)的數(shù)據(jù)放入其中一個(gè)緩沖器(區(qū)),讓打印機(jī)慢慢打??;然后,它又可以從另一個(gè)為終端設(shè)置的緩沖器(區(qū))中讀取所需要的輸入數(shù)據(jù)。顯然,雙緩沖只是一種說(shuō)明設(shè)備和設(shè)備、CPU和設(shè)備并行操作的簡(jiǎn)單模型,并不能用于實(shí)際系統(tǒng)中的并行操作。這是因?yàn)橛?jì)算機(jī)系統(tǒng)中的外圍設(shè)備較多。另外,雙緩沖也很難匹配設(shè)備和處理機(jī)的處理速度。因此,現(xiàn)代計(jì)算機(jī)系統(tǒng)中一般使用多緩沖或緩沖池結(jié)構(gòu)。
(3)多緩沖。多緩沖是把多個(gè)緩沖區(qū)連接起來(lái)組成兩部分,一部分專門用于輸入,另一部分專門用于輸出的緩沖結(jié)構(gòu)。緩沖池則是把多個(gè)緩沖區(qū)連接起來(lái)統(tǒng)一管理,既可用于輸入又可用于輸出的緩沖結(jié)構(gòu)。在UNIX系統(tǒng)中,無(wú)論是塊設(shè)備還是字符設(shè)備都使用了多緩沖技術(shù)。尤其是塊設(shè)備,它作為文件系統(tǒng)的基礎(chǔ),使用了完整的多緩沖技術(shù),從而提高了文件系統(tǒng)的效率。
顯然,無(wú)論是多緩沖,還是緩沖池,由于緩沖器是臨界資源,因此在使用緩沖區(qū)時(shí)都有一個(gè)申請(qǐng)、釋放和互斥的問(wèn)題。
6.4中斷技術(shù)
內(nèi)核的一個(gè)主要功能就是管理外設(shè),但又必須處理其他任務(wù),而處理器的速度一般比外設(shè)快很多。如果在為外設(shè)服務(wù),CPU用查詢的方式與外設(shè)交換信息時(shí),CPU就要浪費(fèi)很多時(shí)間去等待外設(shè),顯然效率不高。為了使系統(tǒng)能及時(shí)地處理其他任務(wù),只有當(dāng)外設(shè)真正準(zhǔn)備好了CPU時(shí)才轉(zhuǎn)過(guò)來(lái)處理外設(shè),那么,中斷機(jī)制就是滿足上述條件的一種解決辦法。
中斷控制是計(jì)算機(jī)發(fā)展中用以提高計(jì)算機(jī)工作效率、增強(qiáng)計(jì)算機(jī)功能的一種重要的技術(shù)。最初它是為克服對(duì)I/O接口控制采用程序查詢所帶來(lái)的處理器低效率而產(chǎn)生的。中斷控制的主要優(yōu)點(diǎn)是只有在I/O需要服務(wù)時(shí)才能得到處理器的響應(yīng),而不需要處理器不斷地進(jìn)行查詢。由此,最初的中斷全部是對(duì)外部設(shè)備而言的,即稱為外部中斷(或硬件中斷)。但隨著計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的不斷改進(jìn)以及應(yīng)用技術(shù)的提高,中斷的適用范圍也擴(kuò)大了,出現(xiàn)了所謂的內(nèi)部中斷(或異常),被用于內(nèi)部緊急事件的處理、機(jī)器故障的處理、實(shí)時(shí)控制等多個(gè)方面,并產(chǎn)生了用軟件方法進(jìn)入中斷處理的概念(軟中斷)。如今中斷系統(tǒng)已成為計(jì)算機(jī)系統(tǒng)的一個(gè)極其重要的組成部分。中斷是基于時(shí)間片調(diào)度的多任務(wù)操作系統(tǒng)的重要技術(shù)之一。6.4.1中斷的有關(guān)概念
1.中斷的概念
所謂中斷,是這樣一個(gè)過(guò)程:在CPU正常執(zhí)行程序的過(guò)程中,遇到外部或內(nèi)部的緊急事件需要處理時(shí),暫時(shí)中斷(中止)當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去為事件服務(wù),待服務(wù)完畢,再返回到暫停處(斷點(diǎn))繼續(xù)執(zhí)行原來(lái)的程序。為事件服務(wù)的程序稱為中斷服務(wù)程序或中斷處理程序。嚴(yán)格地說(shuō),上面的描述是針對(duì)硬件事件引起的中斷而言的。用軟件方法也可以引起中斷,即事先在程序中安排特殊的指令,CPU執(zhí)行到該類指令時(shí),轉(zhuǎn)去執(zhí)行相應(yīng)的一段預(yù)先安排好的程序,然后再返回去執(zhí)行原來(lái)的程序,這稱為軟中斷。把軟中斷考慮進(jìn)去,可給中斷再下一個(gè)定義:中斷是指CPU在正常運(yùn)行程序時(shí),由于程序的預(yù)先安排或內(nèi)外部事件,引起CPU中止正在運(yùn)行的程序,而轉(zhuǎn)去執(zhí)行預(yù)先安排好的程序或內(nèi)外部事件處理程序,當(dāng)處理程序執(zhí)行完后,再返回到被中止的程序繼續(xù)運(yùn)行。
中斷的特點(diǎn)如下:
(1)中斷是隨機(jī)的。
(2)中斷是可恢復(fù)的。
(3)中斷是自動(dòng)處理的。
2.中斷源
引起程序中斷的事件或發(fā)出中斷請(qǐng)求的來(lái)源稱為中斷源。中斷源通常有外部設(shè)備、實(shí)時(shí)時(shí)鐘、故障源、數(shù)據(jù)通道中斷以及程序自愿中斷。
3.中斷請(qǐng)求
中斷請(qǐng)求是指中斷源向CPU提出進(jìn)行處理的請(qǐng)求。CPU在每條指令執(zhí)行結(jié)束后去查詢有無(wú)中斷請(qǐng)求信號(hào)。若查詢到有中斷請(qǐng)求,并且在允許響應(yīng)中斷的情況下,系統(tǒng)自動(dòng)進(jìn)入中斷響應(yīng)周期,由硬件完成關(guān)中斷、保存斷點(diǎn)、取中斷服務(wù)程序的入口地址等一系列操作,而后轉(zhuǎn)向中斷服務(wù)程序執(zhí)行中斷處理。
4.中斷響應(yīng)
中斷響應(yīng)是CPU對(duì)中斷源中斷請(qǐng)求的響應(yīng),包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的入口地址。
CPU接收到外設(shè)的中斷請(qǐng)求信號(hào)時(shí),若為非屏蔽中斷請(qǐng)求,則CPU執(zhí)行完現(xiàn)行指令后,就立即響應(yīng)中斷。若為可屏蔽中斷請(qǐng)求,能否響應(yīng)中斷,還取決于CPU的中斷允許觸發(fā)器的狀態(tài)。只有當(dāng)其為“1”(即允許中斷)時(shí),CPU才能響應(yīng)可屏蔽中斷;若其為“0”(即禁止中斷),則即使有可屏蔽中斷請(qǐng)求,CPU也不響應(yīng)。
CPU要響應(yīng)可屏蔽中斷請(qǐng)求,必須滿足以下三個(gè)條件:
(1)無(wú)總線請(qǐng)求。
(2)?CPU允許中斷。
(3)?CPU執(zhí)行完現(xiàn)行指令。
中斷響應(yīng)是實(shí)現(xiàn)向中斷服務(wù)程序的過(guò)渡。例如,IBMPC機(jī)中,在中斷響應(yīng)周期CPU要順序完成以下操作:
(1)發(fā)出中斷響應(yīng)信號(hào)INTA。
(2)關(guān)中斷,即將IF位清0。這是因?yàn)樵陧憫?yīng)一個(gè)中斷的期間不能響應(yīng)另一個(gè)中斷。
(3)保護(hù)斷點(diǎn)和程序狀態(tài)寄存器(PC,PSW)。
(4)查找中斷源,轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序的入口。
5.中斷的分級(jí)與中斷優(yōu)先級(jí)
優(yōu)先權(quán)是指多個(gè)中斷同時(shí)發(fā)生時(shí),對(duì)各個(gè)中斷響應(yīng)的優(yōu)先次序。當(dāng)中斷源很多時(shí),一般把中斷按不同的類別分為若干級(jí),稱為中斷級(jí)。
在一些機(jī)器中,中斷優(yōu)先級(jí)按中斷類型劃分:以機(jī)器故障中斷的優(yōu)先級(jí)最高,程序中斷和訪問(wèn)管理程序中斷次之,外部中斷更次之,輸入/輸出的優(yōu)先級(jí)最低。
6.禁止中斷和中斷屏蔽
在CPU上運(yùn)行的程序,有時(shí)由于種種原因,不希望其在執(zhí)行過(guò)程中被別的事件所中斷,稱為中斷屏蔽。
禁止中斷:當(dāng)有中斷請(qǐng)求時(shí),CPU不能中止現(xiàn)行程序的執(zhí)行,它類似于所有性屏蔽。一般是通過(guò)使CPU內(nèi)部的“中斷允許觸發(fā)器”清“0”來(lái)完成的。可用開(kāi)、關(guān)中斷指令來(lái)實(shí)現(xiàn)。如果中斷禁止位未建立,則可以接受其中斷優(yōu)先級(jí)高于運(yùn)行程序中斷優(yōu)先級(jí)的那些中斷。中斷屏蔽:當(dāng)產(chǎn)生中斷請(qǐng)求后,用程序方式有選擇地封鎖部分中斷,而允許其他部分中斷得到響應(yīng),它類似于選擇性屏蔽。實(shí)現(xiàn)方法是為每個(gè)中斷源設(shè)置一個(gè)中斷屏蔽觸發(fā)器,該觸發(fā)器為“1”,則屏蔽;為“0”,則允許中斷請(qǐng)求。各設(shè)備的中斷屏蔽觸發(fā)器組成中斷屏蔽寄存器。
中斷又分可屏蔽中斷和非屏蔽中斷,后者優(yōu)先權(quán)最高。6.4.2中斷的類型
按中斷處理方式,中斷可分為程序中斷和簡(jiǎn)單中斷。
按中斷產(chǎn)生的方式,中斷可分為自愿中斷和強(qiáng)迫中斷。
按資源的類型,中斷可分為硬件中斷和軟件中斷。
按中斷發(fā)生的位置,中斷可分為內(nèi)部中斷和外部中斷。
目前在很多中型集合小型機(jī)系統(tǒng)中,通常按中斷發(fā)生的位置來(lái)劃分。
(1)外部中斷:來(lái)自于CPU以外,包括:
①I/O中斷,來(lái)自于I/O設(shè)備,是可屏蔽中斷。
②時(shí)鐘中斷、控制臺(tái)中斷。③硬件故障,比如內(nèi)存故障、電源掉電等,是不可屏蔽中斷。
這些中斷都是異步的,可在任何時(shí)候發(fā)生,與CPU正在執(zhí)行的內(nèi)容無(wú)關(guān)。
(2)內(nèi)部中斷:來(lái)自于CPU內(nèi)部,包括:
①程序故障,如使用非法指令、地址越界、浮點(diǎn)溢出、除法錯(cuò)等。
②系統(tǒng)調(diào)用,用戶程序中使用系統(tǒng)調(diào)用指令請(qǐng)求操作系統(tǒng)的服務(wù),是程序中有意安排的,往往也把這種中斷稱為自愿中斷。
這類中斷是在程序執(zhí)行過(guò)程中產(chǎn)生的,是同步的,是執(zhí)行程序中的指令引起的。它們不使用中斷控制器,不能被屏蔽。6.4.3中斷處理
中斷處理就是執(zhí)行中斷服務(wù)程序中規(guī)定的操作,主要包括:
(1)保護(hù)現(xiàn)場(chǎng):為了不破壞被終止程序中使用的寄存器的內(nèi)容,必須將有關(guān)寄存器的內(nèi)容入棧保護(hù),因?yàn)樵谥袛喾?wù)程序中也可能會(huì)使用到這些寄存器。
(2)開(kāi)中斷:為了實(shí)現(xiàn)中斷嵌套,需要安排一條開(kāi)中斷指令,使系統(tǒng)處于開(kāi)中斷狀態(tài)。
(3)中斷服務(wù):CPU通過(guò)執(zhí)行中斷服務(wù)程序,完成對(duì)中斷情況的處理。6.4.4中斷返回
中斷返回是指,中斷服務(wù)完后計(jì)算機(jī)返回原來(lái)打斷的位置(即斷點(diǎn)),繼續(xù)執(zhí)行原來(lái)的程序。中斷返回是由中斷服務(wù)程序中的中斷返回指令來(lái)完成的。
中斷返回時(shí),要進(jìn)行以下操作:
(1)關(guān)中斷:使現(xiàn)場(chǎng)的恢復(fù)工作不被打擾。
(2)恢復(fù)現(xiàn)場(chǎng):在返回到被中止的程序之前要將中斷時(shí)保護(hù)的PC和PSW寄存器內(nèi)容從堆棧中彈出,以便能正確執(zhí)行被終止的程序,恢復(fù)棧中保存的寄存器內(nèi)容。
(3)開(kāi)中斷:使CPU能繼續(xù)接收中斷請(qǐng)求。6.4.5中斷的處理全過(guò)程
中斷處理過(guò)程是硬件和軟件編程相合的過(guò)程。有些通過(guò)硬件實(shí)現(xiàn),有些則需通過(guò)編程實(shí)現(xiàn)。各種微型計(jì)算機(jī)的中斷系統(tǒng)是不相同的,但實(shí)現(xiàn)中斷的過(guò)程都一樣。一個(gè)完整的中斷處理過(guò)程包括以下四步。
(1)中斷請(qǐng)求:由中斷源向CPU提出中斷請(qǐng)求(軟中斷除外)。
(2)中斷響應(yīng):CPU在收到中斷請(qǐng)求并具備響應(yīng)條件的情況下,進(jìn)行中斷響應(yīng),以實(shí)現(xiàn)向中斷服務(wù)程序的過(guò)渡。
(3)中斷服務(wù):CPU在執(zhí)行中斷服務(wù)程序期間,要進(jìn)行具體的中斷服務(wù)。例如,對(duì)于鍵盤(pán)中斷,將鍵盤(pán)接口數(shù)據(jù)寄存器中存放的敲入鍵的掃描碼取出進(jìn)行轉(zhuǎn)換并送鍵盤(pán)緩沖區(qū),若該鍵是控制功能鍵則執(zhí)行對(duì)應(yīng)的控制功能程序。執(zhí)行中斷服務(wù)程序是通過(guò)CPU來(lái)實(shí)現(xiàn)的,顯然要用到CPU的通用寄存器和專用寄存器。為了不影響被打斷的程序在中斷返回后的繼續(xù)執(zhí)行,在剛剛進(jìn)入中斷服務(wù)程序時(shí)應(yīng)進(jìn)行現(xiàn)場(chǎng)保護(hù),即把中斷服務(wù)程序中要用到的通用寄存器、專用寄存器的內(nèi)容保存起來(lái)(壓入堆棧),在中斷服務(wù)結(jié)束、返回的前夕再恢復(fù)現(xiàn)場(chǎng),即把保存的內(nèi)容取出送到相應(yīng)的寄存器中(從堆棧彈出)。因此,中斷服務(wù)又可分為保護(hù)現(xiàn)場(chǎng)、具體的中斷服務(wù)和恢復(fù)現(xiàn)場(chǎng)三步。
(4)中斷返回:中斷服務(wù)程序的最后一條指令應(yīng)是中斷返回指令。當(dāng)執(zhí)行到該指令時(shí),便返回到被終止的程序,從斷點(diǎn)處繼續(xù)執(zhí)行。6.4.6多中斷的處理
對(duì)于中斷處理過(guò)程中又發(fā)生中斷,引起多中斷處理的問(wèn)題,通常有兩種處理方法。
(1)處理一個(gè)中斷時(shí)禁止中斷對(duì)任何新中斷置之不理,在此期間發(fā)生的中斷將保持掛起狀態(tài),當(dāng)再次允許中斷時(shí),新中斷信號(hào)被處理器檢測(cè)到再予以處理,如圖6.6所示。
軟件實(shí)現(xiàn)方法是,在任何中斷處理前使用禁止中斷指令,在處理結(jié)束后開(kāi)放中斷指令。所有中斷嚴(yán)格按照發(fā)生順序處理,不考慮中斷緊急程度,無(wú)法達(dá)到較嚴(yán)格時(shí)間要求。
(2)中斷按照優(yōu)先權(quán)分級(jí)允許優(yōu)先級(jí)高的中斷打斷優(yōu)先級(jí)低的中斷處理過(guò)程,如圖6.7所示。這樣中斷優(yōu)先級(jí)技術(shù)將引起中斷處理的嵌套,只要合適地定義中斷的優(yōu)先級(jí)別,就可以克服方法(1)的弊端。圖6.6屏蔽其他中斷圖6.7中斷嵌套 6.5設(shè)備分配
設(shè)備是系統(tǒng)的硬件資源,在多道環(huán)境的系統(tǒng)中,并發(fā)運(yùn)行的進(jìn)程對(duì)設(shè)備是共享的。由于設(shè)備、控制器和通道資源的有限性,不是每一個(gè)進(jìn)程都能隨時(shí)隨地得到這些資源。為了實(shí)現(xiàn)統(tǒng)一的管理,進(jìn)程在需要使用設(shè)備時(shí),必須首先向設(shè)備管理程序提出資源申請(qǐng)。然后由設(shè)備分配程序根據(jù)一定的分配算法為進(jìn)程分配資源。如果申請(qǐng)進(jìn)程得不到它所申請(qǐng)的資源,則將被放入資源等待隊(duì)列中等待,直到所需要的資源被釋放。
下面,我們討論設(shè)備分配和管理的數(shù)據(jù)結(jié)構(gòu)、分配技術(shù)以及分配算法等問(wèn)題。6.5.1設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)
在采用通道方式的I/O系統(tǒng)中,整個(gè)I/O系統(tǒng)分為四級(jí):設(shè)備、控制器、通道、主機(jī)。設(shè)備是通過(guò)控制器和通道與主機(jī)相連的。從主機(jī)到設(shè)備存在著多條通路,為了對(duì)這些資源進(jìn)行分配與管理,設(shè)備管理程序必須清楚地了解這些資源的使用情況,因而設(shè)置了用于管理設(shè)備的設(shè)備控制表DCT、用于管理控制器的控制器控制表COCT、用于管理通道的通道控制表CHCT,以及登記系統(tǒng)所有設(shè)備的系統(tǒng)設(shè)備表SDT。
設(shè)備的分配和管理通過(guò)下列數(shù)據(jù)結(jié)構(gòu)進(jìn)行。
1.設(shè)備控制表DCT(DeviceControlTable)
設(shè)備控制表DCT反映設(shè)備的特性,設(shè)備和I/O控制器的連接情況。其內(nèi)容包括設(shè)備標(biāo)識(shí)、使用狀態(tài)和等待使用該設(shè)備的進(jìn)程隊(duì)列等。系統(tǒng)中每個(gè)設(shè)備都必須有一張DCT,且在系統(tǒng)生成或在該設(shè)備和系統(tǒng)連接時(shí)創(chuàng)建,表中的內(nèi)容則根據(jù)系統(tǒng)執(zhí)行情況而被動(dòng)態(tài)地修改。DCT包括以下內(nèi)容:
(1)設(shè)備標(biāo)識(shí):也稱設(shè)備的絕對(duì)號(hào),用來(lái)區(qū)別某個(gè)設(shè)備。
(2)設(shè)備類型:反映設(shè)備的特性,例如,設(shè)備是終端設(shè)備、塊設(shè)備或字符設(shè)備等。
(3)設(shè)備地址或設(shè)備號(hào):每個(gè)設(shè)備都有相應(yīng)的地址或設(shè)備號(hào)。
(4)設(shè)備狀態(tài):指設(shè)備是處于工作還是空閑中。
(5)?COCT指針:指向與該設(shè)備相連的控制器控制表指針。
(6)等待隊(duì)列指針:等待使用該設(shè)備的進(jìn)程組成等待隊(duì)列,其隊(duì)首和隊(duì)尾指針存放在DCT中。
2.系統(tǒng)設(shè)備表SDT(SystemDeviceTable)
系統(tǒng)設(shè)備表SDT在整個(gè)系統(tǒng)中只有一張,它記錄已被連接到系統(tǒng)中的所有物理設(shè)備的情況,并為每個(gè)物理設(shè)備設(shè)一表目項(xiàng)。SDT的每個(gè)表目項(xiàng)包括的內(nèi)容有:
(1)?DCT指針:指向有關(guān)設(shè)備的設(shè)備控制表。
(2)正在使用設(shè)備的進(jìn)程標(biāo)識(shí)。
(3)設(shè)備類型和設(shè)備標(biāo)識(shí)符:這項(xiàng)的含義與DCT中的相同。
SDT的主要意義在于反映系統(tǒng)中設(shè)備資源的狀態(tài),即反映出系統(tǒng)中有多少設(shè)備,有多少是空閑的,而又有多少已分配給了哪些進(jìn)程。
3.控制器表COCT(COntrolerControlTable)
每個(gè)控制器都有一張COCT,它反映I/O控制器的使用狀態(tài),以及和通道的連接情況等(在DMA方式時(shí),該項(xiàng)是沒(méi)有的)。它包括:
(1)控制器標(biāo)識(shí);
(2)控制器忙閑標(biāo)記;
(3)通道控制表指針;
(4)控制器等待隊(duì)列。
4.通道控制表CHCT(CHannelControlTable)
通道控制表只在通道控制方式的系統(tǒng)中存在,也是每個(gè)通道一張。CHCT包括通道標(biāo)識(shí)、通道忙/閑標(biāo)記、等待隊(duì)列的隊(duì)首指針與隊(duì)尾指針等。
SDT、DCT、COCT及CHCT如圖6.8所示。圖6.8數(shù)據(jù)結(jié)構(gòu)表顯然,一個(gè)進(jìn)程只有獲得了通道、控制器和所需設(shè)備之后,才具備了進(jìn)行I/O操作的物理?xiàng)l件。
設(shè)備管理程序使用上述數(shù)據(jù)結(jié)構(gòu)為進(jìn)程分配設(shè)備,其過(guò)程如圖6.9所示。圖6.9設(shè)備分配流程6.5.2設(shè)備分配技術(shù)
根據(jù)設(shè)備的使用性質(zhì)可將設(shè)備分為獨(dú)占設(shè)備、共享設(shè)備和虛擬設(shè)備三種。
(1)獨(dú)占設(shè)備。獨(dú)占設(shè)備是不能被多個(gè)進(jìn)程同時(shí)共用的設(shè)備,即在一段時(shí)同內(nèi),該設(shè)備只允許一個(gè)進(jìn)程獨(dú)占。例如,對(duì)于行式打印機(jī)、繪圖儀、磁帶機(jī)之類的設(shè)備,應(yīng)由進(jìn)程獨(dú)占,它們屬于獨(dú)占設(shè)備。
(2)共享設(shè)備。共享設(shè)備是由若干個(gè)進(jìn)程同時(shí)共享的設(shè)備。這類設(shè)備具有高速、大容量、可直按存取等特點(diǎn),如磁盤(pán)機(jī),用戶甲讀自己的文件,用戶乙寫(xiě)文件,用戶丙訪問(wèn)數(shù)據(jù)庫(kù)文件,等等。這些文件都存放在一個(gè)磁盤(pán)上,所以,各用戶的進(jìn)程共享一個(gè)磁盤(pán)設(shè)備。
(3)虛擬設(shè)備。虛擬設(shè)備是利用某種技術(shù)把獨(dú)占設(shè)備改造成可由多個(gè)進(jìn)程共享的設(shè)備,這種設(shè)備并非物理上變成了共享設(shè)備,而是用戶使用它們時(shí)“感覺(jué)”就是共享設(shè)備,不像是獨(dú)占設(shè)備。虛擬設(shè)備屬于可共享設(shè)備,因而可把它分配給多個(gè)進(jìn)程使用。
針對(duì)這三種設(shè)備采用三種分配技術(shù):獨(dú)占分配、共享分配和虛擬分配。
(1)獨(dú)占分配。獨(dú)占分配技術(shù)是把獨(dú)占設(shè)備固定地分配給一個(gè)進(jìn)程,直至該進(jìn)程完成I/O操作并釋放它為止。在該進(jìn)程占用這個(gè)設(shè)備期間,即使閑置不用,也不能分給別的進(jìn)程使用,這是由設(shè)備的物理性質(zhì)決定的。這樣做,不僅使用起來(lái)方便,而且可避免死鎖發(fā)生。否則,若幾十用戶共享同一臺(tái)打印機(jī),各用戶的輸出結(jié)果會(huì)交織在一起,不好區(qū)分。但是,從設(shè)備的利用率來(lái)說(shuō),這種技術(shù)并不好,因?yàn)樗堑托Ц吆牡摹MǔV灰锌赡?,最好還是使用其他兩種技術(shù),即共享分配和虛擬分配。
(2)共享分配。共享分配技術(shù)通常適用于高速、大容量的直接存取存儲(chǔ)設(shè)備,如磁盤(pán)機(jī)和可讀寫(xiě)CD-ROM等,這類設(shè)備就是共享設(shè)備。每個(gè)進(jìn)程只用其中的某一部分,系統(tǒng)保證對(duì)這些不同的部分可方便地進(jìn)行檢索,而且又互不干擾。這樣,共享設(shè)備的利用率就得到顯著提高。然而,由于多個(gè)進(jìn)程同時(shí)共享一臺(tái)設(shè)備,因此就使設(shè)備管理工作變得復(fù)雜起來(lái)。
(3)虛擬分配。虛擬分配技術(shù)往往是利用共享設(shè)備去模擬獨(dú)占設(shè)備,從而使獨(dú)占設(shè)備成為可共享的、快速的I/O設(shè)備。實(shí)現(xiàn)虛擬分配的最有名的技術(shù)是同時(shí)外圍聯(lián)機(jī)操作(SPOOLing,SimultaneousPeripheralOperationOn-Line)技術(shù),也稱為假脫機(jī)技術(shù)。它可把卡片機(jī)或打印機(jī)等獨(dú)占設(shè)備變成共享設(shè)備。例如,SPOOLing程序預(yù)先把一臺(tái)卡片機(jī)上的一個(gè)作業(yè)的全部卡片都輸入到磁盤(pán)中。然后,當(dāng)進(jìn)程試圖讀卡時(shí),由SPOOLing程序把這個(gè)請(qǐng)求轉(zhuǎn)換成從盤(pán)上讀入。這樣,從用戶程序來(lái)看,它是從“快速”的卡片機(jī)上讀入信息的,而實(shí)際上卻是從磁盤(pán)上讀入的。因?yàn)榇疟P(pán)容易被多個(gè)用戶共享,這樣就把一臺(tái)卡片機(jī)變成多臺(tái)“虛擬”的卡片機(jī)。各用戶作業(yè)的卡片可以一個(gè)接一個(gè)地放在卡片機(jī)上,然后送入磁盤(pán)。這樣,獨(dú)占設(shè)備也就成為“共享”設(shè)備了。6.5.3假脫機(jī)技術(shù)(SPOOLing)
SPOOLing技術(shù)就是將一臺(tái)獨(dú)占設(shè)備改造成共享設(shè)備的一種行之有效的技術(shù)。在多道系統(tǒng)環(huán)境下,系統(tǒng)利用模擬輸入程序,來(lái)模擬脫機(jī)輸入時(shí)的外圍控制機(jī)的功能,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤(pán)上;再利用模擬輸出程序來(lái)模擬脫機(jī)輸出時(shí)外圍控制機(jī)的功能,把數(shù)據(jù)從磁盤(pán)傳送到低速輸出設(shè)備上。這樣,便可在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、輸出功能。
1.假脫機(jī)技術(shù)的組成
輸入井和輸出井:在共享設(shè)備磁盤(pán)上開(kāi)辟的兩個(gè)大的存儲(chǔ)區(qū)。
輸入井:用于存放獨(dú)占型設(shè)備輸入的數(shù)據(jù),模擬獨(dú)占的輸入設(shè)備。
輸出井:用于存放用戶程序最終向獨(dú)占型設(shè)備輸出的數(shù)據(jù),模擬獨(dú)占的輸出設(shè)備。
輸入井緩沖區(qū)和輸出井緩沖區(qū):在內(nèi)存中開(kāi)辟的兩個(gè)緩沖區(qū)。
輸入井緩沖區(qū):用于暫存由輸入設(shè)備送來(lái)的數(shù)據(jù)。
輸出井緩沖區(qū):用于暫存由輸出設(shè)備送來(lái)的數(shù)據(jù)。輸入管理模塊:將用戶要求的數(shù)據(jù)從輸入設(shè)備通過(guò)輸入緩沖區(qū)送到輸入井。當(dāng)CPU需要數(shù)據(jù)時(shí),直接從輸入井讀入內(nèi)存。
輸出管理模塊:把用戶要求輸出的數(shù)據(jù)先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù)經(jīng)過(guò)輸出緩沖區(qū)送到輸出設(shè)備上。
2.假脫機(jī)技術(shù)的工作原理
假脫機(jī)技術(shù)是在輸入和輸出之間增加了“輸入井”和“輸出井”的排隊(duì)轉(zhuǎn)儲(chǔ)環(huán)節(jié),以消除用戶的“聯(lián)機(jī)”等待時(shí)間。在系統(tǒng)輸入模塊收到作業(yè)輸入請(qǐng)求信號(hào)后,輸入管理模塊中的讀過(guò)程負(fù)責(zé)將信息從輸入裝置中讀入輸入井緩沖區(qū)。當(dāng)緩沖區(qū)滿時(shí),由寫(xiě)過(guò)程將信息從緩沖區(qū)寫(xiě)到外存的輸入井中,讀過(guò)程和寫(xiě)過(guò)程反復(fù)循環(huán),直到一個(gè)作業(yè)輸入完畢。當(dāng)讀過(guò)程讀到一個(gè)硬件結(jié)束標(biāo)志后,系統(tǒng)再次驅(qū)動(dòng)寫(xiě)過(guò)程把最后一批信息寫(xiě)入外存輸入井并調(diào)用中斷處理程序結(jié)束該次輸入。然后,系統(tǒng)為該作業(yè)建立作業(yè)控制塊,從而使輸入井中的作業(yè)進(jìn)入作業(yè)等待隊(duì)列,等待作業(yè)調(diào)度程序選中后進(jìn)入內(nèi)存運(yùn)行。系統(tǒng)在管理輸入井過(guò)程中可以“不斷”讀入輸入的作業(yè),直到輸入結(jié)束或輸入井滿而暫停。若作業(yè)需要向獨(dú)占型設(shè)備(如打印機(jī))輸出數(shù)據(jù)時(shí),SPOOLing系統(tǒng)并不是將這臺(tái)打印機(jī)直接分配給進(jìn)程,而是由輸出管理模塊在共享設(shè)備(磁盤(pán))上的輸出井中為其分配一塊存儲(chǔ)空間,進(jìn)程的輸出數(shù)據(jù)以文件形式存放于此。各進(jìn)程的數(shù)據(jù)輸出文件形成一個(gè)輸出隊(duì)列,由輸出管理模塊依次將隊(duì)列中的輸出文件送入到輸出井緩沖區(qū)并最終實(shí)際打印輸出。在SPOOLing系統(tǒng)中,實(shí)際上并沒(méi)有為任何進(jìn)程分配,而只是在輸入井和輸出井中,為進(jìn)程分配一存儲(chǔ)區(qū)。這樣,便把獨(dú)占設(shè)備改造為共享設(shè)備。
3.假脫機(jī)技術(shù)的特點(diǎn)
假脫機(jī)技術(shù)具有如下特點(diǎn):
(1)提高了I/O速度。SPOOLing技術(shù)引入了輸入井和輸出井,可以使輸入進(jìn)程、用戶進(jìn)程和輸出進(jìn)程同時(shí)工作,提高了I/O速度。
(2)將獨(dú)占設(shè)備改造為共享設(shè)備。在SPOOLing系統(tǒng)中,實(shí)際上并沒(méi)有為任何進(jìn)程分配,而只是在輸入井和輸出井中,為進(jìn)程分配一存儲(chǔ)區(qū)并建立一張I/O請(qǐng)求表。例如,對(duì)于打印輸出,是把所有用戶進(jìn)程的輸出都送入輸出井,然后再由輸出進(jìn)程完成打印工作,而輸出井在磁盤(pán)上,為共享設(shè)備。這樣SPOOLing技術(shù)就把打印機(jī)等獨(dú)占設(shè)備改造為共享設(shè)備。
(3)實(shí)現(xiàn)了虛擬設(shè)備功能。采用SPOOLing技術(shù)后,宏觀上多個(gè)進(jìn)程同時(shí)使用一臺(tái)獨(dú)立設(shè)備,對(duì)每一個(gè)進(jìn)程而言,它們都認(rèn)為自己是獨(dú)占了一個(gè)設(shè)備。當(dāng)然,該設(shè)備只是邏輯上的設(shè)備。實(shí)現(xiàn)了多個(gè)用戶進(jìn)程共同使用打印機(jī)這種獨(dú)占設(shè)備的情況,從而實(shí)現(xiàn)了把一個(gè)設(shè)備當(dāng)成多個(gè)設(shè)備來(lái)使用的情況,即虛擬設(shè)備的功能。6.5.4設(shè)備獨(dú)立性
1.設(shè)備獨(dú)立性(DeviceIndependence)的概念
設(shè)備獨(dú)立性也稱為設(shè)備無(wú)關(guān)性。其基本含義是:應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。在應(yīng)用程序中,使用邏輯設(shè)備名稱來(lái)請(qǐng)求使用某類設(shè)備;而系統(tǒng)在實(shí)際執(zhí)行時(shí),是使用物理設(shè)備名稱。系統(tǒng)必須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物理設(shè)備名稱的功能。
(1)設(shè)備分配時(shí)的靈活性。若進(jìn)程以物理設(shè)備名來(lái)請(qǐng)求使用指定的某臺(tái)設(shè)備時(shí),如果該設(shè)備已經(jīng)分配給其他進(jìn)程,或正在檢修,即使該類設(shè)備的其他設(shè)備空閑,也無(wú)法實(shí)施分配,進(jìn)程只有等待。若能以邏輯設(shè)備名來(lái)請(qǐng)求某類設(shè)備時(shí),該類設(shè)備中的任一臺(tái)只要空閑就可分配給進(jìn)程,只有當(dāng)該類設(shè)備已全部分配完畢時(shí),進(jìn)程才會(huì)阻塞。
(2)易于實(shí)現(xiàn)I/O重定向。所謂I/O重定向,是指用于I/O操作的設(shè)備可以更換,而不必改變應(yīng)用程序。
2.設(shè)備獨(dú)立性軟件
為了實(shí)現(xiàn)設(shè)備獨(dú)立性,必須在驅(qū)動(dòng)程序之上設(shè)置一層軟件,稱為設(shè)備獨(dú)立性軟件,其主要功能可分為以下兩個(gè)方面:
(1)執(zhí)行所有設(shè)備的公有操作。這些公有操作可以包括:
①獨(dú)占設(shè)備的分配與回收;
②將邏輯設(shè)備名映射為物理設(shè)備名,進(jìn)一步可以找到相應(yīng)的物理設(shè)備的驅(qū)動(dòng)程序;
③對(duì)設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問(wèn)設(shè)備;
④緩沖管理,對(duì)字符設(shè)備和塊設(shè)備的緩沖區(qū)進(jìn)行有效管理,以提高I/O的效率;⑤差錯(cuò)控制,由于在I/O操作中的絕大多數(shù)錯(cuò)誤都與設(shè)備無(wú)關(guān)。
(2)向用戶層(或文件層)軟件提供統(tǒng)一接口。無(wú)論何種設(shè)備,它們向用戶提供的接口應(yīng)該是相同的。例如:對(duì)各種設(shè)備的讀操作,在程序中都使用read;而對(duì)各種設(shè)備的寫(xiě)操作,也都使用write。
3.邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)
(1)邏輯設(shè)備表。為了實(shí)現(xiàn)設(shè)備的獨(dú)立性,系統(tǒng)必須能夠?qū)?yīng)用程序中所使用的邏輯設(shè)備名映射為物理設(shè)備名,需設(shè)置一張邏輯設(shè)備表LUT(LogicalUnitTable)。
(2)?LUT的設(shè)置問(wèn)題。LUT的設(shè)置可采取兩種方式:
①整個(gè)系統(tǒng)設(shè)置一張LUT,不允許在LUT中具有相同的邏輯設(shè)備名,這就是要求所有用戶不使用相同的邏輯設(shè)備名。
②為每個(gè)用戶設(shè)置一張LUT,用戶建立一個(gè)進(jìn)程,同時(shí)也為之建立一張LUT。6.5.5設(shè)備分配算法
設(shè)備分配算法就是按照什么原則把設(shè)備分給進(jìn)程。對(duì)設(shè)備的分配算法與進(jìn)程的調(diào)度算法有相似之處,但比較簡(jiǎn)單。當(dāng)一個(gè)作業(yè)的進(jìn)程需要使用設(shè)備資源執(zhí)行輸入/輸出操作時(shí),就通過(guò)系統(tǒng)調(diào)用向系統(tǒng)發(fā)出設(shè)備請(qǐng)求。系統(tǒng)根據(jù)設(shè)備的狀況,為它分配設(shè)備、控制器和通道等資源。當(dāng)多個(gè)進(jìn)程同時(shí)發(fā)出設(shè)備請(qǐng)求,而系統(tǒng)中的設(shè)備資源不能滿足它們的請(qǐng)求時(shí),系統(tǒng)究竟將設(shè)備分配給哪個(gè)進(jìn)程呢?這就取決于系統(tǒng)所采用的設(shè)備分配算法。目前采用的設(shè)備分配算法有以下兩種:
(1)先請(qǐng)求先分配。當(dāng)多個(gè)進(jìn)程或作業(yè)請(qǐng)求某一設(shè)備時(shí),按發(fā)出請(qǐng)求的先后次序插入等待隊(duì)列中。設(shè)備分配時(shí),總是把設(shè)備分配給隊(duì)首的那個(gè)進(jìn)程。因此,哪個(gè)進(jìn)程先提出請(qǐng)求,哪個(gè)進(jìn)程就先得到設(shè)備。
(2)優(yōu)先級(jí)高者先分配。對(duì)于請(qǐng)求使用同一設(shè)備的多個(gè)進(jìn)程,按照它們優(yōu)先級(jí)高低的順序排在等待隊(duì)列中。在分配設(shè)備時(shí),總是選隊(duì)列中優(yōu)先級(jí)最高的進(jìn)程,把設(shè)備分配給它使用。對(duì)于具有相同優(yōu)先級(jí)的進(jìn)程,則按照先請(qǐng)求先分配算法分配。 6.6I/O軟件
6.6.1I/O軟件的目標(biāo)
I/O軟件的總體設(shè)計(jì)目標(biāo)很明確。其基本思想是:把軟件組織成一種層次結(jié)構(gòu),低層軟件用來(lái)屏蔽硬件的具體細(xì)節(jié),高層軟件則主要向用戶提供一個(gè)簡(jiǎn)潔、規(guī)范的界面。
I/O軟件設(shè)計(jì)主要要考慮以下四個(gè)問(wèn)題:
(1)設(shè)備獨(dú)立性。程序員寫(xiě)出的軟件在訪問(wèn)不同的外圍設(shè)備時(shí)應(yīng)該盡可能地與設(shè)備的具體類型無(wú)關(guān),如訪問(wèn)文件不必考慮它是存儲(chǔ)在硬盤(pán)、軟盤(pán)還是CD-ROM上。
(2)出錯(cuò)處理??偟膩?lái)說(shuō),錯(cuò)誤應(yīng)該在盡可能靠近硬件的地方處理,在低層軟件能夠解決的錯(cuò)誤不讓高層軟件感知,只有低層軟件解決不了的錯(cuò)誤才通知高層軟件解決。
(3)同步(阻塞)——異步(中斷驅(qū)動(dòng))傳輸。多數(shù)物理I/O是異步傳輸,即CPU在啟動(dòng)傳輸操作后便轉(zhuǎn)向其他工作,直到中斷到達(dá)。I/O操作可以采用阻塞語(yǔ)義,發(fā)出一條“讀”命令后,程序?qū)⒆詣?dòng)被掛起,直到數(shù)據(jù)被送到內(nèi)存緩沖區(qū)。
(4)獨(dú)占性外圍設(shè)備和共享性外圍設(shè)備。某些設(shè)備可以同時(shí)為幾個(gè)用戶服務(wù),如磁盤(pán);另一些設(shè)備在某一段時(shí)間只能供一個(gè)用戶使用,如鍵盤(pán)。獨(dú)占性外圍設(shè)備和共享性外圍設(shè)備帶來(lái)了許多問(wèn)題,操作系統(tǒng)必須能夠同時(shí)加以解決。6.6.2I/O軟件的組成
為了合理、高效地解決以上問(wèn)題,操作系統(tǒng)通常把I/O軟件組織成以下四個(gè)層次。
1.中斷處理程序
中斷是應(yīng)該盡量加以屏蔽的概念,應(yīng)該放在操作系統(tǒng)的底層進(jìn)行處理,以便其余部分盡可能少地與之發(fā)生聯(lián)系。
每個(gè)進(jìn)程在啟動(dòng)一個(gè)I/O操作后阻塞,直到I/O操作完成并產(chǎn)生一個(gè)中斷,由操作系統(tǒng)接管CPU后轉(zhuǎn)相應(yīng)設(shè)備的中斷處理程序執(zhí)行,做I/O結(jié)束的善后處理,并為下一個(gè)I/O請(qǐng)求服務(wù),喚醒等待進(jìn)程。
2.設(shè)備驅(qū)動(dòng)程序
與設(shè)備密切相關(guān)的代碼放在設(shè)備驅(qū)動(dòng)程序中,每個(gè)設(shè)備驅(qū)動(dòng)程序處理一種設(shè)備類型,每一個(gè)控制器都設(shè)有一個(gè)或多個(gè)設(shè)備寄存器,用來(lái)存放向設(shè)備發(fā)送的命令和參數(shù)。設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)解釋這些命令,并監(jiān)督它們正確執(zhí)行。通常,設(shè)備驅(qū)動(dòng)程序的任務(wù)是接收來(lái)自與設(shè)備無(wú)關(guān)的上層軟件的抽象請(qǐng)求,并執(zhí)行這個(gè)請(qǐng)求。
3.與設(shè)備無(wú)關(guān)的I/O軟件
獨(dú)立于設(shè)備的軟件的基本任務(wù)是實(shí)現(xiàn)所有設(shè)備都需要的功能,并向用戶級(jí)軟件提供一個(gè)統(tǒng)一的接口,負(fù)責(zé)把設(shè)備的符號(hào)名映射到正確的設(shè)備驅(qū)動(dòng)上。用戶進(jìn)程的I/O操作都交給與設(shè)備無(wú)關(guān)的軟件來(lái)完成。在Linux系統(tǒng)中,與設(shè)備無(wú)關(guān)的軟件的大部分功能是由文件系統(tǒng)完成的。盡管訪問(wèn)設(shè)備和訪問(wèn)文件是一樣的,沒(méi)什么區(qū)別,但在內(nèi)核里面設(shè)備文件和普通文件在樹(shù)形目錄結(jié)構(gòu)中的索引節(jié)點(diǎn)是有區(qū)別的。與設(shè)備無(wú)關(guān)的I/O軟件會(huì)從索引節(jié)點(diǎn)中的文件類型中判斷是文件還是設(shè)備,從而確定是訪問(wèn)相應(yīng)設(shè)備的驅(qū)動(dòng)程序還是訪問(wèn)相應(yīng)的文件。實(shí)施設(shè)備保護(hù),系統(tǒng)防止無(wú)權(quán)存取設(shè)備的用戶存取設(shè)備,即進(jìn)行合法性檢測(cè)。
對(duì)于磁盤(pán),可以采用不同的扇區(qū)尺寸,向較高層軟件掩蓋這一事實(shí)并提供大小統(tǒng)一的塊尺寸,這正是設(shè)備獨(dú)立軟件的一個(gè)任務(wù)。它可將若干扇區(qū)合成一個(gè)邏輯塊。這樣,較高層的軟件只與抽象設(shè)備打交道,而獨(dú)立于物理扇區(qū)的尺寸使用等長(zhǎng)的邏輯塊。
對(duì)緩沖的管理,為了緩解CPU與設(shè)備速度不匹配的矛盾,數(shù)據(jù)的傳送都是經(jīng)過(guò)緩沖完成的,而實(shí)施緩存的分配與回收和設(shè)備無(wú)關(guān),在設(shè)備驅(qū)動(dòng)程序之上完成。
設(shè)備分配及出錯(cuò)處理都是在設(shè)備驅(qū)動(dòng)程序之上實(shí)現(xiàn)的。
4.用戶空間的I/O軟件
盡管大部分I/O軟件都包含在操作系統(tǒng)中,但仍有一小部分是與用戶程序連接在一起的庫(kù)過(guò)程,甚至完全由運(yùn)行于核外的程序構(gòu)成。系統(tǒng)調(diào)用,包括I/O系統(tǒng)調(diào)用,通常由庫(kù)過(guò)程實(shí)現(xiàn)這些過(guò)程所做的工作只是將系統(tǒng)調(diào)用時(shí)所用的參數(shù)放在合適的位置,由其他的I/O過(guò)程實(shí)現(xiàn)真正的操作。I/O軟件層次結(jié)構(gòu)如圖6.10所示。圖6.10I/O軟件體系結(jié)構(gòu)6.6.3I/O系統(tǒng)各層的主要功能
I/O系統(tǒng)各層的主要功能如下:
(1)用戶進(jìn)程層執(zhí)行輸入/輸出系統(tǒng)調(diào)用,對(duì)I/O數(shù)據(jù)進(jìn)行格式化,為假脫機(jī)輸入/輸出做準(zhǔn)備。
(2)獨(dú)立于設(shè)備的軟件實(shí)現(xiàn)設(shè)備的命名、設(shè)備的保護(hù)、成塊處理、緩沖技術(shù)和設(shè)備分配。
(3)設(shè)備驅(qū)動(dòng)程序設(shè)置設(shè)備寄存器、檢查設(shè)備的執(zhí)行狀態(tài)。
(4)中斷處理程序負(fù)責(zé)I/O完成時(shí),喚醒設(shè)備驅(qū)動(dòng)程序進(jìn)程,進(jìn)行中斷處理。
(5)硬件層實(shí)現(xiàn)物理I/O的操作。
6.7設(shè)備驅(qū)動(dòng)程序
I/O子系統(tǒng)使用戶進(jìn)程能與I/O設(shè)備進(jìn)行通信。控制設(shè)備直接進(jìn)行各種操作的內(nèi)核模塊常稱為設(shè)備驅(qū)動(dòng)程序(DeviceDriver)。由于設(shè)備驅(qū)動(dòng)程序和設(shè)備的特性緊密相關(guān),即設(shè)備驅(qū)動(dòng)程序是與設(shè)備類型一一對(duì)應(yīng)的,因此對(duì)于不同類型的I/O設(shè)備,驅(qū)動(dòng)程序是不一樣的,即使是同一類的I/O設(shè)備,由于不同廠商生產(chǎn),其設(shè)備驅(qū)動(dòng)程序也不完全一樣。但一個(gè)設(shè)備驅(qū)動(dòng)程序也可以控制一種給定類型的物理設(shè)備。比如一個(gè)終端驅(qū)動(dòng)程序可以控制連接到系統(tǒng)的所有終端。利用設(shè)備驅(qū)動(dòng)程序既方便用戶操縱具體的物理設(shè)備,又降低了操作系統(tǒng)設(shè)計(jì)的復(fù)雜性。設(shè)備供應(yīng)商或軟硬件開(kāi)發(fā)商提供了某一具體設(shè)備的驅(qū)動(dòng)程序(如聲卡驅(qū)動(dòng)程序),系統(tǒng)初啟時(shí)將自動(dòng)裝載標(biāo)準(zhǔn)設(shè)備的驅(qū)動(dòng)程序以及用戶配置好的設(shè)備驅(qū)動(dòng)程序,從而方便用戶使用。6.7.1設(shè)備驅(qū)動(dòng)程序的功能
設(shè)備驅(qū)動(dòng)程序的主要任務(wù)是接收上層軟件發(fā)來(lái)的抽象要求(如read、write命令),再把它轉(zhuǎn)換為具體要求,發(fā)給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行。此外,它也接收由設(shè)備控制器發(fā)來(lái)的信號(hào),并將其傳送給上層軟件。設(shè)備驅(qū)動(dòng)程序的主要功能有:
(1)將接收到的抽象要求轉(zhuǎn)換為具體要求。例如,將磁盤(pán)塊號(hào)轉(zhuǎn)換為磁盤(pán)的盤(pán)面、磁道號(hào)及扇區(qū)號(hào)。
(2)檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。
(3)發(fā)出I/O命令,如果設(shè)備空閑,則啟動(dòng)分配到的I/O設(shè)備,完成指定I/O操作。如果設(shè)備處于忙碌狀態(tài),則將請(qǐng)求者的請(qǐng)求塊掛在設(shè)備隊(duì)列上等待。
(4)及時(shí)響應(yīng)由控制器或通道發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。
(5)對(duì)于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),驅(qū)動(dòng)程序還應(yīng)能夠根據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。6.7.2設(shè)備驅(qū)動(dòng)程序的特點(diǎn)
設(shè)備驅(qū)動(dòng)程序與一般的應(yīng)用程序及系統(tǒng)程序之間存在明顯差異。設(shè)備驅(qū)動(dòng)程序是一組由內(nèi)核中的相關(guān)于例程和數(shù)據(jù)組成的I/O設(shè)備軟件接口。每當(dāng)內(nèi)核意識(shí)到要對(duì)某個(gè)設(shè)備進(jìn)行特殊的操作時(shí),它就調(diào)用相應(yīng)的驅(qū)動(dòng)例程,這就使得控制從用戶進(jìn)程轉(zhuǎn)移到了驅(qū)動(dòng)例程。當(dāng)驅(qū)動(dòng)例程完成后,控制又被返回至用戶進(jìn)程,每個(gè)設(shè)備驅(qū)動(dòng)程序都具有一整套和硬件設(shè)備通信的例程,并且提供給操作系統(tǒng)一套標(biāo)準(zhǔn)的軟件接口。
設(shè)備驅(qū)動(dòng)程序的主要特點(diǎn)是:
(1)設(shè)備驅(qū)動(dòng)程序主要是在請(qǐng)求I/O的進(jìn)程與設(shè)備控制器之間的一個(gè)通信程序,它將進(jìn)程的I/O請(qǐng)求傳送給控制器,而把設(shè)備控制器中所記錄的設(shè)備狀態(tài)、I/O操作完成的情況反映給請(qǐng)求I/O的進(jìn)程。
(2)設(shè)備驅(qū)動(dòng)程序與I/O設(shè)備的特性緊密相關(guān)。
(3)設(shè)備驅(qū)動(dòng)程序與I/O控制方式緊密相關(guān)。
(4)由于設(shè)備驅(qū)動(dòng)程序與硬件密切相關(guān),因而其中的一部分程序是用匯編語(yǔ)言書(shū)寫(xiě)的。目前,有很多設(shè)備的驅(qū)動(dòng)程序的基本部分已經(jīng)固化在ROM中。
6.8磁盤(pán)存儲(chǔ)管理
磁盤(pán)存儲(chǔ)器不僅容量大,存取速度快,而且可以實(shí)現(xiàn)隨機(jī)存取,存取磁盤(pán)上任一物理塊的時(shí)間不依賴于該物理塊所處的位置,是實(shí)現(xiàn)虛擬存儲(chǔ)系統(tǒng)所必需的硬件,因此在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,都配置了磁盤(pán)存儲(chǔ)器,并以它為存放文件的主要設(shè)備。磁盤(pán)存儲(chǔ)管理的主要任務(wù)是:為文件分配必要的存儲(chǔ)空間;提高磁盤(pán)存儲(chǔ)空間的利用率;提高對(duì)磁盤(pán)的I/O速度,以改善文件系統(tǒng)的性能;采取必要的冗余措施,來(lái)確保文件系統(tǒng)的可靠性。6.8.1磁盤(pán)結(jié)構(gòu)
在現(xiàn)代計(jì)算機(jī)結(jié)構(gòu)中,磁盤(pán)用于第二級(jí)存儲(chǔ)。早期磁帶是第二級(jí)存儲(chǔ)介質(zhì),不過(guò)磁帶相對(duì)于磁盤(pán),存取速度較慢。因此,現(xiàn)在磁帶主要用于數(shù)據(jù)備份,存儲(chǔ)不頻繁使用的信息,作為系統(tǒng)間傳遞信息的介質(zhì)。磁帶主要用于大量數(shù)據(jù)的存儲(chǔ),這些大量的數(shù)據(jù)對(duì)磁盤(pán)存儲(chǔ)來(lái)說(shuō)是不現(xiàn)實(shí)的。磁盤(pán)設(shè)備是一種高速、大容量、旋轉(zhuǎn)型的存儲(chǔ)設(shè)備,它能把信息記錄在盤(pán)片上,也能把盤(pán)片上的信息讀出。磁盤(pán)設(shè)備可包含一個(gè)或多個(gè)盤(pán)片,每個(gè)盤(pán)片有正反兩面,若干張盤(pán)片可以組成一個(gè)盤(pán)組。一個(gè)盤(pán)組中的盤(pán)片都被固定在一個(gè)軸上,沿著一個(gè)方向高速旋轉(zhuǎn)。每個(gè)盤(pán)面有一個(gè)讀/寫(xiě)磁頭,所有的讀/寫(xiě)磁頭被固定在唯一的移動(dòng)臂上同時(shí)移動(dòng),把所有的讀寫(xiě)磁頭按從上到下的次序從0開(kāi)始進(jìn)行編號(hào),稱為“磁頭號(hào)”。每個(gè)盤(pán)面上有許多磁道(典型值為500~2000條磁道),從0開(kāi)始按由外向里的次序編號(hào),不同盤(pán)面上具有相同編號(hào)的磁道在同一個(gè)柱面上,把盤(pán)面上的磁道號(hào)稱為“柱面號(hào)”。在每條磁道上可存儲(chǔ)相同數(shù)目的二進(jìn)制位,每英寸中所存儲(chǔ)的位數(shù)稱為磁盤(pán)密度。顯然,內(nèi)層磁道的密度比外層磁道的密度高。每條磁道又分成若干個(gè)扇區(qū),其典型值為10~100個(gè)扇區(qū)。每個(gè)扇區(qū)的大小相當(dāng)于一個(gè)盤(pán)塊。0扇區(qū)是最外層柱面的第一個(gè)磁道的第一個(gè)扇區(qū)。移動(dòng)臂可以帶動(dòng)讀寫(xiě)磁頭訪問(wèn)所有的磁道,當(dāng)移動(dòng)臂移動(dòng)到某一位置時(shí),所有的讀寫(xiě)磁頭都在同一柱面上,每次只有其中的一個(gè)磁頭可以進(jìn)行讀或?qū)懙牟僮?。在磁盤(pán)初始化時(shí)把每個(gè)盤(pán)面劃分成相等數(shù)量的扇區(qū),按磁盤(pán)旋轉(zhuǎn)的反向從0開(kāi)始給各扇區(qū)編號(hào),稱為“扇區(qū)號(hào)”。每個(gè)扇區(qū)的各磁道上均可存放相等數(shù)量的字符,我們稱它為“塊”,塊是信息讀寫(xiě)的最小單位。要確定一個(gè)塊所在的位置必須給出三個(gè)參數(shù):柱面號(hào)、磁頭號(hào)、扇區(qū)號(hào)。磁盤(pán)的結(jié)構(gòu)如圖6.11所示。圖6.11磁盤(pán)結(jié)構(gòu)啟動(dòng)磁盤(pán)執(zhí)行輸入/輸出操作時(shí),要把移動(dòng)臂移動(dòng)到指定的柱面,再等待指定的扇區(qū)旋轉(zhuǎn)到磁頭位置下,然后讓指定的磁頭進(jìn)行讀/寫(xiě),完成信息傳送。因此,執(zhí)行一次輸入/輸出操作所花的時(shí)間為:
尋找時(shí)間——磁頭在移動(dòng)臂帶動(dòng)下移動(dòng)到指定柱面所花的時(shí)間。
延遲時(shí)間——指定扇區(qū)旋轉(zhuǎn)到磁頭下所需的時(shí)間。
傳送時(shí)間——由磁頭進(jìn)行讀/寫(xiě)完成信息傳送的時(shí)間。
其中,傳送信息所花的時(shí)間是硬件設(shè)計(jì)就固定的,而尋找時(shí)間和延遲時(shí)間與信息在磁盤(pán)上的位置有關(guān)。圖6.12是訪問(wèn)磁盤(pán)的操作時(shí)間示意圖。圖6.12訪問(wèn)磁盤(pán)的操作時(shí)間為了減少移動(dòng)臂進(jìn)行移動(dòng)花費(fèi)的時(shí)間,每個(gè)文件的信息不是按盤(pán)面上的磁道順序存放滿一個(gè)盤(pán)面后,再放到下一個(gè)盤(pán)面上,而是按柱面存放。同一柱面上的各磁道被放滿信息后,再放到下一個(gè)柱面。
6.8.2磁盤(pán)系統(tǒng)與磁盤(pán)分類
磁盤(pán)系統(tǒng)由磁盤(pán)本身和驅(qū)動(dòng)控制設(shè)備組成,實(shí)際存取讀/寫(xiě)的動(dòng)作過(guò)程是由磁盤(pán)驅(qū)動(dòng)控制設(shè)備按照主機(jī)要求完成的。磁盤(pán)分為兩種:
(1)固定頭磁盤(pán):每個(gè)磁道設(shè)置一個(gè)磁頭,變換磁道時(shí)不需要磁頭的機(jī)械移動(dòng),速度快但成本高。
(2)移動(dòng)頭磁盤(pán):一個(gè)盤(pán)面只有一個(gè)磁頭,變換磁道時(shí)需要移動(dòng)磁頭,速度慢但成本低。6.8.3磁盤(pán)調(diào)度
操作系統(tǒng)的一個(gè)主要任務(wù)是使硬件高效地發(fā)揮作用。為了滿足這一要求,磁盤(pán)驅(qū)動(dòng)器必須有較快的磁盤(pán)存取速度和磁盤(pán)帶寬。存取時(shí)間主要取決于兩個(gè)因素:尋道時(shí)間和旋轉(zhuǎn)延遲。尋道時(shí)間是磁盤(pán)臂把磁頭定位到請(qǐng)求扇區(qū)的柱面的時(shí)間。旋轉(zhuǎn)延遲是磁盤(pán)旋轉(zhuǎn)使請(qǐng)求扇區(qū)到達(dá)磁頭的時(shí)間。磁盤(pán)帶寬是傳輸?shù)臄?shù)據(jù)字節(jié)總數(shù)與請(qǐng)求服務(wù)開(kāi)始和數(shù)據(jù)傳輸最后完成所需時(shí)間的比值。通過(guò)調(diào)度請(qǐng)求磁盤(pán)I/O的序列,可以提高磁盤(pán)的存取速度和磁盤(pán)帶寬。當(dāng)進(jìn)程請(qǐng)求磁盤(pán)I/O操作時(shí),進(jìn)程向操作系統(tǒng)引發(fā)系統(tǒng)調(diào)用,磁盤(pán)請(qǐng)求包含以下說(shuō)明信息:
(1)請(qǐng)求的操作屬于輸入操作還是輸出操作;
(2)傳送數(shù)據(jù)的磁盤(pán)地址(如設(shè)備號(hào)、柱面號(hào)、磁頭號(hào)、扇區(qū)號(hào));
(3)傳送數(shù)據(jù)的內(nèi)存地址;
(4)傳送數(shù)據(jù)的總字節(jié)數(shù)。如果期望的磁盤(pán)驅(qū)動(dòng)器和控制器空閑,則請(qǐng)求可以立即服務(wù);如果驅(qū)動(dòng)器和控制器忙,則請(qǐng)求服務(wù)轉(zhuǎn)移到磁盤(pán)驅(qū)動(dòng)器的請(qǐng)求等待隊(duì)列中,在多進(jìn)程的多任務(wù)系統(tǒng)中,磁盤(pán)隊(duì)列經(jīng)常有幾個(gè)等待的請(qǐng)求,當(dāng)一個(gè)請(qǐng)求完成后,操作系統(tǒng)選擇下一個(gè)要服務(wù)的等待請(qǐng)求。
一次訪盤(pán)請(qǐng)求(讀/寫(xiě))完成過(guò)程由三個(gè)動(dòng)作組成:
(1)尋道:磁頭移動(dòng)到指定磁道。
(2)旋轉(zhuǎn)延遲:等待指定扇區(qū)從磁頭下旋轉(zhuǎn)經(jīng)過(guò)。
(3)數(shù)據(jù)傳輸:數(shù)據(jù)在磁盤(pán)與內(nèi)存之間的實(shí)際傳輸。當(dāng)有多個(gè)進(jìn)程都請(qǐng)求訪問(wèn)磁盤(pán)時(shí),應(yīng)采用一種適當(dāng)?shù)恼{(diào)度算法,以使各進(jìn)程對(duì)磁盤(pán)的平均訪問(wèn)(主要是尋道)時(shí)間最小。由于在訪問(wèn)磁盤(pán)的時(shí)間中,主要是尋道時(shí)間,因此,磁盤(pán)調(diào)度的目標(biāo)應(yīng)是使磁盤(pán)的平均尋道時(shí)間最少。目前,常用的磁盤(pán)調(diào)度算法有先來(lái)先服務(wù)算法、最短尋找時(shí)間優(yōu)先調(diào)度算法、電梯調(diào)度算法和單向掃描調(diào)度算法。
1.先來(lái)先服務(wù)調(diào)度算法(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度5G通信模塊及解決方案采購(gòu)合作協(xié)議
- 2025年北京智能家電研發(fā)與定制化服務(wù)合作協(xié)議
- 2025年度高標(biāo)準(zhǔn)綠色節(jié)能住宅小區(qū)物業(yè)運(yùn)營(yíng)管理服務(wù)承包合同
- 2025年環(huán)保型建筑材料采購(gòu)合同環(huán)境責(zé)任承諾書(shū)
- 2025年度餐飲廢棄物收運(yùn)及資源化利用合作協(xié)議
- 2025年度新型物流倉(cāng)儲(chǔ)設(shè)備采購(gòu)與服務(wù)合同
- 2025年綠色節(jié)能城市防洪堤壩施工與運(yùn)營(yíng)管理合同
- 2025年綠色材料供應(yīng)鏈中斷終止協(xié)議書(shū)
- 2025年智慧城市建設(shè)項(xiàng)目合同:大數(shù)據(jù)分析及系統(tǒng)集成服務(wù)
- 2025年老舊小區(qū)改造安置房交易稅費(fèi)核算及申報(bào)指南
- 2025年貴州貴陽(yáng)市水務(wù)環(huán)境集團(tuán)有限公司招聘27人筆試參考題庫(kù)附帶答案詳解(10套)
- 2025屆中國(guó)南方航空“明珠優(yōu)才管培生”全球招聘30人筆試參考題庫(kù)附帶答案詳解(10套)
- 原發(fā)性系統(tǒng)性淀粉樣變性的護(hù)理措施課件
- 《阿房宮賦》課件 統(tǒng)編版高中語(yǔ)文必修下冊(cè)
- 橋小腦角腫瘤護(hù)理查房
- 2025小學(xué)教師招聘考試試題及答案
- 2025年紀(jì)律作風(fēng)測(cè)試題及答案
- 2025江蘇蘇州昆山國(guó)創(chuàng)投資集團(tuán)有限公司第一期招聘17人筆試參考題庫(kù)附帶答案詳解版
- 安全生產(chǎn)網(wǎng)格化管理工作實(shí)施方案
- 入場(chǎng)安全教育培訓(xùn)
- 藝術(shù)設(shè)計(jì)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育專科)2025修訂
評(píng)論
0/150
提交評(píng)論