進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖

進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖

ID:27594947

大?。?.30 MB

頁(yè)數(shù):174頁(yè)

時(shí)間:2018-12-04

進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖_第1頁(yè)
進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖_第2頁(yè)
進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖_第3頁(yè)
進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖_第4頁(yè)
進(jìn)程管理_進(jìn)程同步互斥與通信、死鎖_第5頁(yè)
資源描述:

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

1、操作系統(tǒng)原理金海溶blue1879@163.com(msn)辦公室:JK329§3.6進(jìn)程同步與同步操作系統(tǒng)設(shè)計(jì)中的核心問題是關(guān)于進(jìn)程和線程的管理多道程序技術(shù)管理單處理器系統(tǒng)中的多個(gè)進(jìn)程多處理技術(shù)管理多處理器系統(tǒng)中的多個(gè)進(jìn)程分布處理技術(shù)管理多臺(tái)分布式計(jì)算機(jī)系統(tǒng)(集群)中多個(gè)進(jìn)程的執(zhí)行并發(fā)程序并發(fā)是所有問題的基礎(chǔ),也是操作系統(tǒng)設(shè)計(jì)的基礎(chǔ)。它包括很多設(shè)計(jì)問題分配給進(jìn)程的處理器時(shí)間等資源的共享與爭(zhēng)用進(jìn)程間的通信多個(gè)進(jìn)程活動(dòng)的同步并發(fā)程序程序并發(fā)可以通過創(chuàng)建進(jìn)程或線程實(shí)現(xiàn)Windows2000并發(fā)程序設(shè)計(jì)例子3-7.cppUnix下的并發(fā)程序設(shè)計(jì)通過fork()創(chuàng)建子進(jìn)程例:a+b

2、=cLinux下的并發(fā)程序設(shè)計(jì)實(shí)驗(yàn)4.3Voidmain(){……Pid=fork();Ifpid=0thenbeginread(b);exit(0);end;Elseread(a);Return_pid=wait(&status);c=a+b;Write(c);}§3.6進(jìn)程同步與同步進(jìn)程并發(fā)要解決的主要問題互斥:支持并發(fā)進(jìn)程的基本需求是實(shí)現(xiàn)互斥的能力,即,當(dāng)一個(gè)進(jìn)程被授予一資源時(shí),在其活動(dòng)期間,它具有排斥所有其他進(jìn)程使用該資源的能力——并發(fā)的基本需求實(shí)現(xiàn)互斥包括軟件方法(“忙等待”技術(shù))和支持互斥的硬件機(jī)制等同步:進(jìn)程間的活動(dòng)有相互依賴和合作的關(guān)系通信:信號(hào)量、管程、消

3、息-實(shí)現(xiàn)同步、互斥的三方法§3.6進(jìn)程同步與同步并發(fā)的例子及并發(fā)后的問題并發(fā)在同一時(shí)間段內(nèi),多個(gè)進(jìn)程同時(shí)運(yùn)行;宏觀上并發(fā),微觀上順序執(zhí)行。并發(fā)后產(chǎn)生了資源的競(jìng)爭(zhēng)和共享問題,而且進(jìn)程的執(zhí)行速度及進(jìn)程的執(zhí)行序列都是不可預(yù)測(cè)的一個(gè)例子§3.6進(jìn)程同步與同步考慮下面一個(gè)字符回顯的的過程voidecho() {chin=getchar();chout=chin;putchar(chout);}從鍵盤獲得輸入,每擊一下鍵,輸入字符就保存在變量chin中,然后傳送給變量chout,并回送顯示器任何程序可以重復(fù)地調(diào)用此過程,接收用戶輸入,并在用戶的屏幕上顯示§3.6進(jìn)程同步與同步考慮一個(gè)支

4、持單用戶單處理器、多道程序設(shè)計(jì)系統(tǒng)將其當(dāng)作一個(gè)共享過程,載入到所有應(yīng)用程序公用的全局存儲(chǔ)區(qū)中。這樣每個(gè)應(yīng)用程序都能使用這個(gè)過程,由于每個(gè)應(yīng)用程序只需使用echo過程的一個(gè)副本,從而節(jié)省空間進(jìn)程間共享主存是非常有用的,它允許進(jìn)程間有效而緊密的交互,有利于進(jìn)程的相互通信。但是,共享也可能會(huì)帶來(lái)一些問題voidecho() {chin=getchar();chout=chin;putchar(chout);}§3.6進(jìn)程同步與同步考慮下面的順序進(jìn)程P1調(diào)用echo過程,并在getchar函數(shù)結(jié)束后立即被中斷,此時(shí),最近輸入的字符x被保存在變量chin中進(jìn)程P2被激活并調(diào)用echo

5、過程,echo過程運(yùn)行得出結(jié)果,輸入然后在屏幕上顯示單個(gè)的字符y進(jìn)程P1被恢復(fù)。此時(shí)chin中值x被寫覆蓋,因此已丟失,而chin中的值y被傳送給chout并顯示出來(lái)第一個(gè)字符丟失,第2個(gè)字符被顯示了兩次voidecho() {chin=getchar();chout=chin;putchar(chout);}getchar()chinchoutputchar()P1P2getchar()XXgetchar()YYYputchar()YYY?echo§3.6進(jìn)程同步與同步解決方案:一次只允許一個(gè)進(jìn)程調(diào)用echo過程:進(jìn)程P1調(diào)用echo過程,并在getchar函數(shù)結(jié)束后立即

6、被中斷,此時(shí),最近輸入的字符x被保存在變量chin中進(jìn)程P2被激活并調(diào)用echo過程。但是,由于P1仍然在echo過程中,盡管當(dāng)前P1處于就緒狀態(tài),P2仍被阻塞,不能進(jìn)入這個(gè)過程。因此,P2被阻塞,等待echo過程可用一段時(shí)間后進(jìn)程P1被恢復(fù),完成echo的執(zhí)行,顯示出正確的字符xP1退出echo后,解除了P2的阻塞,P2被恢復(fù),成功地調(diào)用echo過程voidecho() {chin=getchar();chout=chin;putchar(chout);}P1voidecho(){chin=getchar();chout=chin;putchar(chout);}調(diào)用ec

7、ho超時(shí),就緒P2調(diào)用echo資源正忙阻塞狀態(tài)調(diào)度運(yùn)行釋放echo喚醒獲取資源就緒狀態(tài)調(diào)度運(yùn)行§3.6進(jìn)程同步與同步由此可見,解決共享資源的保護(hù),唯一的辦法是互斥的使用共享資源(如變量,代碼等)即:一次只允許一個(gè)進(jìn)程訪問共享資源臨界資源和臨界區(qū):臨界資源某些在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程使用的共享資源稱為臨界資源臨界區(qū)(段)訪問臨界資源的程序段稱為臨界區(qū)。即互斥執(zhí)行的程序段p53§3.6進(jìn)程同步與同步進(jìn)程P1和P2共享同一打印機(jī)資源,其操作流程如下:p1:entrycode?使用打印機(jī)?exitcodep2:entry

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。