第4章進程管理-2

第4章進程管理-2

ID:44958407

大?。?.47 MB

頁數(shù):62頁

時間:2019-11-06

第4章進程管理-2_第1頁
第4章進程管理-2_第2頁
第4章進程管理-2_第3頁
第4章進程管理-2_第4頁
第4章進程管理-2_第5頁
資源描述:

《第4章進程管理-2》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、(四)進程互斥一、進程互斥的概念1.臨界資源例1:兩個進程A、B共享一臺打印機若不加以控制,兩個進程的輸出結(jié)果可能交織在一起,很難區(qū)分。例2:兩個進程共享一個變量x設:x代表某航班已賣出的機座數(shù),初值為0。p1和p2為兩個售票進程,功能是對共享變量x的值加1。這兩個進程在一個處理機C上并發(fā)執(zhí)行,分別具有內(nèi)部寄存器r1和r2。兩進程并發(fā)執(zhí)行的兩種可能次序:序列A序列Bp1:r1:=x;p1:r1:=x;r1:=r1+1;p2:r2:=x;x:=r1;r2:=r2+1;P2:r2:=x;x:=r2;r2:=r2+1;p1:r1:=r1+1;x:=r2;x:=r1;執(zhí)行結(jié)果:x=2執(zhí)行結(jié)果:x=1特

2、點:當兩個進程公用一個變量時,它們必須順序的訪問,一個進程對公用變量操作完畢后,另一個進程才能去訪問和修改這一變量。(1)什么是臨界資源我們把一次(一段時間內(nèi))僅允許一個進程使用的資源稱為臨界資源。許多物理設備,如輸入機、打印機、磁帶機等都具有這種性質(zhì)。軟件資源,如公用變量、數(shù)據(jù)、表格、隊列等也都具有這一特點。(2)什么是臨界區(qū)每個進程中訪問臨界資源的那段程序段稱為臨界區(qū)(臨界段)。(3)什么是互斥在操作系統(tǒng)中,當某一進程正在訪問某一存儲區(qū)域時,就不允許其他進程來讀出或者修改存儲區(qū)的內(nèi)容,否則,就會發(fā)生后果無法估計的錯誤。進程間的這種相互制約的關系稱為互斥。例如:進程A正在執(zhí)行CSa段時,進程

3、B就不能進入CSb段執(zhí)行。進程A進程B……x=0CSbx=x+1CSa……x=x+1…操作系統(tǒng)如何保證進程的互斥呢?(1)保證進入當有若干個進程欲進入臨界區(qū)時,應在有限的時間內(nèi)使其進入;(2)排它性每次至多有一個進程處于臨界區(qū);(3)有限性進程在臨界區(qū)內(nèi)僅逗留有限的時間。?這些原則如何實現(xiàn)呢?二.鎖和上鎖、開鎖操作1.什么是鎖用變量w代表某種資源的狀態(tài),w稱為“鎖”2.進程使用臨界資源的操作每個臨界資源設置一個鎖位:0:資源可用1:資源占用。鎖操作:1.考察鎖位的值;2.若原來的值是為“0”,將鎖位置為“1”(占用該資源);3.若原來值是為“1”,(該資源已被別人占用),則轉(zhuǎn)到1。開鎖操作:進

4、程使用完資源后,將鎖位置為“0”,稱為開鎖操作。3.上鎖原語和開鎖原語(1)上鎖原語算法lock輸入:鎖變量w輸出:無{test:if(w為1)gototest;/*測試鎖位的值*/elsew=1;/*上鎖*/}(2)開鎖原語算法unlock輸入:鎖變量w輸出:無{w=0;/*開鎖*/}問題:(1)效率低。當鎖已上時,當前上鎖的進程忙等;(2)無法實現(xiàn)。當鎖已上時,當前上鎖(原語)的進程占有CPU不放,誰來開鎖呢?死鎖!改進的算法算法:lock(w)輸入:W(鎖變量)輸出:無{if(w==1)sleep(pri,w);W=1;/*上鎖*/}算法:unlock(w)輸入:W(鎖變量)輸出:無{i

5、f(等待W隊列不空)wakeup(w);W=0;/*開鎖*/}4.用上鎖原語和開鎖原語實現(xiàn)進程互斥上鎖原語開鎖原語進入臨界區(qū)CSa進程A上鎖原語開鎖原語進入臨界區(qū)CSb進程B三.信號燈和P、V操作什么是信號燈信號燈是整型變量。a≥0時,表示綠燈,進程可繼續(xù)執(zhí)行。a<0時,表示紅燈,進程停止執(zhí)行。信號燈是一個確定的二元組(s,q),s是一個具有非負初值的整型變量,q是一個初始狀態(tài)為空的隊列。操作系統(tǒng)利用信號燈的值對并發(fā)進程和共享資源進行控制和管理。注意:創(chuàng)建信號燈時,應準確說明信號燈s的意義和初值(這個初值絕不能為負值)。2.P、V操作信號燈的值只能由P、V操作來改變。(1)P操作P操作定義對信

6、號燈s的P操作記為P(s)。P(s)是一個不可分割的原語操作,即取信號燈值減1,若相減結(jié)果為負,則調(diào)用P(s)的進程被阻,并插入到該信號燈的等待隊列中,否則可以繼續(xù)執(zhí)行。入口s=s-1s>=0入信號燈等待隊列置“等待狀態(tài)”轉(zhuǎn)進程調(diào)度返回YNP操作原語的實現(xiàn)(2)V操作V操作定義對信號燈s的V操作記為V(s)。V(s)是一個不可分割的原語操作,即取信號燈值加1,若相加結(jié)果大于零,進程繼續(xù)執(zhí)行,否則,要幫助喚醒在信號燈等待隊列上的一個進程。入口s=s+1S<=0從該信號燈的等待隊列中取出首元素置“就緒狀態(tài)”轉(zhuǎn)進程調(diào)度YN入就緒隊列返回V操作原語的實現(xiàn)3.用信號燈的P、V操作實現(xiàn)進程互斥設:mute

7、x為互斥信號燈,初值為1,表示臨界資源未被占用。(1)框圖描述P(mutex)V(mutex)進入臨界區(qū)CSa進程PaP(mutex)V(mutex)進入臨界區(qū)CSb進程Pb(2)程序描述Main(){intmutex=1;/*互斥信號燈*/cobeginPa();Pb();coend}Pa(){…P(mutex);CSa;V(mutex);…}Pb(){…P(mutex);CSb;V(mutex

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。