操作系統(tǒng)概論-chap3-31-32-進(jìn)程的同步與互斥課件_第1頁
操作系統(tǒng)概論-chap3-31-32-進(jìn)程的同步與互斥課件_第2頁
操作系統(tǒng)概論-chap3-31-32-進(jìn)程的同步與互斥課件_第3頁
操作系統(tǒng)概論-chap3-31-32-進(jìn)程的同步與互斥課件_第4頁
操作系統(tǒng)概論-chap3-31-32-進(jìn)程的同步與互斥課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章同步、通信與死鎖目錄3.1進(jìn)程同步3.2進(jìn)程互斥3.3信號(hào)量與PV操作3.4管程3.5進(jìn)程通信3.6進(jìn)程同步實(shí)例研究3.7死鎖知識(shí)點(diǎ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)的同步。知識(shí)點(diǎn)回顧知識(shí)點(diǎn)回顧并發(fā)程序程序并發(fā)可以通過創(chuàng)建進(jìn)程或線程實(shí)現(xiàn)Unix下的并發(fā)程序設(shè)計(jì)通過fork()創(chuàng)建子進(jìn)程例:a+b=cVoidmain(){……Pid=fork();Ifpid=0thenbeginread(b);exit(0);end;Elseread(a);Return_pid=wait(&status);c=a+b;Write(c);}進(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)量、管程、消息-實(shí)現(xiàn)同步、互斥的三方法。知識(shí)點(diǎ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è)例子并發(fā)舉例考慮下面一個(gè)字符回顯的的過程voidecho()

{chin=getchar();

chout=chin;

putchar(chout);}任何程序可以重復(fù)地調(diào)用此過程,接收用戶輸入,并在用戶的屏幕上顯示。將其當(dāng)作一個(gè)共享過程,載入到所有應(yīng)用程序公用的全局存儲(chǔ)區(qū)中。這樣每個(gè)應(yīng)用程序都能使用這個(gè)過程,由于每個(gè)應(yīng)用程序只需使用echo過程的一個(gè)副本,從而節(jié)省空間。

getchar()chinchout

putchar()P1P2getchar()XXgetchar()YYYputchar()YYYecho解決方案:一次只允許一個(gè)進(jìn)程調(diào)用echo過程進(jìn)程P1調(diào)用echo過程,并在getchar函數(shù)結(jié)束后立即被中斷,此時(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í)行,顯示出正確的字符x。P1退出echo后,解除了P2的阻塞,P2被恢復(fù),成功地調(diào)用echo過程。P1

voidecho()

{chin=getchar();chout=chin;

putchar(chout);}

調(diào)用echo超時(shí),就緒P2調(diào)用echo資源正忙阻塞狀態(tài)調(diào)度運(yùn)行釋放echo喚醒獲取資源就緒狀態(tài)調(diào)度運(yùn)行由此可見,解決共享資源的保護(hù),唯一的辦法是互斥的使用共享資源(如變量,代碼等)即:一次只允許一個(gè)進(jìn)程訪問共享資源臨界資源和臨界區(qū):臨界資源

某些在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程使用的共享資源稱為臨界資源臨界區(qū)(段)訪問臨界資源的程序段稱為臨界區(qū)。即互斥執(zhí)行的程序段

3.1進(jìn)程的同步與互斥

進(jìn)程P1和P2共享同一打印機(jī)資源,其操作流程如下:

p1:entrycode使用打印機(jī)exitcodep2:entrycode使用打印機(jī)exitcode系統(tǒng)打印機(jī)即為——臨界資源P1和p2的訪問臨界資源打印機(jī)的代碼即為——臨界區(qū)

3.1進(jìn)程的同步與互斥

進(jìn)程的通信方式之一——同步與互斥同步:進(jìn)程間必須互相合作的協(xié)同關(guān)系,有前后次序的等待和信息交換關(guān)系,這種進(jìn)程間的直接制約關(guān)系稱為進(jìn)程同步?;コ猓簝蓚€(gè)進(jìn)程,當(dāng)一個(gè)進(jìn)程進(jìn)入臨界區(qū)時(shí),另一個(gè)進(jìn)程不能進(jìn)入該臨界區(qū),這種進(jìn)程間的間接制約關(guān)系稱為進(jìn)程互斥。

3.1進(jìn)程的同步與互斥

1.進(jìn)程同步舉例例.公共汽車中的司機(jī)和售票員。

司機(jī)P1售票員P2while(true)while(true){{

啟動(dòng)車輛;關(guān)門;

正常運(yùn)行;售票;

到站停車;開門;

}}

3.1進(jìn)程的同步與互斥

通常,把共同完成一個(gè)任務(wù)的若干進(jìn)程稱為合作進(jìn)程。合作進(jìn)程在并發(fā)執(zhí)行時(shí)必須同步推進(jìn)才能得到正確的執(zhí)行結(jié)果。

3.1進(jìn)程的同步與互斥

互斥:硬件的支持中斷禁用在單處理器機(jī)器中,并發(fā)進(jìn)程不能重疊,只能交替。此外,一個(gè)進(jìn)程將一直運(yùn)行,直到它調(diào)用了一個(gè)操作系統(tǒng)服務(wù)或被中斷。因此,為保證互斥,只需要保證一個(gè)進(jìn)程不被中斷就可以。當(dāng)一個(gè)計(jì)算機(jī)系統(tǒng)包括多個(gè)處理器時(shí),在這種情況下,禁止中斷不能保證互斥。

3.1進(jìn)程的同步與互斥

互斥:硬件的支持專門的機(jī)器指令在硬件級(jí),對(duì)存儲(chǔ)器單元的訪問排斥到相同單元的其他訪問?;谶@一點(diǎn),處理器的設(shè)計(jì)者提出了一些機(jī)器指令,用于保證兩個(gè)動(dòng)作的原子性,如在一個(gè)取指令周期中對(duì)一個(gè)存儲(chǔ)器單元的讀和寫或者讀和測(cè)試。由于這些動(dòng)作在一個(gè)指令周期中執(zhí)行,它們不會(huì)受到其他指令的干擾如:test-and-set指令,swap指令等

3.1進(jìn)程的同步與互斥

實(shí)現(xiàn)同步、互斥的三種主要方法:信號(hào)量管程消息傳遞進(jìn)程間的同步與互斥一般用通信原語來實(shí)現(xiàn)低級(jí)通信原語——加鎖;P、V操作高級(jí)通信原語——消息緩沖機(jī)制

3.1進(jìn)程的同步與互斥

Lock和unlock關(guān)鎖和開鎖是加鎖機(jī)制的2個(gè)基本操作。在其中設(shè)置一公共變量x代表某個(gè)臨界資源的狀態(tài)。

X=1表示資源可用

X=0表示資源正在被使用進(jìn)程使用臨界資源必須做如下三個(gè)不可分割的操作。

3.1進(jìn)程的同步與互斥

Lock和unlock

1)檢查x的值。x=0,資源正在使用,返回繼續(xù)進(jìn)行檢查;

x=1,資源可以使用,置x為0(關(guān)鎖)2)進(jìn)入臨界區(qū),訪問臨界資源3)釋放資源,退出臨界區(qū),置x為1(開鎖)通過分析,給出關(guān)鎖和開鎖操作的描述關(guān)鎖lock[x] L:ifx=0thengotoLelsex:=0;開鎖unlock[x] x:=1;

互斥的各個(gè)進(jìn)程在各自單獨(dú)執(zhí)行時(shí)都可以得到正確的運(yùn)行結(jié)果,但是當(dāng)它們?cè)谂R界區(qū)內(nèi)交叉執(zhí)行時(shí)就可能出現(xiàn)問題。而同步的各個(gè)進(jìn)程,如果各自單獨(dú)執(zhí)行將不會(huì)完成作業(yè)的特定任務(wù),只要當(dāng)它們互相配合、共同協(xié)調(diào)推進(jìn)時(shí)才能得到正確的運(yùn)行結(jié)果?;コ獾倪M(jìn)程只要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論