本章考核知識(shí)點(diǎn) :1、進(jìn)程的順序性與并發(fā)性 2、與時(shí)間有關(guān)的錯(cuò)誤 3、相關(guān)臨界區(qū) 4、進(jìn)程的互斥 5、進(jìn)程的同步 6、進(jìn)程通信 7、線程的概念
本章自學(xué)要求 :理解“進(jìn)程”是操作系統(tǒng)中的基本執(zhí)行單位,在多道程序設(shè)計(jì)的系統(tǒng)中往往同時(shí)有許多進(jìn)程存在,它們要輪流占用處理器。這些交叉執(zhí)行的并發(fā)進(jìn)程相互之間可能是無關(guān),也可能是相關(guān)的。當(dāng)并發(fā)進(jìn)程競爭共享資源時(shí)會(huì)出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤,因此,應(yīng)采用進(jìn)程同步與互斥手段使其合理使用共享資源,以保證系統(tǒng)安全。當(dāng)進(jìn)程間必須通過信息交換進(jìn)行協(xié)作時(shí),可用進(jìn)程通信的方式達(dá)到目的。
重點(diǎn) 是:分析與時(shí)間有關(guān)的錯(cuò)誤;用PV操作實(shí)現(xiàn)進(jìn)程的同步與互斥;用信箱實(shí)現(xiàn)進(jìn)程通信。
一、進(jìn)程的順序性與并發(fā)性( 領(lǐng)會(huì) )
有人說,在程序中不是有跳轉(zhuǎn)語句和重復(fù)語句,怎么就是順序執(zhí)行?注意,這里是指進(jìn)程在處理器中的執(zhí)行,因?yàn)樘幚砥髅看沃荒軋?zhí)行一個(gè)操作,因此每條指令必須按順序進(jìn)入CPU執(zhí)行,假使有一條指令是跳轉(zhuǎn)的,那么執(zhí)行本指令后,會(huì)取出跳轉(zhuǎn)目的地址的指令進(jìn)入CPU運(yùn)行,這個(gè)順序是程序規(guī)定的。所以對(duì)CPU而言,進(jìn)程總是按順序執(zhí)行。
進(jìn)程是一個(gè)程序在一個(gè)數(shù)據(jù)集合上的一次執(zhí)行,同一個(gè)程序和同一個(gè)數(shù)據(jù)集的運(yùn)行結(jié)果必然是相同的。這就是可再現(xiàn)性。
同時(shí)執(zhí)行并不是真的同時(shí),因?yàn)槿我粫r(shí)刻CPU中只能有一個(gè)進(jìn)程運(yùn)行。
1、進(jìn)程的 順序性 :任何進(jìn)程在順序的處理器上的執(zhí)行是嚴(yán)格按照順序進(jìn)行的,這就是進(jìn)程的順序性。當(dāng)一個(gè)進(jìn)程獨(dú)占處理器順序執(zhí)行時(shí),具有兩個(gè)特性: 一、封閉性 二、可再現(xiàn)性 .
2、進(jìn)程的 同時(shí)執(zhí)行 :在多道程序設(shè)計(jì)系統(tǒng)中,一個(gè)進(jìn)程的工作沒有全部完成之前,另一個(gè)進(jìn)程就可以開始工作,它們的執(zhí)行在時(shí)間上重迭的,我們把它們稱為是“可同時(shí)執(zhí)行的”。
3、進(jìn)程的 并發(fā)性 :若系統(tǒng)中存在一組可同時(shí)執(zhí)行的進(jìn)程,則說該組進(jìn)程具有并發(fā)性,并把可同時(shí)執(zhí)行的進(jìn)程稱為“并發(fā)進(jìn)程” .
4、并發(fā)進(jìn)程間的關(guān)系:并發(fā)進(jìn)程相互之間可能是 無關(guān)的 ,也可能是 交往的 .如果一個(gè)進(jìn)程的執(zhí)行不影響其他進(jìn)程的執(zhí)行,且與其他進(jìn)程的進(jìn)展情況無關(guān),即它們是各自獨(dú)立的,則這些并發(fā)進(jìn)程相互之間是無關(guān)的。如果一個(gè)進(jìn)程的執(zhí)行依賴其他進(jìn)程的執(zhí)行,則這些并發(fā)進(jìn)程之間是有交往的。
二、與時(shí)間有關(guān)的錯(cuò)誤( 簡單應(yīng)用 )
1、并發(fā)進(jìn)程的執(zhí)行速度取決于自身和進(jìn)程調(diào)度策略。一個(gè)進(jìn)程運(yùn)行時(shí)會(huì)被中斷,且斷點(diǎn)是不固定的,一個(gè)進(jìn)程被中斷后,哪個(gè)進(jìn)程可以運(yùn)行,被中斷的進(jìn)程什么時(shí)候占用處理器,是與進(jìn)程調(diào)度策略有關(guān)的。因此進(jìn)程的執(zhí)行速度不能由自己決定。
2、并發(fā)進(jìn)程交替使用共享資源時(shí)會(huì)出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤。 由于共享資源的原因,加上進(jìn)程并發(fā)執(zhí)行的隨機(jī)性,一個(gè)進(jìn)程對(duì)另一個(gè)進(jìn)程的影響是不可預(yù)測的。造成不正確的因素與進(jìn)程占用處理器的時(shí)間、執(zhí)行的速度以及外界的影響有關(guān)。因此被稱為與時(shí)間有關(guān)的錯(cuò)誤。
3、分析并發(fā)進(jìn)程中與時(shí)間有關(guān)的錯(cuò)誤,請(qǐng)理解教材上的例子。
三。相關(guān)臨界區(qū)( 領(lǐng)會(huì) )
1、 臨界區(qū) 的定義:并發(fā)進(jìn)程中與共享變量有關(guān)的程序段稱為“臨界區(qū)”
2、什么是 相關(guān)臨界區(qū) : 相關(guān)臨界區(qū)是指 并發(fā)進(jìn)程 中涉及到 相同變量 的那些 程序段 .
3、對(duì)相關(guān)臨界區(qū)的管理要求。
1) 一次最多讓一個(gè) 進(jìn)程在臨界區(qū)執(zhí)行,當(dāng)有進(jìn)程在臨界區(qū)時(shí)其他想進(jìn)入臨界區(qū)執(zhí)行的進(jìn)程必須等待。
2)任何一個(gè)進(jìn)入臨界區(qū)執(zhí)行的進(jìn)程必須在 有限的時(shí)間內(nèi)退出 臨界區(qū),即任何一個(gè)進(jìn)程都不應(yīng)該無限地逗留在自己的臨界區(qū)。
3)不能強(qiáng)迫一個(gè)進(jìn)程無限地等待進(jìn)入它的臨界區(qū),即有進(jìn)程退出時(shí)應(yīng) 讓一個(gè)等待進(jìn)入臨界區(qū)的進(jìn)程進(jìn)入 它的臨界區(qū)。
四、進(jìn)程的互斥( 綜合應(yīng)用 )
1、 進(jìn)程互斥 的含義:進(jìn)程的互斥是指當(dāng)有若干進(jìn)程都要使用某一共享資源時(shí),任何時(shí)刻最多只允許一個(gè)進(jìn)程去使用,其他要使用該資源的進(jìn)程必須等待,直到占用資源者釋放了該資源。 PV操作是兩個(gè)過程,由他們兩個(gè)來控制一個(gè)信號(hào)S,假設(shè)S是紅燈的個(gè)數(shù)。
每個(gè)進(jìn)程進(jìn)入臨界區(qū)前都要先執(zhí)行P操作。退出臨界區(qū)時(shí)執(zhí)行V操作。用下面的比喻很容易理解:
臨界區(qū)門前有棵樹(S)
用來掛紅燈
進(jìn)程想進(jìn)CPU的門
先得上樹取盞燈(調(diào)用一次P操作)
取下一個(gè)去敲門(S=S-1)
如果樹上沒燈取(S≤0)
樹說欠你一盞燈(S為負(fù)時(shí))
沒轍只好外邊排隊(duì)等( W ait (S))
得燈進(jìn)程續(xù)運(yùn)行
運(yùn)行完了要出門(調(diào)用一次V操作)
馬上還回一盞燈(S=S+1)
若有進(jìn)程在催債(S≤0)
放個(gè)進(jìn)去事完成( R elease (S))
2、實(shí)現(xiàn)進(jìn)程互斥的工具——PV操作。
PV操作 是由兩個(gè)操作,即P操作和V操作組成。P操作和V操作是兩個(gè)在信號(hào)量上進(jìn)行操作的過程。假定用S表示信號(hào)量則把這兩個(gè)過程記作P(S)和V(S),它們的定義如下: Procedue P(Var S: Semaphore); begin S:=S-1; if S 0 then W(S) end; {P} Procedue V(Var S: Semaphore); begin S:=S+1; if S =0 then R(S) end; {V}
為了確保PV操作自身的正確執(zhí)行,因此P(S)和V(S)操作中不可中斷,這種 不可被中斷的過程稱為“原語 ”。
3、用PV操作管理相關(guān)臨界區(qū)的一般形式
一個(gè)信號(hào)量與一組涉及共享變量的相關(guān)臨界區(qū)聯(lián)系起來,信號(hào)量的初值定為“1”
任何一個(gè)進(jìn)程要進(jìn)入臨界區(qū)前先調(diào)用P操作,執(zhí)行臨界區(qū)的操作后,退出臨界區(qū)時(shí)調(diào)用V操作。
由于信號(hào)量的初值為“1”,P操作起到了限制一次只有一個(gè)進(jìn)程進(jìn)入臨界區(qū)的作用,其余進(jìn)程欲進(jìn)入臨界區(qū)必須符合對(duì)臨界區(qū)管理的第一個(gè)要求,即一次最多讓一個(gè)進(jìn)程在臨界區(qū)執(zhí)行。進(jìn)程退出后執(zhí)行V操作,若有進(jìn)程在等待則釋放一個(gè)進(jìn)程,這樣就達(dá)到了對(duì)臨界區(qū)管理的第二個(gè)和第三個(gè)要求(即不能無限逗留也不能無限等待)。
4、分析進(jìn)程互斥問題并用PV操作實(shí)現(xiàn)進(jìn)程互斥。