第七章進(jìn)程同步及進(jìn)程通信_(tái)第1頁
第七章進(jìn)程同步及進(jìn)程通信_(tái)第2頁
第七章進(jìn)程同步及進(jìn)程通信_(tái)第3頁
第七章進(jìn)程同步及進(jìn)程通信_(tái)第4頁
第七章進(jìn)程同步及進(jìn)程通信_(tái)第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第七章第七章 進(jìn)程同步與進(jìn)程通信進(jìn)程同步與進(jìn)程通信v本章考核知識(shí)點(diǎn):本章考核知識(shí)點(diǎn):1、進(jìn)程的順序性與并發(fā)性、進(jìn)程的順序性與并發(fā)性 2、與、與時(shí)間有關(guān)的錯(cuò)誤時(shí)間有關(guān)的錯(cuò)誤3、相關(guān)臨界區(qū)、相關(guān)臨界區(qū) 4、進(jìn)程的互斥、進(jìn)程的互斥 5、進(jìn)程的同步進(jìn)程的同步 6、進(jìn)程通信、進(jìn)程通信 7、線程的概念、線程的概念 v本章自學(xué)要求:理解本章自學(xué)要求:理解“進(jìn)程進(jìn)程”是操作系統(tǒng)中的基本是操作系統(tǒng)中的基本執(zhí)行單位,在多道程序設(shè)計(jì)的系統(tǒng)中往往同時(shí)有許執(zhí)行單位,在多道程序設(shè)計(jì)的系統(tǒng)中往往同時(shí)有許多進(jìn)程存在,它們要輪流占用處理器。這些交叉執(zhí)多進(jìn)程存在,它們要輪流占用處理器。這些交叉執(zhí)行的并發(fā)進(jìn)程相互之間可能是無關(guān),也

2、可能是相關(guān)行的并發(fā)進(jìn)程相互之間可能是無關(guān),也可能是相關(guān)的。當(dāng)并發(fā)進(jìn)程競爭共享資源時(shí)會(huì)出現(xiàn)與時(shí)間有關(guān)的。當(dāng)并發(fā)進(jìn)程競爭共享資源時(shí)會(huì)出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤,因此,應(yīng)采用進(jìn)程同步與互斥手段使其合的錯(cuò)誤,因此,應(yīng)采用進(jìn)程同步與互斥手段使其合理使用共享資源,以保證系統(tǒng)安全。當(dāng)進(jìn)程間必須理使用共享資源,以保證系統(tǒng)安全。當(dāng)進(jìn)程間必須通過信息交換進(jìn)行協(xié)作時(shí),可用進(jìn)程通信的方式達(dá)通過信息交換進(jìn)行協(xié)作時(shí),可用進(jìn)程通信的方式達(dá)到目的。到目的。v重點(diǎn)是:分析與時(shí)間有關(guān)的錯(cuò)誤;用重點(diǎn)是:分析與時(shí)間有關(guān)的錯(cuò)誤;用PV操作實(shí)現(xiàn)進(jìn)操作實(shí)現(xiàn)進(jìn)程的同步與互斥;用信箱實(shí)現(xiàn)進(jìn)程通信。程的同步與互斥;用信箱實(shí)現(xiàn)進(jìn)程通信。 v一、進(jìn)程的順

3、序性與并發(fā)性(領(lǐng)會(huì))一、進(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)

4、行的,這就是進(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)程的

5、執(zhí)行,則這些并發(fā)進(jìn)程之間是有交往的。v二、與時(shí)間有關(guān)的錯(cuò)誤(簡單應(yīng)用)二、與時(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ò)誤,

6、請(qǐng)理解教材上的例子。 v三三.相關(guān)臨界區(qū)(相關(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ū)。 v四、進(jìn)程的互斥(綜合應(yīng)用)四、進(jìn)程的互斥(綜合應(yīng)用)

7、 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) 如果樹上沒燈取(S0) 樹說欠你一盞燈(S為負(fù)時(shí)) 沒轍只好外邊排隊(duì)等(Wait(S) 得燈進(jìn)程續(xù)運(yùn)行 運(yùn)行完了要出門(調(diào)用一次V操作) 馬上還回一盞燈(

8、S=S+1) 若有進(jìn)程在催債(S0) 放個(gè)進(jìn)去事完成(Release(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 S0 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)操作

9、中不可中斷,這種不可被中斷的過程稱為“原語”。 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)程互斥。 仔細(xì)領(lǐng)會(huì)

10、教材中的例子,關(guān)于PV操作,在考試中出現(xiàn)的可能性極大,但是難度基本不超過教材上例題. 進(jìn)程的互斥是指當(dāng)有若干進(jìn)程都要使用某一共享資源時(shí),任何時(shí)刻最多只允許一個(gè)進(jìn)程去使用,其他要使用該資源的進(jìn)程必須等待,直到占用資源者釋放了該資源。 在寫程序時(shí)要注意以下幾點(diǎn): PV操作中間只執(zhí)行相關(guān)臨界區(qū)內(nèi)容,不能把臨界區(qū)外的程序段放到PV操作中間,否則會(huì)降低系統(tǒng)并發(fā)執(zhí)行能力或引起系統(tǒng)癱瘓。 另外當(dāng)有條件語句時(shí)要注意在臨界區(qū)內(nèi)每個(gè)條件分支出口均要調(diào)用V操作,否則會(huì)違反對(duì)臨界區(qū)管理的第二、三兩個(gè)要求。 v五、進(jìn)程的同步(綜合應(yīng)用)五、進(jìn)程的同步(綜合應(yīng)用) 1、進(jìn)程同步的含義:進(jìn)程的同步是指并發(fā)進(jìn)程之間存在一種制

11、約關(guān)系,一個(gè)進(jìn)程的執(zhí)行依賴另一個(gè)進(jìn)程的消息,當(dāng)一個(gè)進(jìn)程沒有得到另一個(gè)進(jìn)程的消息時(shí)應(yīng)等待,直到消息到達(dá)才被喚醒。 “生產(chǎn)者”與“消費(fèi)者”是同步問題的典型例子。 這里有兩個(gè)消息量:一是“緩沖器里有物品”,二是“可把物品存入緩沖器”,這兩個(gè)消息量對(duì)應(yīng)需要兩個(gè)信號(hào)量SPut和SGet。SP的初始值為1,如果初始時(shí)可用的緩沖器為n個(gè),則SPn;SG的初始值為0。 生產(chǎn)者進(jìn)程調(diào)用P(SP)和V(SG), 消費(fèi)者進(jìn)程調(diào)用P(SG)和V(SP),根據(jù)SG和SP的值來決定是否可以存或取物。 2、正確使用PV操作實(shí)現(xiàn)進(jìn)程同步。 (1)用一個(gè)信號(hào)量與一個(gè)消息聯(lián)系起來,當(dāng)信號(hào)量的值為0時(shí)表示期望的消息尚未產(chǎn)生,當(dāng)信號(hào)

12、量值為非0時(shí)表示期望的消息已經(jīng)存在。 (2)在用PV操作實(shí)現(xiàn)同步時(shí),一個(gè)信號(hào)量與一個(gè)消息量聯(lián)系在一起,當(dāng)有多個(gè)消息時(shí)必須定義多個(gè)信號(hào)量;測試不同的消息是否到達(dá)或發(fā)送不同消息時(shí),應(yīng)對(duì)不同的信號(hào)調(diào)用P操作或V操作。 3、使用PV操作實(shí)現(xiàn)進(jìn)程同步與互斥的混合問題。 進(jìn)程的同步與進(jìn)程的互斥都涉及到并發(fā)進(jìn)程訪問共享資源的問題??梢钥吹竭M(jìn)程的互斥實(shí)際上是進(jìn)程同步的一種特殊情況。若干進(jìn)程互斥使用資源時(shí),一個(gè)等待使用資源的的進(jìn)程在得到占用資源的進(jìn)程發(fā)出“歸還資源”的消息(調(diào)用了V操作)后,它就可去使用資源。因此,互斥使用資源的進(jìn)程之間實(shí)際上也存在一個(gè)進(jìn)程依賴另一個(gè)進(jìn)程發(fā)出信息的制約關(guān)系。所以,也把進(jìn)程的互斥與

13、進(jìn)程的同步稱為進(jìn)程的同步。 4、PV操作實(shí)現(xiàn)進(jìn)程同步與互斥時(shí)怎樣定義信號(hào)量,信號(hào)量的物理含義及其作用 利用PV操作實(shí)現(xiàn)進(jìn)程互斥時(shí),用一個(gè)信號(hào)量與一組相關(guān)臨界區(qū)對(duì)應(yīng),這些進(jìn)程在同一個(gè)信號(hào)量上調(diào)用P操作和V操作來實(shí)現(xiàn)互斥。 利用PV操作實(shí)現(xiàn)進(jìn)程同步時(shí),每一個(gè)消息與一個(gè)信號(hào)量對(duì)應(yīng),進(jìn)程在不同信號(hào)量上調(diào)用P操作以測試自己需要的消息是否到達(dá),在不同信號(hào)量上調(diào)用V操作把不同的消息發(fā)送出去。 信號(hào)量的物理含義: S0時(shí)表示可使用的資源數(shù)或表示可使用資源的進(jìn)程數(shù)。 S0時(shí)表示無資源可供使用或不允許進(jìn)程進(jìn)入臨界區(qū)。 S0時(shí)表示等待使用資源的進(jìn)程個(gè)數(shù)或表示等待進(jìn)入臨界區(qū)的進(jìn)程個(gè)數(shù)。 根據(jù)PV操作的性質(zhì),任何進(jìn)程在

14、使用共享資源前應(yīng)調(diào)用P操作。當(dāng)有可以使用的資源或允許使用資源時(shí)(S0),調(diào)用P(S)后不會(huì)成為等待,進(jìn)程可以使用資源。當(dāng)無資源可使用或不允許使用資源時(shí)(S0)調(diào)用P(S)后必然等待。任何進(jìn)程可調(diào)用V操作來歸還共享資源的使用權(quán),當(dāng)S0時(shí)調(diào)用V(S)后使可用資源數(shù)加1或使可用資源的進(jìn)程數(shù)加1(也就是樹上多掛上一個(gè)紅燈籠)。當(dāng)S0時(shí)調(diào)用V(S)后將釋放一個(gè)等待使用資源或者釋放一個(gè)等待進(jìn)入臨界區(qū)者。 v六、進(jìn)程通信(領(lǐng)會(huì))六、進(jìn)程通信(領(lǐng)會(huì)) 1、進(jìn)程通信的含義:通過專門的通信機(jī)制實(shí)現(xiàn)進(jìn)程間交換大量信息的通信方式稱為“進(jìn)程通信” 2、實(shí)現(xiàn)進(jìn)程通信的基本原語:有兩條:“send(發(fā)送)”和“receiv

15、e(接收)”原語。 3、利用信箱通信時(shí)“發(fā)送”和“接收”原語的功能。 send(N,M) 功能:把信件M送到指定的信箱N中。 receive(N,X) 功能:從指定信箱N中取出一封信,存放到指定的地址X中。 4、信箱的基本結(jié)構(gòu):一個(gè)信箱由“信箱說明”和“信箱體”兩部分組成。 v七、線程的概念(識(shí)記)七、線程的概念(識(shí)記) 線程是進(jìn)程中可獨(dú)立執(zhí)行的子任務(wù),一個(gè)進(jìn)程中可以有一個(gè)或多個(gè)線程,每個(gè)線程都有一個(gè)唯一的標(biāo)識(shí)符。 支持線程管理的操作系統(tǒng)有Mach,OS/2,WindowsNT,UNIX等。 復(fù)習(xí)題v1、為了使A、B兩個(gè)進(jìn)程互斥地訪問單個(gè)緩沖區(qū),應(yīng)為之設(shè)置一個(gè)互斥信號(hào)量S,初值為1,相應(yīng)在的P

16、(S),V(S)操作必須分別安排在(b)的兩端。A、該單緩沖區(qū)B、兩進(jìn)程的臨界區(qū)C、兩進(jìn)程的程序段D、兩進(jìn)程的控制塊v2、一個(gè)進(jìn)程可以包含多個(gè)線程,各線程(b)A、必須串行工作B、共享分配給進(jìn)程的主存地址空間C、共享進(jìn)程的PCB D、是獨(dú)立的資源分配單位v3、PV操作所處理的變量是(b)A、鎖變量B、整型信號(hào)量C、記錄型信號(hào)量D、控制變量v4、為了使兩個(gè)進(jìn)程能同步運(yùn)行,最少需要(b)個(gè)信號(hào)量。A、1B、2C、3D、4v5、共享變量是指(b)訪問的變量。A、只能被系統(tǒng)進(jìn)程B、只能被多個(gè)進(jìn)程互斥訪問的變量C、只能被用戶進(jìn)程D、可被多個(gè)進(jìn)程v6、臨界區(qū)是指并發(fā)進(jìn)程中訪問共享變量的(d)。A、管理信息B、數(shù)據(jù)C、信息存儲(chǔ)D、程序v7、多項(xiàng)選擇:線程是操作系統(tǒng)的概念,已具有線程管理的操作系統(tǒng)有(bce)。A、WINDOWS32B、OS/2 C、Windows NTD、DOS6.22E、M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論