資源描述:
《進(jìn)程互斥與同步-互斥.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、4.4進(jìn)程之間的約束關(guān)系程序并發(fā)執(zhí)行的相互制約間接的相互制約關(guān)系——資源共享(競爭資源系統(tǒng))直接的相互制約關(guān)系——公共變量(進(jìn)程協(xié)作)341.進(jìn)程互斥的概念臨界資源例1:x代表某航班機(jī)座號,p1和p2兩個售票進(jìn)程,售票工作是對變量x加1。這兩個進(jìn)程在一個處理機(jī)C上并發(fā)執(zhí)行,分別具有內(nèi)部寄存器r1和r2。35例2:兩個進(jìn)程共享一個變量x兩個進(jìn)程共享一個變量x時,兩種可能的執(zhí)行次序:A:p1:r1:=x;r1:=r1+1;x:=r1;p2:r2:=x;r2:=r2+1;x:=r2;設(shè)x的初值為10,兩種情況下的執(zhí)行結(jié)果:情況A:x=10+2情況B:x=10+1B:
2、p1:r1:=x;r1:=r1+1;x:=r1;p2:r2:=x;r2:=r2+1;x:=r2;36一次僅允許一個進(jìn)程使用的資源稱為臨界資源。硬件:如輸入機(jī)、打印機(jī)、磁帶機(jī)等軟件:如公用變量、數(shù)據(jù)、表格、隊列等每個進(jìn)程中訪問臨界資源的那段程序稱為臨界區(qū)。?x:=x+1;?csa{進(jìn)程A進(jìn)程B?x:=x+1;?csb{37互斥在操作系統(tǒng)中,當(dāng)某一進(jìn)程正在訪問某一存儲區(qū)域時,就不允許其他進(jìn)程來讀出或者修改存儲區(qū)的內(nèi)容,否則,就會發(fā)生后果無法估計的錯誤。進(jìn)程間的這種相互制約關(guān)系稱為互斥。?x:=x+1;?csa{進(jìn)程A進(jìn)程B?x:=x+1;?csb{間接制約由于共享
3、某一公有資源而引起的在臨界區(qū)內(nèi)不允許并發(fā)進(jìn)程交叉執(zhí)行的現(xiàn)象,稱為由共享公有資源而造成的對并發(fā)進(jìn)程執(zhí)行速度的間接制約。受間接制約的類中各程序段在執(zhí)行順序上是任意的。間接制約的幾個進(jìn)程是互斥關(guān)系使用臨界區(qū)應(yīng)遵守的原則各進(jìn)程享有獨(dú)立,平等的競爭共享資源的權(quán)利。某個進(jìn)程不在臨界區(qū),不阻止其他進(jìn)程進(jìn)入排它性,只能有一個進(jìn)程進(jìn)入臨界區(qū)有限等待,某個進(jìn)程申請使用臨界區(qū)后,必須在有限的時間內(nèi)離開。382.進(jìn)程同步的概念什么是進(jìn)程同步并發(fā)進(jìn)程在一些關(guān)鍵點(diǎn)上可能需要互相等待與互通消息,這種相互制約的等待與互通消息稱為進(jìn)程同步。進(jìn)程同步的例病員就診看病活動:?要病人去化驗(yàn);?等化驗(yàn)
4、結(jié)果;?繼續(xù)診??;化驗(yàn)活動:?需要進(jìn)行化驗(yàn)??進(jìn)行化驗(yàn);開出化驗(yàn)結(jié)果;?39共享緩沖區(qū)的計算進(jìn)程與打印進(jìn)程的同步計算進(jìn)程cp和打印進(jìn)程iop公用一個單緩沖緩沖區(qū)bufiopcpABCDABCD10直接制約一組在異步環(huán)境下的并發(fā)進(jìn)程,各自的執(zhí)行結(jié)果互為對方的執(zhí)行條件,從而限制各進(jìn)程的執(zhí)行速度的過程稱為并發(fā)進(jìn)程間的直接制約。直接制約的進(jìn)程之間是同步關(guān)系4.5同步機(jī)構(gòu)操作系統(tǒng)提供的同步機(jī)構(gòu)如下兩種:鎖和上鎖、開鎖操作信號燈和PV操作401.鎖和上鎖、開鎖操作什么是鎖用變量w代表某種資源的狀態(tài),w稱為“鎖”。上鎖操作和開鎖操作檢測w的值(是0還是1);如果w的值為1,
5、繼續(xù)檢測;如果w的值為0,將鎖位置1(表示占用資源),進(jìn)入臨界區(qū)執(zhí)行。(此為上鎖操作)臨界資源使用完畢,將鎖位置0。(此為開鎖操作)42上鎖原語算法lock輸入:鎖變量w輸出:無{test:if(w為1)∕*測試鎖位的值*∕gototest;elsew=1;∕*上鎖*∕}不斷的測試鎖的狀態(tài),耗費(fèi)CPU時間開鎖原語算法unlock輸入:鎖變量w輸出:無{w=0;∕*開鎖*∕}432.信號燈和P、V操作什么是信號燈信號燈是一個確定的二元組(s,q),s是一個具有非負(fù)初值的整型變量,q是一個初始狀態(tài)為空的隊列。操作系統(tǒng)利用信號燈的狀態(tài)對并發(fā)進(jìn)程和共享資源進(jìn)行
6、控制和管理。信號燈信號燈是整型變量。變量值≥0時,表示綠燈,進(jìn)程執(zhí)行;變量值?0時,表示紅燈,進(jìn)程停止執(zhí)行。注意:創(chuàng)建信號燈時,應(yīng)準(zhǔn)確說明信號燈s的意義和初值(這個初值絕不能為負(fù)值)。44P操作P操作的定義對信號燈s的p操作記為p(s)。p(s)是一個不可分割的原語操作,即取信號燈值減1,若相減結(jié)果為負(fù),則調(diào)用p(s)的進(jìn)程被阻,并插入到該信號燈的等待隊列中,否則可以繼續(xù)執(zhí)行。P操作的實(shí)現(xiàn)入口S-1→SS≥0?轉(zhuǎn)進(jìn)程調(diào)度返回入信號燈等待隊列置“等待狀態(tài)”≥0?045V操作V操作的定義對信號燈s的v操作記為v(s)。v(s)是一個不可分割的原語操作,即取信號燈值
7、加1,若相加結(jié)果大于零,進(jìn)程繼續(xù)執(zhí)行,否則,要幫助喚醒在信號燈等待隊列上的一個進(jìn)程。V操作的實(shí)現(xiàn)入口S+1→S從信號燈的等待隊列中取出首元素入就緒隊列置“就緒狀態(tài)”返回S≤0?>0PV操作是通過原語實(shí)現(xiàn)的4.6進(jìn)程互斥的實(shí)現(xiàn)461.用上鎖原語和開鎖原語實(shí)現(xiàn)進(jìn)程互斥框圖描述上鎖原語進(jìn)入臨界區(qū)csa進(jìn)程pa開鎖原語上鎖原語進(jìn)入臨界區(qū)csb進(jìn)程pb開鎖原語47程序描述程序task1main(){intw=1;∕*互斥鎖*∕cobeginpa();pb();coend}47程序描述pa(){?lock(w);csa;unlock(w);?}pb(){?lock(w)
8、;csb;unlock(w);?}48