第3章 處理器管理課件_第1頁(yè)
第3章 處理器管理課件_第2頁(yè)
第3章 處理器管理課件_第3頁(yè)
第3章 處理器管理課件_第4頁(yè)
第3章 處理器管理課件_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章處理器管理3.1多道程序設(shè)計(jì)3.2進(jìn)程概述3.3進(jìn)程的描述3.4進(jìn)程的創(chuàng)建和撤消3.5進(jìn)程隊(duì)列與管理3.6中斷技術(shù)3.7處理器調(diào)度3.1.1什么是多道程序設(shè)計(jì)1、多道程序設(shè)計(jì)和多道系統(tǒng)讓多個(gè)計(jì)算問(wèn)題同時(shí)裝入一個(gè)計(jì)算機(jī)系統(tǒng)的主存儲(chǔ)器并行執(zhí)行,這種程序設(shè)計(jì)技術(shù)稱為“多道程序設(shè)計(jì)”,這種計(jì)算機(jī)系統(tǒng)稱為“多道程序設(shè)計(jì)系統(tǒng)”或簡(jiǎn)稱“多道系統(tǒng)”。2、采用多道程序設(shè)計(jì)技術(shù)應(yīng)注意的問(wèn)題:(1)存儲(chǔ)保護(hù):在多道程序設(shè)計(jì)的系統(tǒng)中,必須提供必要的手段使得在主存儲(chǔ)器中的各道程序只能訪問(wèn)規(guī)定的區(qū)域,這樣的工作稱為存儲(chǔ)保護(hù)。實(shí)現(xiàn)存儲(chǔ)保護(hù)是為了避免各道程序的相互干擾,使得每道程序在執(zhí)行時(shí)都不會(huì)破壞其他各道的程序和數(shù)據(jù),特別是當(dāng)某道程序發(fā)生錯(cuò)誤時(shí)也不致于影響其它程序。(2)程序浮動(dòng)在多道程序設(shè)計(jì)系統(tǒng)中,要求每道程序存放在主存的任何區(qū)域都能正確執(zhí)行,甚至在執(zhí)行的過(guò)程中,當(dāng)程序的存儲(chǔ)區(qū)域被改變,也要求其執(zhí)行不受影響,即程序可以隨機(jī)地從主存的一個(gè)區(qū)域移動(dòng)到另一個(gè)區(qū)域,移動(dòng)后仍絲毫不影響它的執(zhí)行,這種技術(shù)稱為“程序浮動(dòng)”。3.1.1什么是多道程序設(shè)計(jì)(3)資源的分配和調(diào)度任何一個(gè)裝入主存儲(chǔ)器的程序僅當(dāng)占用了處理器后才能執(zhí)行。程序運(yùn)行時(shí)又可能要求使用外圍設(shè)備。如果多道程序設(shè)計(jì)的系統(tǒng)里只配置了一個(gè)處理器,則多個(gè)程序就要競(jìng)爭(zhēng)處理器。系統(tǒng)必須進(jìn)行合理的調(diào)度,決定哪一個(gè)程序可以占用處理器,哪一道程序應(yīng)該釋放處理器。如果一個(gè)程序要求使用另一個(gè)程序正在使用的外圍設(shè)備,則必須等待。當(dāng)外圍設(shè)備工作結(jié)束時(shí),由系統(tǒng)決定分配給哪個(gè)程序使用。所以,在多道程序設(shè)計(jì)的系統(tǒng)中必須對(duì)各資源按一定的策略進(jìn)行分配和調(diào)度。

3、實(shí)現(xiàn)多道程序設(shè)計(jì)的基本要求(1)采用“存儲(chǔ)保護(hù)”的方法保證各道程序互不侵犯;(2)采用“程序浮動(dòng)”技術(shù)讓程序能靈活地改變存放區(qū)域且能正確(3)必須對(duì)各種資源按一定的策略進(jìn)行分配和調(diào)度。3.1.2為什么要采用多道程序設(shè)計(jì)1、程序的順序執(zhí)行:一個(gè)計(jì)算問(wèn)題往往要依照一定的順序執(zhí)行,執(zhí)行的順序是由編制的程序確定的。3.1.2為什么要采用多道程序設(shè)計(jì)2、程序的并行執(zhí)行處理器與外圍設(shè)備并行工作3、多道并行執(zhí)行3.1.2為什么要采用多道程序設(shè)計(jì)3.1.2為什么要采用多道程序設(shè)計(jì)

顯然,對(duì)具有處理器與外設(shè)并行工作能力的計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),采用多道程序設(shè)計(jì)技術(shù)后,能提高整個(gè)系統(tǒng)的效率,具體表現(xiàn)在:(“單道”系統(tǒng)一次只允許一個(gè)作業(yè)裝入計(jì)算機(jī)的主存儲(chǔ)器運(yùn)行,在執(zhí)行時(shí)不能使輸入/輸出設(shè)備和處理器同時(shí)工作,也無(wú)法充分利用CPU。)

(1)提高了處理器的利用率;

(2)充分利用了外圍設(shè)備資源;

(3)發(fā)揮了處理器同外圍設(shè)備之間,以及外圍設(shè)備之間的并行工作能力。多道程序設(shè)計(jì)的實(shí)質(zhì)就是充分利用硬件的并行工作能力。所以,從總體上說(shuō),采用多道程序設(shè)計(jì)技術(shù)可有效地提高系統(tǒng)中資源的利用率,增加單位時(shí)間內(nèi)的算題量,從而提高系統(tǒng)的吞吐量。3.1.3采用多道程序設(shè)計(jì)應(yīng)注意的問(wèn)題

3.1.3采用多道程序設(shè)計(jì)應(yīng)注意的問(wèn)題

(2)并行工作道數(shù)跟系統(tǒng)效率不成正比從表面上看,只要增加并行工作道數(shù)就可以提高效率,但實(shí)際上并行工作的道數(shù)跟系統(tǒng)的效率是不成正比的,一是因?yàn)橹鞔婵臻g的大小限制了可同時(shí)裝入的程序數(shù)量;二是因?yàn)橥鈬O(shè)備的數(shù)量是一個(gè)制約因素;三是因?yàn)槎鄠€(gè)程序同時(shí)要求使用同一資源的情況會(huì)經(jīng)常發(fā)生。因此,并行工作道數(shù)的確定要根據(jù)系統(tǒng)配置的資源和用戶對(duì)資源的要求進(jìn)行綜合考慮。3.2進(jìn)程——概述

對(duì)多道并行執(zhí)行的程序來(lái)說(shuō),有時(shí)它要占用處理器運(yùn)行,有時(shí)要等待傳送信息,當(dāng)?shù)玫叫畔⒑笥挚衫^續(xù)執(zhí)行,一個(gè)程序的執(zhí)行又可能受到另一個(gè)程序的約束。所以,程序的執(zhí)行實(shí)際上是走走停停的。為了能正確反映程序執(zhí)行時(shí)的活動(dòng)規(guī)律和狀態(tài)變化,我們要引進(jìn)一個(gè)新概念——進(jìn)程,以便從變化的角度動(dòng)態(tài)地分析和研究程序的執(zhí)行。程序:程序是具有獨(dú)立功能的一組指令或一組語(yǔ)句的集合,它指出了處理器執(zhí)行操作的步驟。程序的執(zhí)行必須依賴于一個(gè)實(shí)體一一數(shù)據(jù)集。程序是靜態(tài)的。(火車(chē):交通工具)進(jìn)程:把一個(gè)程序在一個(gè)數(shù)據(jù)集上的一次執(zhí)行稱為一個(gè)進(jìn)程(Process)。進(jìn)行是動(dòng)態(tài)的,進(jìn)程包括程序和程序處理的對(duì)象(數(shù)據(jù)集),進(jìn)程實(shí)現(xiàn)了程序的功能。(列車(chē):正在行駛的火車(chē))列車(chē)中的人或物即為程序執(zhí)行時(shí)的數(shù)據(jù)集。3.2進(jìn)程——與程序的區(qū)別與聯(lián)系

程序是靜止的,進(jìn)程是動(dòng)態(tài)的。進(jìn)程包括程序和程序處理的對(duì)象(數(shù)據(jù)集),進(jìn)程能得到程序處理的結(jié)果。進(jìn)程和程序并非一一對(duì)應(yīng),一個(gè)程序運(yùn)行在不同的數(shù)據(jù)集上就構(gòu)成不同的進(jìn)程。一個(gè)進(jìn)程可以執(zhí)行一個(gè)或幾個(gè)程序;同一個(gè)程序可能由幾個(gè)進(jìn)程同時(shí)執(zhí)行。程序可以作為軟件資源長(zhǎng)期保存,而進(jìn)程是程序的一次執(zhí)行過(guò)程,是暫時(shí)的,只存在于其生命周期中??稍偃氤绦蛞粋€(gè)能被多個(gè)用戶同時(shí)調(diào)用的程序稱作“可再入”的程序??稍偃氲某绦蛴袃蓚€(gè)特性:

(1)可再入的程序必須是純代碼,在執(zhí)行時(shí)自身不改變。

(2)要求調(diào)用者提供工作區(qū),以保證程序能以同樣的方式為各種用戶服務(wù)3.2.2為什么要引入進(jìn)程

1.提高資源的利用率可以把一個(gè)計(jì)算問(wèn)題的程序分成多個(gè)獨(dú)立執(zhí)行的程序模塊后,它們之間只要相互合作就可完成共同的任務(wù)。怎樣才能使它們正確合作呢,操作系統(tǒng)把一個(gè)計(jì)算問(wèn)題中每個(gè)可獨(dú)立執(zhí)行的程序模塊的一次執(zhí)行看做一個(gè)進(jìn)程,如輸人進(jìn)程、處理進(jìn)程、打印進(jìn)程。通過(guò)進(jìn)程的同步(進(jìn)程同步的實(shí)現(xiàn)將在第7章中介紹)可使這些進(jìn)程正確合作,從而使處理器與外圍設(shè)備以及各種外圍設(shè)備之間有效地并行工作,提高資源的利用率。

2、正確反映共享程序被不同用戶調(diào)用時(shí)的活動(dòng)規(guī)律和狀態(tài)變化。通常把進(jìn)程分成系統(tǒng)進(jìn)程和用戶進(jìn)程,把完成操作系統(tǒng)功能的進(jìn)程稱為系統(tǒng)進(jìn)程,完成用戶功能的進(jìn)行稱為用戶進(jìn)程。3.2.3進(jìn)程的屬性

1、進(jìn)程的動(dòng)態(tài)性進(jìn)程是動(dòng)態(tài)的,它包含數(shù)據(jù)和運(yùn)行在數(shù)據(jù)集上的程序。

2、多個(gè)不同的進(jìn)程可以包含相同的程序進(jìn)程與程序并非是一一對(duì)應(yīng)的。一個(gè)程序運(yùn)行在不同的數(shù)據(jù)集上就構(gòu)成不同的進(jìn)程,能得到不同的結(jié)果。例如,一個(gè)編譯程序同時(shí)被多個(gè)用戶調(diào)用,各個(gè)用戶的源程序都是編譯程序的處理對(duì)象(看做編譯程序處理的數(shù)據(jù)集),編譯程序在各用戶的區(qū)域里為其編譯源程序,分別構(gòu)成了不同的進(jìn)程,能為各用戶生成不同的目標(biāo)程序。3.進(jìn)程可以并發(fā)執(zhí)行對(duì)于一個(gè)單處理器的系統(tǒng)來(lái)說(shuō),仍允許若干進(jìn)程同時(shí)執(zhí)行,即一個(gè)進(jìn)程的工作沒(méi)有完成之前,另一個(gè)進(jìn)程也可以開(kāi)始工作。這些同時(shí)執(zhí)行的進(jìn)程是輪流占用處理器的,把它們稱為是并發(fā)執(zhí)行的。4.進(jìn)程有三種基本狀態(tài)(1)等待態(tài)——等待某一事件(有些教材中,把等待態(tài)稱為阻塞態(tài))。(2)就緒態(tài)——等待系統(tǒng)分配處理器以便運(yùn)行。(3)運(yùn)行態(tài)——正在占用處理器運(yùn)行。進(jìn)程有如下的一些屬性3.2.3進(jìn)程的屬性(1)運(yùn)行態(tài)變成等待態(tài):由于等待外設(shè)傳輸信息、等待主存等資源分配或等待人工干預(yù)而引起的。(2)等待態(tài)變成就緒態(tài):等待的條件已滿足,只需分配到處理器后就能運(yùn)行。(3)運(yùn)行態(tài)變成就緒態(tài):時(shí)間片用完,或有更高優(yōu)先級(jí)的進(jìn)程來(lái)?yè)屨继幚砥鞯?;由于中斷而退出處理器的進(jìn)程可能變成就緒態(tài)(有時(shí)會(huì)變成等待態(tài))。(4)就緒態(tài)變成運(yùn)行態(tài):系統(tǒng)按某種策略選中就緒隊(duì)列中的一個(gè)進(jìn)程占用處理器,此時(shí),被選中的進(jìn)程就變成了運(yùn)行態(tài)。4.進(jìn)程有三種基本狀態(tài)3.2進(jìn)程——三個(gè)特性(1)動(dòng)態(tài)性:進(jìn)程是程序的一次執(zhí)行過(guò)程,在執(zhí)行過(guò)程中進(jìn)程狀態(tài)不斷發(fā)生變化(2)并發(fā)性:若干進(jìn)程是可同時(shí)執(zhí)行,它們輪流占用處理器交替運(yùn)行(3)異步性:進(jìn)程的執(zhí)行速度取決于自身與外界原因以及能占用處理器的時(shí)間,因此不可預(yù)知的速度向前推進(jìn)3.3.1進(jìn)程控制塊PCB(ProcessControlBlock)為了標(biāo)識(shí)進(jìn)程,記錄進(jìn)程執(zhí)行時(shí)的情況,操作系統(tǒng)在創(chuàng)建進(jìn)程時(shí)為每一個(gè)進(jìn)程設(shè)置一個(gè)進(jìn)程控制塊(PCB),一般情況下進(jìn)程控制塊應(yīng)包含四類信息:(1)標(biāo)識(shí)信息:每個(gè)進(jìn)程都有一個(gè)唯一的標(biāo)識(shí)符,用以標(biāo)識(shí)進(jìn)程的存在和區(qū)分各個(gè)進(jìn)程。(2)說(shuō)明信息:用于說(shuō)明本進(jìn)程的情況,其中“進(jìn)程狀態(tài)”是指進(jìn)程的當(dāng)前狀態(tài)(運(yùn)行、就緒、等待)。若是等待狀態(tài)需進(jìn)一步說(shuō)明具體的等待原因?!斑M(jìn)程程序存放位置”指出該進(jìn)程存放在哪里,“進(jìn)程數(shù)據(jù)存放位置”指出進(jìn)程執(zhí)行時(shí)的工作區(qū),用來(lái)存放被處理的數(shù)據(jù)集和處理結(jié)果。(3)現(xiàn)場(chǎng)信息:當(dāng)進(jìn)程由于某種原因讓出處理器時(shí),把與處理器有關(guān)的各種現(xiàn)場(chǎng)信息保留下來(lái),以便該進(jìn)程在重新獲得處理器時(shí)能把被保留的現(xiàn)場(chǎng)信息重新置入處理器的相關(guān)寄存器中繼續(xù)執(zhí)行。通常被保留的信息的通用寄存器的內(nèi)容、控制寄存器內(nèi)容、以及記錄有關(guān)系統(tǒng)狀態(tài)和進(jìn)程暫停執(zhí)行時(shí)斷點(diǎn)的程序狀態(tài)字寄存器內(nèi)容等。(4)管理信息:對(duì)進(jìn)程進(jìn)行管理和調(diào)度的信息。通常用進(jìn)程優(yōu)先級(jí)指出進(jìn)程可以占用處理器的先后次序,“隊(duì)列指針”指出處于同一狀態(tài)的另一個(gè)進(jìn)程的進(jìn)程控制塊地址,這樣就可把具有相同狀態(tài)的進(jìn)程鏈接起來(lái),便于對(duì)進(jìn)程實(shí)施管理。3.3.1進(jìn)程控制塊PCB(ProcessControlBlock)3.4進(jìn)程的創(chuàng)建與撤銷

1、進(jìn)程的創(chuàng)建當(dāng)系統(tǒng)為一個(gè)程序分配一個(gè)工作區(qū)(存放程序處理的數(shù)據(jù)集)和建立一個(gè)進(jìn)程控制塊后就創(chuàng)建一個(gè)進(jìn)程。進(jìn)程控制塊是進(jìn)程存在的標(biāo)識(shí),所以,每創(chuàng)建一個(gè)進(jìn)程就要建立一個(gè)進(jìn)程控制塊。一個(gè)進(jìn)程剛被創(chuàng)建的進(jìn)程,它的初始態(tài)為就緒態(tài)。操作系統(tǒng)依據(jù)進(jìn)程控制塊對(duì)進(jìn)程進(jìn)行控制和管理,把進(jìn)程執(zhí)行時(shí)的不斷變化情況也記錄在進(jìn)程控制塊中。2、進(jìn)程的撤消當(dāng)一個(gè)進(jìn)程完成了特定的任務(wù)后,系統(tǒng)收回這個(gè)進(jìn)程所占的工作區(qū)和取消該進(jìn)程的進(jìn)程控制塊,就撤消了該進(jìn)程。操作系統(tǒng)中往往設(shè)計(jì)一些能完成特定功能且不可中斷的過(guò)程(稱為原語(yǔ))。(1)創(chuàng)建原語(yǔ):為一個(gè)程序分配一個(gè)工作區(qū)和建立一個(gè)進(jìn)程控制塊,并置該進(jìn)程為就緒狀態(tài)(2)撤銷原語(yǔ):一個(gè)進(jìn)程完成工作后,收回它的工作區(qū)和進(jìn)程控制塊(3)阻塞原語(yǔ):進(jìn)程運(yùn)行過(guò)程中發(fā)生等待事件時(shí),把進(jìn)程狀態(tài)改為等待態(tài)(4)喚醒原語(yǔ):當(dāng)進(jìn)程等待的事件發(fā)生時(shí),把進(jìn)程的狀態(tài)改為就緒態(tài)3.5進(jìn)程隊(duì)列與管理

1.進(jìn)程隊(duì)列把處于相同狀態(tài)的進(jìn)程鏈接在一起,稱為“進(jìn)程隊(duì)列”。就緒隊(duì)列和等待隊(duì)列是兩個(gè)基本的進(jìn)程隊(duì)列。

·就緒隊(duì)列:由若干就緒進(jìn)程按一定次序鏈接起來(lái)的隊(duì)列。

·等待隊(duì)列:等待資源或等待某些事件的進(jìn)程排成的隊(duì)列。2.進(jìn)程的隊(duì)列管理一個(gè)進(jìn)程排入到指定的隊(duì)列中稱為入隊(duì)。一個(gè)進(jìn)程從所在的隊(duì)列中退出稱為出隊(duì)。系統(tǒng)中負(fù)責(zé)進(jìn)程入隊(duì)和出隊(duì)的工作稱為隊(duì)列管理。無(wú)論單向鏈接還是雙向鏈接,為了解決入隊(duì)和出隊(duì)問(wèn)題,首先都要找到該隊(duì)列的隊(duì)首指針,沿鏈找出要入隊(duì)進(jìn)程的插入位置,或找出要出隊(duì)的進(jìn)程,然后修改本進(jìn)程的指針(入隊(duì)情況)和相鄰進(jìn)程的有關(guān)指針值,有時(shí)要修改隊(duì)首指針。3.5進(jìn)程隊(duì)列與管理前一進(jìn)程控制塊中的指針值為它的下一個(gè)進(jìn)程的進(jìn)程控制塊地址。隊(duì)列中最后一個(gè)進(jìn)程的進(jìn)程控制塊中的指針值可以設(shè)為“0”,此外,系統(tǒng)還為每個(gè)隊(duì)列設(shè)置一個(gè)隊(duì)首指針,指出隊(duì)列的第一個(gè)進(jìn)程的進(jìn)程控制塊地址。3.5進(jìn)程隊(duì)列與管理在雙向隊(duì)列中設(shè)置兩個(gè)指針:前向指針和后向指針,分別指出前一個(gè)和后一個(gè)進(jìn)程的進(jìn)程控制塊地址,最后一個(gè)進(jìn)程的進(jìn)程控制塊中的后向指針為“0”,隊(duì)列中第一個(gè)進(jìn)程的進(jìn)程控制塊中的前向指針值為“0”,此外,系統(tǒng)還為每個(gè)隊(duì)列設(shè)置一個(gè)隊(duì)首指針,指出隊(duì)列的第一個(gè)和最后一個(gè)進(jìn)程的進(jìn)程控制塊地址,以便雙向搜索。3.5進(jìn)程隊(duì)列與管理1.隊(duì)首進(jìn)程出隊(duì)隊(duì)首進(jìn)程出隊(duì)時(shí),只要把該進(jìn)程的后繼進(jìn)程的前向指針值修改為“0”,把出隊(duì)進(jìn)程的后向指針值送入隊(duì)首指針單元中。這樣.原先在隊(duì)列中的第二個(gè)進(jìn)程就成了隊(duì)首,而原來(lái)的隊(duì)首進(jìn)程就與隊(duì)列脫鉤了。2.非隊(duì)首(或隊(duì)尾)進(jìn)程出隊(duì)如果要出隊(duì)的進(jìn)程既不是隊(duì)首進(jìn)程又不是隊(duì)尾進(jìn)程,則可以假定進(jìn)程B要出隊(duì),進(jìn)程B的前一個(gè)進(jìn)程是進(jìn)程A,而后一個(gè)進(jìn)程是進(jìn)程C。這樣,進(jìn)程B的出隊(duì)過(guò)程是:把進(jìn)程B的前向指針值送入進(jìn)程C的前向指針位置,把進(jìn)程B的后向指針值送入進(jìn)程A的后向指針位置。此時(shí),進(jìn)程A的后向指針就指向進(jìn)程C,而進(jìn)程C的前向指針就指向進(jìn)程A,進(jìn)程B就從隊(duì)列中退了出來(lái)。3.5進(jìn)程隊(duì)列與管理3.隊(duì)尾進(jìn)程出隊(duì)按照隊(duì)尾進(jìn)程的前向指針值找到它的前一個(gè)進(jìn)程的進(jìn)程控制塊,把該進(jìn)程的后向指針值修改為“0”,成為當(dāng)前的隊(duì)尾進(jìn)程。同時(shí)把出隊(duì)進(jìn)程的前向指針值送入隊(duì)首指針的尾指針位置,這樣原先的隊(duì)尾進(jìn)程就退出了隊(duì)列,且隊(duì)首指針中的尾指針指向了當(dāng)前的隊(duì)尾進(jìn)程。

入隊(duì)如果某進(jìn)程要加入到一個(gè)隊(duì)列中去,若隊(duì)列原先是空的,則入隊(duì)的進(jìn)程就成為該隊(duì)列的第一個(gè)進(jìn)程;若原隊(duì)列非空,則應(yīng)先找到入隊(duì)進(jìn)程應(yīng)插入的位置,再根據(jù)鏈接要求修改相鄰進(jìn)程的隊(duì)列指針。進(jìn)程入隊(duì)時(shí),根據(jù)應(yīng)插入的位置也可分成三種情況:從隊(duì)首入隊(duì)成為新的隊(duì)首進(jìn)程,從隊(duì)尾入隊(duì)成為新的隊(duì)尾進(jìn)程,插入到隊(duì)列中某兩個(gè)進(jìn)程之問(wèn)。3.6中斷技術(shù)——中斷和中斷響應(yīng)1.中斷的定義當(dāng)一個(gè)進(jìn)程占有處理器運(yùn)行時(shí),由于自身或外界的原因(如出現(xiàn)了某種事件)使運(yùn)行被打斷,此時(shí),操作系統(tǒng)將處理出現(xiàn)的事件,到適當(dāng)?shù)臅r(shí)候再讓被打斷的進(jìn)程繼續(xù)運(yùn)行,這個(gè)過(guò)程稱為“中斷”。

·中斷源:引起中斷的事件。

·中斷處理程序:對(duì)出現(xiàn)的事件進(jìn)行處理的程序。2.中斷的類型從中斷事件的性質(zhì)出發(fā),中斷可以分為兩大類:①?gòu)?qiáng)迫性中斷事件:不是正在運(yùn)行的進(jìn)程所期待的,而是由于外部的請(qǐng)求或某些意外事故而迫使正在運(yùn)行的進(jìn)程被打斷。它包括硬件故障中斷、程序性中斷、外部中斷和輸入輸出中斷等。

3.6中斷技術(shù)——中斷和中斷響應(yīng)

①?gòu)?qiáng)迫性中斷事件:硬件故障中斷:由計(jì)算機(jī)硬件故障造成的,如電源電壓超出規(guī)定范圍,主存儲(chǔ)器讀寫(xiě)時(shí)發(fā)生校驗(yàn)錯(cuò)等。程序性中斷:由執(zhí)行到程序的某條指令時(shí)出現(xiàn)的問(wèn)題引起的中斷,如,使用了非法操作碼,地址越界,除數(shù)為“0”,定點(diǎn)溢出等。外部中斷:由各種外部事件引起的中斷,如用戶從終端上輸入了一條命令,設(shè)備的定時(shí)時(shí)鐘時(shí)間已到,操作員從控制臺(tái)上發(fā)出控制信號(hào)等。輸入輸出中斷:由輸入/輸出控制系統(tǒng)的事件所引起的中斷,如外圍設(shè)備在執(zhí)行信息傳輸操作時(shí)出現(xiàn)了故障,外圍設(shè)備完成了一次信息的傳輸操作等。強(qiáng)迫性中斷是隨機(jī)的,斷點(diǎn)可能會(huì)發(fā)生在任何位置。②自愿性中斷事件:它是由正在運(yùn)行的進(jìn)程執(zhí)行一條訪管指令用以請(qǐng)求系統(tǒng)調(diào)用而引起的中斷,這種中斷也稱“訪管中斷”。自愿性中斷的斷點(diǎn)是確定的

3.中斷響應(yīng)處理器每執(zhí)行一條指令后,硬件的中斷裝置將立即檢查有無(wú)中斷事件發(fā)生。若有中斷事件發(fā)生,則暫停現(xiàn)行進(jìn)程的執(zhí)行,而讓操作系統(tǒng)的中斷處理程序占用處理器,這一過(guò)程稱為“中斷響應(yīng)”。在中斷響應(yīng)過(guò)程中,中斷裝置要做以下3項(xiàng)工作:

(1)檢查是否有中斷事件發(fā)生判別自愿性中斷,只要檢查操作碼是否為“訪管指令”。判別強(qiáng)迫性中斷,要檢查中斷寄存器的內(nèi)容,若為O,則無(wú)中斷;若非0,則表示有中斷事件發(fā)生。

(2)若有中斷發(fā)生,保護(hù)斷點(diǎn)信息每個(gè)程序都有一個(gè)程序狀態(tài)字(PSW),用于表示程序的執(zhí)行狀態(tài),如基本狀態(tài)、中斷碼和中斷屏蔽位等內(nèi)容。處理器設(shè)有一個(gè)“程序狀態(tài)字寄存器”,用來(lái)存放當(dāng)前運(yùn)行程序的PSW。程序狀態(tài)字可分為當(dāng)前PSW、舊:PSW和新PSW。當(dāng)出現(xiàn)中斷事件后,把被中斷進(jìn)程的PSW保存為舊PSW之后,即完成了斷點(diǎn)信息保護(hù)。

(3)啟動(dòng)操作系統(tǒng)的中斷處理程序中斷裝置通過(guò)“交換PSW”過(guò)程完成此項(xiàng)任務(wù),即把出現(xiàn)的中斷事件存放到當(dāng)前的PSW中斷碼位置,然后把該“當(dāng)前PWS”保存為“舊PSW”,最后再把操作系統(tǒng)中斷處理程序的“新PSW”送到程序狀態(tài)字寄存器中,成為“當(dāng)前PSW”送入程序狀態(tài)字寄存器,處理器就按這個(gè)新PSW控制處理該事件的中斷處理程序的執(zhí)行。

3.6中斷技術(shù)——中斷和中斷響應(yīng)4.中斷處理操作系統(tǒng)的中斷處理程序?qū)χ袛嗍录M(jìn)行處理時(shí),大致要做3方面的工作:

(1)保護(hù)被中斷進(jìn)程的現(xiàn)場(chǎng)信息把中斷時(shí)的通用、控制寄存器內(nèi)容及舊PSW保存到被中斷進(jìn)程的進(jìn)程控制塊中。

(2)分析中斷原因根據(jù)舊PSW的中斷碼可知發(fā)生中斷的具體原因。

(3)處理發(fā)生的中斷事件中斷處理程序在分析引起中斷的原因后,要對(duì)其分別處理,在有些情況下把具體的處理交給適當(dāng)?shù)睦谐绦蚰K去做。3.6中斷技術(shù)——中斷和中斷響應(yīng)3.6中斷技術(shù)——中斷優(yōu)先級(jí)和中斷屏蔽1.中斷優(yōu)先級(jí)中斷裝置按預(yù)定的順序來(lái)響應(yīng)同時(shí)出現(xiàn)的中斷事件,這個(gè)預(yù)定的順序稱為“中斷優(yōu)先級(jí)”。中斷優(yōu)先級(jí)是按中斷事件的重要性和緊迫程度來(lái)確定的,是在硬件設(shè)計(jì)時(shí)固定的。一般情況下,優(yōu)先級(jí)的高低順序依次為:硬件故障中斷、自愿性中斷、程序性中斷、外部中斷和輸入輸出中斷。2.中斷的屏蔽為了防止優(yōu)先級(jí)低的中斷事件處理打斷優(yōu)先級(jí)高的中斷事件的處理,以及避免復(fù)雜的中斷引起多重嵌套處理,計(jì)算機(jī)系統(tǒng)采用了中斷屏蔽技術(shù),以程序狀態(tài)字中的中斷屏蔽標(biāo)志位的設(shè)置封鎖相應(yīng)事件的響應(yīng)。通常,中斷處理程序只屏蔽比自己級(jí)別低的事件,并且不能屏蔽自愿性中斷。3.7處理器調(diào)度采用批處理操作系統(tǒng)和分時(shí)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)都屬于多道程序設(shè)計(jì)系統(tǒng)。在這樣的系統(tǒng)中,往往同時(shí)有多個(gè)計(jì)算問(wèn)題(作業(yè))請(qǐng)求處理。它們都因要使用系統(tǒng)資源而會(huì)發(fā)生競(jìng)爭(zhēng)。因此,如何對(duì)資源進(jìn)行管理和分配是操作系統(tǒng)中的一個(gè)重要問(wèn)題。處理器調(diào)度擔(dān)負(fù)著對(duì)處理器的分配工作,它將決定誰(shuí)能先占用處理器,一次能占用處理器多長(zhǎng)時(shí)問(wèn)。我們把在批處理操作系統(tǒng)控制下的作業(yè)稱批處理作業(yè),把若干個(gè)用戶作業(yè)組織成作業(yè)流,讓它們成批進(jìn)入計(jì)算機(jī)系統(tǒng),且把它們存放在磁盤(pán)上的專用區(qū)域中等待處理。在操作系統(tǒng)中,我們把磁盤(pán)上用來(lái)存放作業(yè)信息的專用區(qū)域稱為輸入井,把在輸入井中等待處理的作業(yè)稱為后備作業(yè)。3.7處理器調(diào)度

任何作業(yè)只有被裝入主存儲(chǔ)器后才能執(zhí)行。當(dāng)輸入井中等待處理的作業(yè)不能全部同時(shí)被裝入主存儲(chǔ)器時(shí),應(yīng)怎樣從中選擇一部分作業(yè)呢?這就必須根據(jù)系統(tǒng)設(shè)計(jì)時(shí)確定的允許并行工作的道數(shù)和一定的規(guī)則(或稱算法),從后備作業(yè)中選取若干作業(yè),讓它們進(jìn)入主存儲(chǔ)器,使它們有機(jī)會(huì)去獲得處理器執(zhí)行。我們把這項(xiàng)從輸入井中選取后備作業(yè)裝入主存儲(chǔ)器的工作稱為作業(yè)調(diào)度。不同的計(jì)算機(jī)系統(tǒng)可以采用不同的規(guī)則來(lái)進(jìn)行作業(yè)調(diào)度。但不管怎樣都必須遵循作業(yè)調(diào)度的下列必要條件:系統(tǒng)現(xiàn)有的尚未分配的資源可以滿足被選作業(yè)的資源要求。只有這樣才能避免進(jìn)入主存儲(chǔ)器的作業(yè)因得不到資源而無(wú)法執(zhí)行的現(xiàn)象,才能保證系統(tǒng)有較高的吞吐能力。作業(yè)調(diào)度選中了一個(gè)作業(yè)且把它裝入主存儲(chǔ)器時(shí),就為該作業(yè)創(chuàng)建一個(gè)用戶進(jìn)程。若有多個(gè)作業(yè)被裝入主存儲(chǔ)器,則就創(chuàng)建了多個(gè)用戶進(jìn)程。這些進(jìn)程的初始狀態(tài)都為“就緒態(tài)”。3.8處理器調(diào)度

在單處理器的計(jì)算機(jī)系統(tǒng)中,每一時(shí)刻只能讓一個(gè)進(jìn)程占用處理器?,F(xiàn)有多個(gè)進(jìn)程都要競(jìng)爭(zhēng)處理器,怎么辦呢?這時(shí)又必須按照一定的規(guī)則從就緒進(jìn)程中選取一個(gè)進(jìn)程,讓它占用處理器。我們把這項(xiàng)從就緒進(jìn)程中選取一個(gè)進(jìn)程,讓它占用處理器的工作稱為進(jìn)程調(diào)度。進(jìn)程占用處理器時(shí),由于各種原因會(huì)引起進(jìn)程狀態(tài)的變化而讓出處理器。于是進(jìn)程調(diào)度可以再?gòu)木途w進(jìn)程中選一個(gè)進(jìn)程運(yùn)行,使每個(gè)被裝入主存儲(chǔ)器的作業(yè)都能有機(jī)會(huì)占用處理器執(zhí)行。當(dāng)一個(gè)作業(yè)完成工作而結(jié)束時(shí),作業(yè)調(diào)度又可以從后備作業(yè)中選取作業(yè)裝入主存儲(chǔ)器且為其創(chuàng)建一個(gè)進(jìn)程,當(dāng)它被進(jìn)程調(diào)度選中時(shí)便可運(yùn)行。所以,作業(yè)調(diào)度與進(jìn)程調(diào)度相互配合能實(shí)現(xiàn)多道作業(yè)的并行執(zhí)行。對(duì)任何一個(gè)作業(yè)來(lái)說(shuō),只有先被作業(yè)調(diào)度選中才有機(jī)會(huì)去競(jìng)爭(zhēng)處理器,然而僅當(dāng)被進(jìn)程調(diào)度選中時(shí)才能占用處理器。3.7處理器調(diào)度——作業(yè)和進(jìn)程的關(guān)系作業(yè)調(diào)度與進(jìn)程調(diào)度的關(guān)系處理器調(diào)度我們把在分時(shí)系統(tǒng)控制下的作業(yè)稱為終端作業(yè)。當(dāng)終端用戶與系統(tǒng)在線路上連接后,用戶輸入“注冊(cè)”命令,向操作系統(tǒng)提出執(zhí)行一個(gè)作業(yè)的要求。操作系統(tǒng)接到命令后,首先查看當(dāng)前正在工作的終端個(gè)數(shù)。如果正在工作的終端數(shù)已達(dá)到系統(tǒng)可以承受的最大數(shù),則就讓該用戶等待。如果當(dāng)前正在工作的終端數(shù)未達(dá)到最大數(shù),則系統(tǒng)識(shí)別用戶,然后請(qǐng)用戶輸入口令。若口令正確,則再詢問(wèn)該作業(yè)對(duì)系統(tǒng)的資源要求(主存量、外設(shè)等)。若資源能滿足,則接收該終端用戶的作業(yè)。所以,終端用戶的注冊(cè)過(guò)程實(shí)際上可看做對(duì)終端作業(yè)的作業(yè)調(diào)度。操作系統(tǒng)為注冊(cè)成功的終端作業(yè)創(chuàng)建一個(gè)進(jìn)程。當(dāng)有多個(gè)終端作業(yè)進(jìn)入系統(tǒng)時(shí),仍由進(jìn)程調(diào)度來(lái)決定當(dāng)前可占用處理器的進(jìn)程。當(dāng)終端作業(yè)執(zhí)行結(jié)束,不再需要使用終端時(shí),用戶可輸入“注銷”命令請(qǐng)求退出系統(tǒng)。系統(tǒng)就收回該用戶所占的資源,且在終端上顯示“退出時(shí)間”、“使用系統(tǒng)時(shí)間”等,以使用戶了解應(yīng)付的費(fèi)用。這時(shí),如果有用戶在等待使用系統(tǒng),則可接收一個(gè)新的終端作業(yè)。批處理作業(yè)的調(diào)度算法·公平牲——對(duì)用戶公平,不能無(wú)故或無(wú)限制地拖延一個(gè)作業(yè)的執(zhí)行?!て胶赓Y源使用——盡可能地使系統(tǒng)資源都處于忙碌?!O大的流量——在單位時(shí)間內(nèi)為盡可能多的作業(yè)服務(wù),保證計(jì)算機(jī)系統(tǒng)的吞吐能力。一個(gè)理想的調(diào)度算法應(yīng)該是既提高系統(tǒng)效率又能使進(jìn)入系統(tǒng)的作業(yè)及時(shí)得到計(jì)算結(jié)果。兩個(gè)在批處理處理系統(tǒng)中常用的衡量指標(biāo):作業(yè)調(diào)度算法——先來(lái)先服務(wù)算法原則:按照作業(yè)進(jìn)入輸入井的先后次序來(lái)挑選作業(yè)先進(jìn)入的、資源能滿足的作業(yè)優(yōu)先被挑選。例題:有一個(gè)多道程序設(shè)計(jì)系統(tǒng),設(shè)供用戶使用的主存為100KB①②③④⑤作業(yè)調(diào)度算法——先來(lái)先服務(wù)算法執(zhí)行順序:A-B-D-C-E作業(yè)調(diào)度算法——計(jì)算時(shí)間短的作業(yè)優(yōu)先算法用戶對(duì)自己的作業(yè)計(jì)算時(shí)間預(yù)先作一個(gè)估計(jì),作業(yè)調(diào)度時(shí),優(yōu)先選擇計(jì)算時(shí)間且資源能得到滿足的作業(yè)。能降低作業(yè)的平均周轉(zhuǎn)時(shí)間,提高系統(tǒng)的吞吐能力。作業(yè)名進(jìn)入輸入井時(shí)間需要計(jì)算時(shí)間(分鐘)主存需求量(KB)裝入主存時(shí)間開(kāi)始執(zhí)行時(shí)間執(zhí)行結(jié)束時(shí)間周轉(zhuǎn)時(shí)間A10.142(0.7)1510.110.110.80.7B10.330(0.5)6010.310.811.31.0C10.524(0.4)5011.311.912.31.8D10.624(0.4)1010.611.311.71.1E10.712(0.2)2011.311.711.91.2平均周轉(zhuǎn)時(shí)間:(0.7+1.0+1.8+1.1+1.2)/5=1.16執(zhí)行順序:A-B-D-E-C作業(yè)調(diào)度算法——響應(yīng)比高者優(yōu)先算法定義:響應(yīng)比=等待時(shí)間/計(jì)算時(shí)間采用高響應(yīng)比者優(yōu)先算法時(shí),必須先計(jì)算出輸入井中資源能得到滿足的所有作業(yè)的響應(yīng)比,然后從中選擇響應(yīng)比最高者優(yōu)先裝入主存。例如,某單道程序設(shè)計(jì)系統(tǒng)中有三個(gè)作業(yè)A、B、C,它們到達(dá)輸入井的時(shí)問(wèn)及需要的計(jì)算時(shí)間如表所示。作業(yè)名到達(dá)輸入井時(shí)間需計(jì)算時(shí)間(小時(shí))A8:501.5B9:000.4C9:301.0

由于進(jìn)行作業(yè)調(diào)度時(shí)間是在作業(yè)全部到達(dá)輸入井后,即在9:30開(kāi)始進(jìn)行調(diào)度,此時(shí)作業(yè)A、B、C分別等待了40分鐘、30分鐘和0分鐘,因而響應(yīng)比為:A:40/90=4/9,B:30/24=5/4,C:0/60=0B的響應(yīng)比最高,優(yōu)先選擇B裝入主存儲(chǔ)器執(zhí)行。作業(yè)B結(jié)束后,重新計(jì)算響應(yīng)比:A:64/90=32/45,B:24/60=2/5作業(yè)A的響應(yīng)比高于作業(yè)C的響應(yīng)比,選擇A執(zhí)行作業(yè)名到達(dá)輸入井時(shí)間需計(jì)算時(shí)間(小時(shí))A8:501.5B9:000.4C9:301.0作業(yè)調(diào)度算法——響應(yīng)比高者優(yōu)先算法作業(yè)調(diào)度算法——優(yōu)先級(jí)調(diào)度與均衡調(diào)度算法

優(yōu)先級(jí)調(diào)度算法:為每一個(gè)作業(yè)確定一個(gè)優(yōu)先級(jí),資源能滿足且優(yōu)先級(jí)高的作業(yè)優(yōu)先被選取,當(dāng)幾個(gè)作業(yè)有相同的優(yōu)先級(jí)時(shí),再按照先來(lái)先服務(wù)的原則進(jìn)行調(diào)度。怎樣確定作業(yè)的優(yōu)先級(jí)呢?一種方法是由用戶來(lái)提出自己作業(yè)的優(yōu)先級(jí)。這種方法會(huì)造成有的用戶為了自己的作業(yè)盡快被選中執(zhí)行而盲目提高作業(yè)的優(yōu)先級(jí)。為了防止這種現(xiàn)象,系統(tǒng)可規(guī)定優(yōu)先級(jí)越高收費(fèi)也越高,以作限制。另一種方法是由操作系統(tǒng)根據(jù)作業(yè)的緩急程度、作業(yè)估計(jì)的計(jì)算時(shí)間、作業(yè)的類型、資源申請(qǐng)情況等因素綜合考慮。分析這些因素在實(shí)現(xiàn)系統(tǒng)沒(méi)計(jì)目標(biāo)中的影響,決定各因數(shù)的比例,綜合得出作業(yè)的優(yōu)先級(jí)。有的系統(tǒng)還可以根據(jù)作業(yè)在輸入井中的等待時(shí)間動(dòng)態(tài)地改變其優(yōu)先級(jí),以縮短作業(yè)的周轉(zhuǎn)時(shí)問(wèn)和平均周轉(zhuǎn)時(shí)問(wèn)。

均衡調(diào)度算法根據(jù)作業(yè)對(duì)資源的要求進(jìn)行分類,作業(yè)調(diào)度從各類作業(yè)中去挑選,盡可能地使得使用不同資源的作業(yè)同時(shí)執(zhí)行。這樣不僅可使系統(tǒng)的各種資源都在被使用,而且可以減少作業(yè)等待使用相同資源的時(shí)間,從而加快作業(yè)的執(zhí)行。進(jìn)程調(diào)度——先來(lái)先服務(wù)算法進(jìn)程調(diào)度的職責(zé)就是按選定的進(jìn)程調(diào)度算法從就緒隊(duì)列中選擇一個(gè)進(jìn)程,讓它占用處理器。常用的進(jìn)程調(diào)度算法有以下4種:

(1)先來(lái)先服務(wù)調(diào)度算法該算法按進(jìn)程進(jìn)入就緒隊(duì)列的先后次序選擇可以占用處理器的進(jìn)程。當(dāng)運(yùn)行時(shí)間長(zhǎng)的進(jìn)程先就緒時(shí),系統(tǒng)效率會(huì)受到影響。例:進(jìn)程名需要處理器時(shí)間執(zhí)行順序等待時(shí)間執(zhí)行順序等待時(shí)間A3msA0msC0msB3msB3msB24msC24msC6msA27ms進(jìn)程調(diào)度算法——優(yōu)先數(shù)調(diào)度算法(2)優(yōu)先數(shù)調(diào)度算法對(duì)每個(gè)進(jìn)程都確定一個(gè)優(yōu)先數(shù),該算法總是讓優(yōu)先數(shù)最高的進(jìn)程先使用處理器;然后再對(duì)具有相同優(yōu)先數(shù)的進(jìn)程按先來(lái)先服務(wù)的次序分配處理器。系統(tǒng)常以任務(wù)的緊迫性和系統(tǒng)效率等因素確定進(jìn)程的優(yōu)先數(shù)。進(jìn)程的優(yōu)先數(shù)可以是固定的,也可以隨進(jìn)程的執(zhí)行過(guò)程動(dòng)態(tài)變化。一個(gè)高優(yōu)先數(shù)的進(jìn)程占用處理器后,系統(tǒng)處理該進(jìn)程時(shí)有兩種方法:一是“非搶占式”,另一種是“可搶占式”。前者使此進(jìn)程占用處理器后一直運(yùn)行到結(jié)束,除非本身主動(dòng)讓出處理器

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論