進(jìn)程間互斥、同步與通信

進(jìn)程間互斥、同步與通信

ID:40839777

大?。?30.10 KB

頁數(shù):49頁

時(shí)間:2019-08-08

進(jìn)程間互斥、同步與通信_(tái)第1頁
進(jìn)程間互斥、同步與通信_(tái)第2頁
進(jìn)程間互斥、同步與通信_(tái)第3頁
進(jìn)程間互斥、同步與通信_(tái)第4頁
進(jìn)程間互斥、同步與通信_(tái)第5頁
資源描述:

《進(jìn)程間互斥、同步與通信》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第六章進(jìn)程間互斥、同步與通信授課教師:付勇智fuyongzhi@swfc.edu.cn西南林學(xué)院基礎(chǔ)部數(shù)理教研室問題綱要間接制約和直接制約是什么?什么是臨界區(qū)?什么是信號(hào)量?什么是同步、互斥?如何應(yīng)用信號(hào)量實(shí)現(xiàn)同步和互斥?信號(hào)量在Windows編程中是如何實(shí)現(xiàn)的?進(jìn)程并發(fā)運(yùn)行所帶來的問題由于系統(tǒng)資源的共享性,并發(fā)進(jìn)程的執(zhí)行結(jié)果失去了封閉性和可再現(xiàn)性。滿足Bernstein條件的并發(fā)進(jìn)程能夠保持封閉性,但是Bernstein條件限制太過嚴(yán)格,不符合大多數(shù)實(shí)際環(huán)境的需要。因而,OS需要尋求一種機(jī)制,滿足進(jìn)程間共享資源的需要。進(jìn)程間通信IPC在兩個(gè)或多個(gè)進(jìn)程間

2、傳遞信息或共享數(shù)據(jù)的機(jī)制,稱之為進(jìn)程間通信(Inter-ProcessCommunication)UNIX操作系統(tǒng)中的管道技術(shù)(Pipe)就是一種IPC在IPC的過程中,主要要解決兩類問題:互斥和同步互斥的需要voidSendPrint(){1if((in+1)%N==out)2exit(0);3else4in=(in+1)%N;5file[in]=printfile;6return;}ProcessA(){……SendPrint()}ProcessB(){……SendPrint()}臨界區(qū)(CriticalSection)臨界資源:一次僅允許一個(gè)進(jìn)程使

3、用的資源稱為臨界資源。臨界區(qū):進(jìn)程中對(duì)于臨界資源訪問的程序段稱為臨界區(qū)。間接制約:由于共享某一公有資源而引起的在臨界區(qū)內(nèi)不允許并發(fā)進(jìn)程交叉執(zhí)行的現(xiàn)象,稱為由共享公有資源造成的并發(fā)進(jìn)程執(zhí)行速度的間接制約,簡稱間接制約?;コ猓阂唤M并發(fā)進(jìn)程中的一個(gè)或多個(gè)程序段,因共享某一公有資源而導(dǎo)致他們不能同時(shí)進(jìn)入臨界區(qū)稱為互斥。互斥(MutualExclusion)互斥方案應(yīng)滿足的4個(gè)條件任何兩個(gè)進(jìn)程不能同時(shí)處于臨界區(qū)不應(yīng)對(duì)CPU的數(shù)目和速度做任何假設(shè)臨界區(qū)外的進(jìn)程不得阻塞其他進(jìn)程不得使進(jìn)程在臨界區(qū)外無休止地等待互斥的實(shí)現(xiàn)方案關(guān)中斷鎖變量嚴(yán)格輪換法Peterson方案TS

4、L硬件指令(Intel平臺(tái)為BTS指令)信號(hào)量管程消息傳遞關(guān)中斷處理機(jī)的調(diào)度都是由中斷所引起的(主要是定時(shí)器中斷)如果進(jìn)入臨界區(qū)前將所有外部中斷屏蔽,則在運(yùn)行臨界區(qū)時(shí)將不會(huì)響應(yīng)所有外部中斷事件,也就不可能發(fā)生進(jìn)程切換,待進(jìn)程執(zhí)行完臨界區(qū)后再開中斷。缺點(diǎn):交由用戶進(jìn)程管理中斷的開關(guān)是非常不安全的,一旦用戶程序關(guān)中斷后忘記打開,則整個(gè)系統(tǒng)將無法響應(yīng)外部事件而崩潰;另外,在多處理器系統(tǒng)中,關(guān)中斷也僅屏蔽本處理器的中斷響應(yīng),對(duì)其他處理器中運(yùn)行的進(jìn)程無法屏蔽。因而通常中斷屏蔽都由OS進(jìn)行管理,由OS使用它來保證一些核心操作的不可中斷性。鎖變量intlock=0;/

5、/初始情況下沒有進(jìn)程進(jìn)入臨界區(qū)Processi(){while(lock==1);//當(dāng)其他進(jìn)程在臨界區(qū)工作時(shí),忙等待lock=1;//設(shè)置鎖變量,防止其他進(jìn)程進(jìn)入critical_section();//進(jìn)行臨界區(qū)相關(guān)操作lock=0;//退出臨界區(qū)后解鎖,使其他進(jìn)程可以進(jìn)入non_critical_section();}嚴(yán)格輪轉(zhuǎn)法Peterson方案TSL指令(測(cè)試與設(shè)置指令)IntelCPU中對(duì)應(yīng)的TSL指令匯編指令碼為BTS信號(hào)量(semaphore)信號(hào)量使E.W.Dijkstra在1965年提出的一種方法,他建議引入一個(gè)新的變量類型,稱作信號(hào)

6、量。信號(hào)量是一個(gè)整數(shù),其值可以為0或某個(gè)正整數(shù),分別表示不可進(jìn)入臨界區(qū)以及能夠進(jìn)入的進(jìn)程數(shù)目。信號(hào)量:是一個(gè)僅能由同步原語對(duì)其進(jìn)行操作的整型變量。原語(原子操作):操作過程不可中斷,必須以一個(gè)整體進(jìn)行執(zhí)行地系統(tǒng)基本操作對(duì)于信號(hào)量操作的原語只有兩個(gè):UP和DOWNDOWN原語(P操作)(1)若信號(hào)量S大于0,則將S減1,P操作返回,該進(jìn)程繼續(xù)執(zhí)行(2)若信號(hào)量S等于0,則將進(jìn)程掛入S的等待隊(duì)列,將進(jìn)程設(shè)置為阻塞狀態(tài),并轉(zhuǎn)調(diào)度程序P原語S>0S=S-1返回調(diào)用進(jìn)程進(jìn)入等待隊(duì)列轉(zhuǎn)進(jìn)程調(diào)度是否UP原語(V操作)(1)若信號(hào)量S的等待隊(duì)列中有等待進(jìn)程,則取隊(duì)首進(jìn)程

7、,將其置為就緒狀態(tài)并返回。(2)否則信號(hào)量S加1,并放回V原語是否有等待進(jìn)程S=S+1返回取隊(duì)首進(jìn)程置為就緒態(tài)否是生產(chǎn)者-消費(fèi)者問題問題描述:兩個(gè)進(jìn)程共享一個(gè)公共的固定大小的緩沖區(qū)。其中的一個(gè),生產(chǎn)者,將信息放入緩沖區(qū);另一個(gè),消費(fèi)者,從緩沖區(qū)中取出信息。當(dāng)緩沖區(qū)已滿,而此時(shí)生產(chǎn)者還想向其中放入一個(gè)新的信息則讓生產(chǎn)者睡眠,待消費(fèi)者從緩沖區(qū)取走一個(gè)或多個(gè)信息時(shí)再喚醒它。當(dāng)消費(fèi)者試圖從緩沖區(qū)中取信息而發(fā)現(xiàn)緩沖區(qū)為空時(shí),它就睡眠,直到生產(chǎn)者向其中放入一些消息再將其喚醒。生產(chǎn)者過程消費(fèi)者過程直接制約與同步一組在異步環(huán)境下的并發(fā)進(jìn)程,各自的執(zhí)行結(jié)果互為對(duì)方的執(zhí)行條

8、件,從而限制各進(jìn)程的執(zhí)行速度的過程稱為并發(fā)進(jìn)程間的直接制約。異步環(huán)境下的一組并發(fā)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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