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

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

ID:39414405

大?。?06.81 KB

頁數(shù):40頁

時(shí)間:2019-07-02

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

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

1、第二章進(jìn)程管理進(jìn)程(Process)線程(Thread)進(jìn)程間通信與同步經(jīng)典的IPC問題進(jìn)程調(diào)度2.3進(jìn)程間通信與同步進(jìn)程間通信(InterProcessCommuni- cation,IPC):進(jìn)程之間的信息交流 與協(xié)調(diào)。并發(fā)進(jìn)程之間的兩種關(guān)系:相互獨(dú)立:進(jìn)程之間沒有任何關(guān)聯(lián)關(guān)系(直接的或間接的),僅有CPU競(jìng)爭關(guān)系。無需通信,由進(jìn)程調(diào)度器來協(xié)調(diào)(如Word、MP3);相互關(guān)聯(lián):進(jìn)程之間存在著某種關(guān)聯(lián)關(guān)系(直接或間接),需要相互通信。例如:共享內(nèi)存變量、共享軟硬件資源、數(shù)據(jù)傳遞、協(xié)同工作等。需要討論的問題:進(jìn)程間如何通信呢,如何來相互傳遞信息呢

2、?當(dāng)兩個(gè)或多個(gè)進(jìn)程在訪問共享資源時(shí),如何確保它們不會(huì)相互妨礙——進(jìn)程互斥問題;當(dāng)進(jìn)程之間存在著某種依存關(guān)系時(shí),如何來調(diào)整它們運(yùn)行的先后次序——進(jìn)程同步問題。生活中的例子:教室座位、打飯窗口;一組同學(xué)做大作業(yè)。上述問題是否也適用于線程?2.3.1進(jìn)程間通信方式低級(jí)通信:只能傳遞狀態(tài)和整數(shù)值(控制信息)信號(hào)量(semaphore)信號(hào)(signal)高級(jí)通信:能夠傳送任意數(shù)量的數(shù)據(jù)共享內(nèi)存(sharedmemory)消息傳遞(messagepassing)管道(pipe)能否共享內(nèi)存單元(變量或緩沖區(qū))?共享內(nèi)存絕大多數(shù)現(xiàn)代的操作系統(tǒng)都提供了相應(yīng)的方

3、法,來 讓各個(gè)進(jìn)程共享它們地址空間當(dāng)中的某些部分,即共享內(nèi)存。在共享內(nèi)存中,可以任意讀寫和使用任 意的數(shù)據(jù)結(jié)構(gòu)(緩沖區(qū))。一組進(jìn)程向共享內(nèi)存中寫,另一組進(jìn)程從共享內(nèi)存 中讀,通過這種方式實(shí)現(xiàn)兩組進(jìn)程間的信息交換。消息傳遞消息:由若干數(shù)據(jù)位組成;消息傳遞:進(jìn)程之間通過發(fā)送和接收消息來交換信息;消息機(jī)制由OS來維護(hù),包括定義尋址方式、認(rèn)證協(xié)議、消息的大小等。一般提供兩個(gè)操作:send(),發(fā)送一條消息;receive(),接收一條消息。如果兩個(gè)任務(wù)P和Q想要進(jìn)行通信,它們需要在兩者之間建立一個(gè)通信鏈路;使用send()和receive()交換信息。管

4、道(pipe)管道通信由UNIX首創(chuàng),由于其有效性,后來的 一些系統(tǒng)相繼引入了管道技術(shù);管道通信以文件系統(tǒng)為基礎(chǔ),所謂管道即連接兩 個(gè)進(jìn)程之間的一個(gè)打開的共享文件,專用于進(jìn)程 之間的數(shù)據(jù)通信;發(fā)送進(jìn)程從管道的一端寫入數(shù)據(jù)流,接收進(jìn)程從 管道的另一端按先進(jìn)先出的順序讀出數(shù)據(jù)流;管道的讀寫操作即為文件操作fwrite/fread,數(shù)據(jù) 流的長度和格式?jīng)]有限制。2.3.2進(jìn)程的互斥進(jìn)程互斥的產(chǎn)生原因:進(jìn)程宏觀上并發(fā)執(zhí)行,依靠時(shí)鐘中斷來實(shí)現(xiàn)微觀上輪流執(zhí)行;訪問共享資源?!纠?】后臺(tái)打印程序(兩個(gè)進(jìn)程同時(shí)想要訪問共享數(shù)據(jù))后臺(tái)程序47share.txt4

5、7share.txt…next_free_slot=in;//7…第一步:進(jìn)程A中斷…next_free_slot=in;//7第二步:進(jìn)程Bprog.n678file_bwrite“file_b”toitem7next_free_slot++;//8updatein;…8第三步:進(jìn)程Awrite“file_a”toitem7next_free_slot++;//8updatein;…file_aoutin【例子2】兩個(gè)進(jìn)程,讀-修改-寫進(jìn)程1進(jìn)程2tmp1=count;tmp2=count; tmp1++;tmp2=tmp2+2; count=

6、tmp1;count=tmp2;請(qǐng)問:如果在這些進(jìn)程執(zhí)行之前,count變量的值為1,那么它最后的結(jié)果是多少?進(jìn)程1進(jìn)程2tmp1=count;(=1)interrupt...tmp2=count;(=1) tmp2=tmp2+2;(=3) count=tmp2;(=3) tmp1++;(=2) count=tmp1;(=2)情形1進(jìn)程1進(jìn)程2tmp2=count;(=1)interrupt...tmp1=count;(=1) tmp1++;(=2) count=tmp1;(=2) tmp2=tmp2+2;(=3) count=tmp2;(=3)

7、情形2進(jìn)程1進(jìn)程2tmp1=count;(=1) tmp1++;(=2) count=tmp1;(=2) tmp2=count;(=2) tmp2=tmp2+2;(=4) count=tmp2;(=4)情形3競(jìng)爭狀態(tài)(racecondition):兩個(gè)或多個(gè)進(jìn)程對(duì)同一共享數(shù)據(jù)同時(shí)進(jìn)行讀寫操作,而最后的結(jié)果是不可預(yù)測(cè)的,它取決于各個(gè)進(jìn)程具體運(yùn)行情況。解決之道:在同一時(shí)刻,只允許一個(gè)進(jìn)程訪問該共享數(shù)據(jù),即如果當(dāng)前已有一個(gè)進(jìn)程正在使用該數(shù)據(jù),那么其他進(jìn)程暫時(shí)不能訪問。這就是互斥的概念。競(jìng)爭狀態(tài)問題的抽象描述把一個(gè)進(jìn)程在運(yùn)行過程中所做的事情分為兩類:進(jìn)程

8、內(nèi)部的計(jì)算或其他的一些事情,肯定不會(huì) 導(dǎo)致競(jìng)爭狀態(tài)的出現(xiàn);對(duì)共享內(nèi)存或共享文件的訪問,可能會(huì)導(dǎo)致競(jìng) 爭狀態(tài)的出現(xiàn)。我們把完成這類事情的那

當(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)系客服處理。