資源描述:
《進(jìn)程同步與互斥.ppt》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、進(jìn)程間的相互作用進(jìn)程間的聯(lián)系進(jìn)程的同步機(jī)制──信號(hào)量及P.V操作(解決進(jìn)程同步互斥問(wèn)題)進(jìn)程間的聯(lián)系相交進(jìn)程與無(wú)關(guān)進(jìn)程相交進(jìn)程:指多個(gè)并發(fā)進(jìn)程在邏輯上有某種聯(lián)系無(wú)關(guān)進(jìn)程(不相交進(jìn)程):在邏輯上無(wú)任何聯(lián)系的進(jìn)程直接作用和間接作用直接作用:進(jìn)程間的相互聯(lián)系是有意識(shí)的安排的,直接作用只發(fā)生在相交進(jìn)程間間接作用:進(jìn)程間要通過(guò)某種中介發(fā)生聯(lián)系,是無(wú)意識(shí)安排的,可發(fā)生在相交進(jìn)程之間,也可發(fā)生在無(wú)關(guān)進(jìn)程之間進(jìn)程的同步(直接作用)進(jìn)程的同步:synchronism指系統(tǒng)中多個(gè)進(jìn)程中發(fā)生的事件存在某種時(shí)序關(guān)系,需要相互合
2、作,共同完成一項(xiàng)任務(wù)。具體說(shuō),一個(gè)進(jìn)程運(yùn)行到某一點(diǎn)時(shí)要求另一伙伴進(jìn)程為它提供消息,在未獲得消息之前,該進(jìn)程處于等待狀態(tài),獲得消息后被喚醒進(jìn)入就緒態(tài)。進(jìn)程的互斥(間接作用)mutualexclusion由于各進(jìn)程要求共享資源,而有些資源需要互斥使用,因此各進(jìn)程間競(jìng)爭(zhēng)使用這些資源,進(jìn)程的這種關(guān)系為進(jìn)程的互斥臨界資源(Criticalresource):系統(tǒng)中某些資源一次只允許一個(gè)進(jìn)程使用,這樣的資源稱(chēng)為臨界資源或互斥資源或共享變量。臨界區(qū)(Criticalregion):把不允許多個(gè)并發(fā)進(jìn)程交叉執(zhí)行的一段程
3、序稱(chēng)為臨界區(qū)或臨界部分。臨界區(qū)就是訪(fǎng)問(wèn)公用數(shù)據(jù)的那段程序。例如堆棧操作中的get(top)和rel(blk)程序。臨界區(qū)(互斥區(qū)):criticalsection一個(gè)程序片段的集合,這些程序片段分散在不同的進(jìn)程中,對(duì)某個(gè)共享的數(shù)據(jù)結(jié)構(gòu)(共享資源)進(jìn)行操作。在進(jìn)程中涉及到臨界資源的程序段叫臨界區(qū)。多個(gè)進(jìn)程的臨界區(qū)稱(chēng)為相關(guān)臨界區(qū)。在臨界區(qū)前面增加一段用于進(jìn)行檢查的代碼,稱(chēng)為進(jìn)入?yún)^(qū)。在臨界區(qū)后面加上一段代碼,稱(chēng)為退出區(qū)。進(jìn)程中除了進(jìn)入?yún)^(qū)、臨界區(qū)及退出區(qū)之外的其它部分的代碼,稱(chēng)為剩余區(qū)。使用互斥區(qū)的原則:空閑讓
4、進(jìn):當(dāng)無(wú)進(jìn)程在互斥區(qū)時(shí),任何有權(quán)使用互斥區(qū)的進(jìn)程可進(jìn)入忙則等待:不允許兩個(gè)以上的進(jìn)程同時(shí)進(jìn)入互斥區(qū)有限等待:任何進(jìn)入互斥區(qū)的要求應(yīng)在有限的時(shí)間內(nèi)得到滿(mǎn)足讓權(quán)等待:處于等待狀態(tài)的進(jìn)程應(yīng)放棄占用CPU,以使其他進(jìn)程有機(jī)會(huì)得到CPU的使用權(quán)使用互斥區(qū)的原則:前提:任何進(jìn)程無(wú)權(quán)停止其它進(jìn)程的運(yùn)行進(jìn)程之間相對(duì)運(yùn)行速度無(wú)硬性規(guī)定進(jìn)程互斥的解決有兩種做法:由競(jìng)爭(zhēng)各方平等協(xié)商引入進(jìn)程管理者,由管理者來(lái)協(xié)調(diào)競(jìng)爭(zhēng)各方對(duì)互斥資源的使用具體方法:硬件(當(dāng)一個(gè)進(jìn)程進(jìn)入臨界區(qū),就屏蔽所有中斷,但成本高)軟件(用編程解決,但常常忙等
5、待)進(jìn)程互斥的軟件方法通過(guò)平等協(xié)商方式實(shí)現(xiàn)進(jìn)程互斥的最初方法是軟件方法。其基本思路是在進(jìn)入?yún)^(qū)檢查和設(shè)置一些標(biāo)志,如果已有進(jìn)程在臨界區(qū),則在進(jìn)入?yún)^(qū)通過(guò)循環(huán)檢查進(jìn)行等待;在退出區(qū)修改標(biāo)志。其中的主要問(wèn)題是設(shè)置什么標(biāo)志和如何檢查標(biāo)志。設(shè)有兩個(gè)計(jì)算進(jìn)程PA、PB共享內(nèi)存MS。其中MS分為三個(gè)領(lǐng)域,即系統(tǒng)區(qū)、進(jìn)程工作區(qū)和數(shù)據(jù)區(qū)。這里數(shù)據(jù)區(qū)被劃分大小相等的塊,每個(gè)塊中既可能放有數(shù)據(jù),也有可能未放有數(shù)據(jù)。系統(tǒng)區(qū)主要是堆棧S,其中存放那些空數(shù)據(jù)塊的地址。如圖所示:getspace(){intg;????????????
6、g?stack[top];top?top-1;}執(zhí)行g(shù)etspace就是獲取一個(gè)空數(shù)據(jù)release(ad){top?top+1;stack[top]?ad;}release(ad)就是釋放一個(gè)地址為ad的數(shù)據(jù)塊信號(hào)量:semaphore是一個(gè)數(shù)據(jù)結(jié)構(gòu)定義如下:structsemaphore{intvalue;pointer_PCBqueue;}信號(hào)量說(shuō)明:semaphores;P、V操作P(s){s.value=s.value--;if(s.value<0){該進(jìn)程狀態(tài)置為等待狀態(tài);將該進(jìn)程的PCB
7、插入相應(yīng)的等待隊(duì)列末尾s.queue;}}V操作V(s){s.value=s.value++;if(s.value<=0){喚醒相應(yīng)等待隊(duì)列s.queue中等待的一個(gè)進(jìn)程;改變其狀態(tài)為就緒態(tài)并將其插入就緒隊(duì)列;}}P、V操作為原語(yǔ)操作原語(yǔ):primitiveoratomicaction是由若干多機(jī)器指令構(gòu)成的完成某種特定功能的一段程序,具有不可分割性即原語(yǔ)的執(zhí)行必須是連續(xù)的,在執(zhí)行過(guò)程中不允許被中斷實(shí)現(xiàn):開(kāi)關(guān)中斷信號(hào)量的使用:必須置一次且只能置一次初值初值不能為負(fù)數(shù)只能執(zhí)行P、V操作用P、V操作解決進(jìn)程
8、間互斥問(wèn)題P(mutex)V(mutex)P1P2P3互斥區(qū)P(mutex)P(mutex)V(mutex)V(mutex)三個(gè)進(jìn)程共用兩個(gè)I/O緩沖區(qū)。解:設(shè)用信號(hào)量S表示共享資源,S初始值為2互斥例子例:用信號(hào)量及P、V原語(yǔ)實(shí)現(xiàn)兩個(gè)并發(fā)進(jìn)程Pa和Pb互斥。兩進(jìn)程都想進(jìn)入臨界區(qū)S。解:1)設(shè)sem為互斥信號(hào)量,表示臨界區(qū)是否可進(jìn)入2)設(shè)sem的初始值為1,表示臨界區(qū)可用3)描述:Pa:Pb:P(sem)P(sem)V(sem)