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

下載本文檔

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

文檔簡介

第3章同步、通信與死鎖目錄3.1進程同步3.2進程互斥3.3信號量與PV操作3.4管程3.5進程通信3.6進程同步實例研究3.7死鎖知識點回顧操作系統(tǒng)設計中的核心問題是關(guān)于進程和線程的管理:多道程序技術(shù) 管理單處理器系統(tǒng)中的多個進程多處理技術(shù) 管理多處理器系統(tǒng)中的多個進程分布處理技術(shù) 管理多臺分布式計算機系統(tǒng)(集群)中多個進程的執(zhí)行并發(fā)程序并發(fā)是所有問題的基礎,也是操作系統(tǒng)設計的基礎。它包括很多設計問題:分配給進程的處理器時間等;資源的共享與爭用;進程間的通信;多個進程活動的同步。知識點回顧知識點回顧并發(fā)程序程序并發(fā)可以通過創(chuàng)建進程或線程實現(xiàn)Unix下的并發(fā)程序設計通過fork()創(chuàng)建子進程例:a+b=cVoidmain(){……Pid=fork();Ifpid=0thenbeginread(b);exit(0);end;Elseread(a);Return_pid=wait(&status);c=a+b;Write(c);}進程并發(fā)要解決的主要問題:互斥:支持并發(fā)進程的基本需求是實現(xiàn)互斥的能力,即,當一個進程被授予一資源時,在其活動期間,它具有排斥所有其他進程使用該資源的能力——并發(fā)的基本需求。實現(xiàn)互斥包括軟件方法(“忙等待”技術(shù))和支持互斥的硬件機制等。同步:進程間的活動有相互依賴和合作的關(guān)系。通信:信號量、管程、消息-實現(xiàn)同步、互斥的三方法。知識點回顧并發(fā)的例子及并發(fā)后的問題并發(fā)

在同一時間段內(nèi),多個進程同時運行;宏觀上并發(fā),微觀上順序執(zhí)行。并發(fā)后產(chǎn)生了資源的競爭和共享問題,而且進程的執(zhí)行速度及進程的執(zhí)行序列都是不可預測的。一個例子并發(fā)舉例考慮下面一個字符回顯的的過程voidecho()

{chin=getchar();

chout=chin;

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

getchar()chinchout

putchar()P1P2getchar()XXgetchar()YYYputchar()YYYecho解決方案:一次只允許一個進程調(diào)用echo過程進程P1調(diào)用echo過程,并在getchar函數(shù)結(jié)束后立即被中斷,此時,最近輸入的字符x被保存在變量chin中。進程P2被激活并調(diào)用echo過程。但是,由于P1仍然在echo過程中,盡管當前P1處于就緒狀態(tài),P2仍被阻塞,不能進入這個過程。因此,P2被阻塞,等待echo過程可用。一段時間后進程P1被恢復,完成echo的執(zhí)行,顯示出正確的字符x。P1退出echo后,解除了P2的阻塞,P2被恢復,成功地調(diào)用echo過程。P1

voidecho()

{chin=getchar();chout=chin;

putchar(chout);}

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

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

3.1進程的同步與互斥

進程P1和P2共享同一打印機資源,其操作流程如下:

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

3.1進程的同步與互斥

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

3.1進程的同步與互斥

1.進程同步舉例例.公共汽車中的司機和售票員。

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

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

正常運行;售票;

到站停車;開門;

}}

3.1進程的同步與互斥

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

3.1進程的同步與互斥

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

3.1進程的同步與互斥

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

3.1進程的同步與互斥

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

3.1進程的同步與互斥

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

X=1表示資源可用

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

3.1進程的同步與互斥

Lock和unlock

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

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

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

溫馨提示

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

評論

0/150

提交評論