版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ì)中的核心問(wèn)題是關(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ā)是所有問(wèn)題的基礎(chǔ),也是操作系統(tǒng)設(shè)計(jì)的基礎(chǔ)。它包括很多設(shè)計(jì)問(wèn)題:分配給進(jìn)程的處理器時(shí)間等;資源的共享與爭(zhēng)用;進(jìn)程間的通信;多個(gè)進(jìn)程活動(dòng)的同步。知識(shí)點(diǎn)回顧知識(shí)點(diǎn)回顧并發(fā)程序程序并發(fā)可以通過(guò)創(chuàng)建進(jìn)程或線程實(shí)現(xiàn)Unix下的并發(fā)程序設(shè)計(jì)通過(guò)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ā)要解決的主要問(wèn)題:互斥:支持并發(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ā)后的問(wèn)題并發(fā)
在同一時(shí)間段內(nèi),多個(gè)進(jìn)程同時(shí)運(yùn)行;宏觀上并發(fā),微觀上順序執(zhí)行。并發(fā)后產(chǎn)生了資源的競(jìng)爭(zhēng)和共享問(wèn)題,而且進(jìn)程的執(zhí)行速度及進(jìn)程的執(zhí)行序列都是不可預(yù)測(cè)的。一個(gè)例子并發(fā)舉例考慮下面一個(gè)字符回顯的的過(guò)程voidecho()
{chin=getchar();
chout=chin;
putchar(chout);}任何程序可以重復(fù)地調(diào)用此過(guò)程,接收用戶輸入,并在用戶的屏幕上顯示。將其當(dāng)作一個(gè)共享過(guò)程,載入到所有應(yīng)用程序公用的全局存儲(chǔ)區(qū)中。這樣每個(gè)應(yīng)用程序都能使用這個(gè)過(guò)程,由于每個(gè)應(yīng)用程序只需使用echo過(guò)程的一個(gè)副本,從而節(jié)省空間。
getchar()chinchout
putchar()P1P2getchar()XXgetchar()YYYputchar()YYYecho解決方案:一次只允許一個(gè)進(jìn)程調(diào)用echo過(guò)程進(jìn)程P1調(diào)用echo過(guò)程,并在getchar函數(shù)結(jié)束后立即被中斷,此時(shí),最近輸入的字符x被保存在變量chin中。進(jìn)程P2被激活并調(diào)用echo過(guò)程。但是,由于P1仍然在echo過(guò)程中,盡管當(dāng)前P1處于就緒狀態(tài),P2仍被阻塞,不能進(jìn)入這個(gè)過(guò)程。因此,P2被阻塞,等待echo過(guò)程可用。一段時(shí)間后進(jìn)程P1被恢復(fù),完成echo的執(zhí)行,顯示出正確的字符x。P1退出echo后,解除了P2的阻塞,P2被恢復(fù),成功地調(diào)用echo過(guò)程。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)行由此可見(jiàn),解決共享資源的保護(hù),唯一的辦法是互斥的使用共享資源(如變量,代碼等)即:一次只允許一個(gè)進(jìn)程訪問(wèn)共享資源臨界資源和臨界區(qū):臨界資源
某些在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程使用的共享資源稱為臨界資源臨界區(qū)(段)訪問(wèn)臨界資源的程序段稱為臨界區(qū)。即互斥執(zhí)行的程序段
3.1進(jìn)程的同步與互斥
進(jìn)程P1和P2共享同一打印機(jī)資源,其操作流程如下:
p1:entrycode使用打印機(jī)exitcodep2:entrycode使用打印機(jī)exitcode系統(tǒng)打印機(jī)即為——臨界資源P1和p2的訪問(wèn)臨界資源打印機(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)程同步舉例例.公共汽車(chē)中的司機(jī)和售票員。
司機(jī)P1售票員P2while(true)while(true){{
啟動(dòng)車(chē)輛;關(guān)門(mén);
正常運(yùn)行;售票;
到站停車(chē);開(kāi)門(mé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)程的同步與互斥
互斥:硬件的支持專門(mén)的機(jī)器指令在硬件級(jí),對(duì)存儲(chǔ)器單元的訪問(wèn)排斥到相同單元的其他訪問(wèn)?;谶@一點(diǎn),處理器的設(shè)計(jì)者提出了一些機(jī)器指令,用于保證兩個(gè)動(dòng)作的原子性,如在一個(gè)取指令周期中對(duì)一個(gè)存儲(chǔ)器單元的讀和寫(xiě)或者讀和測(cè)試。由于這些動(dòng)作在一個(gè)指令周期中執(zhí)行,它們不會(huì)受到其他指令的干擾如:test-and-set指令,swap指令等
3.1進(jìn)程的同步與互斥
實(shí)現(xiàn)同步、互斥的三種主要方法:信號(hào)量管程消息傳遞進(jìn)程間的同步與互斥一般用通信原語(yǔ)來(lái)實(shí)現(xiàn)低級(jí)通信原語(yǔ)——加鎖;P、V操作高級(jí)通信原語(yǔ)——消息緩沖機(jī)制
3.1進(jìn)程的同步與互斥
Lock和unlock關(guān)鎖和開(kāi)鎖是加鎖機(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ū),訪問(wèn)臨界資源3)釋放資源,退出臨界區(qū),置x為1(開(kāi)鎖)通過(guò)分析,給出關(guān)鎖和開(kāi)鎖操作的描述關(guān)鎖lock[x] L:ifx=0thengotoLelsex:=0;開(kāi)鎖unlock[x] x:=1;
互斥的各個(gè)進(jìn)程在各自單獨(dú)執(zhí)行時(shí)都可以得到正確的運(yùn)行結(jié)果,但是當(dāng)它們?cè)谂R界區(qū)內(nèi)交叉執(zhí)行時(shí)就可能出現(xiàn)問(wèn)題。而同步的各個(gè)進(jìn)程,如果各自單獨(dú)執(zhí)行將不會(huì)完成作業(yè)的特定任務(wù),只要當(dāng)它們互相配合、共同協(xié)調(diào)推進(jìn)時(shí)才能得到正確的運(yùn)行結(jié)果?;コ獾倪M(jìn)程只要
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)生聘用期間個(gè)人工作總結(jié)(13篇)
- 藥物濫用社會(huì)工作干預(yù)-洞察分析
- 網(wǎng)絡(luò)輿論心理分析-第1篇-洞察分析
- 戲劇劇本創(chuàng)作-洞察分析
- 信托法司法解釋解讀-洞察分析
- 醫(yī)院個(gè)人一崗雙責(zé)廉潔工作總結(jié)(6篇)
- 《涂裝工程》課件
- 《家庭系統(tǒng)排列講座》課件
- 辦公室文化與家庭教育的融合實(shí)踐
- 醫(yī)學(xué)背景下的數(shù)學(xué)基礎(chǔ)教育研究
- 中級(jí)計(jì)量經(jīng)濟(jì)學(xué)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋浙江工業(yè)大學(xué)
- 教科版二年級(jí)上冊(cè)科學(xué)期末試卷及答案
- 2024年保密工作履職報(bào)告
- 幼兒園班級(jí)幼兒圖書(shū)目錄清單(大中小班)
- (高清版)JGT 225-2020 預(yù)應(yīng)力混凝土用金屬波紋管
- 中國(guó)地理(廣州大學(xué))智慧樹(shù)知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 2024浙江省旅游投資集團(tuán)總部管理人員招聘筆試參考題庫(kù)附帶答案詳解
- 貴州省黔東南州2022-2023學(xué)年八年級(jí)上學(xué)期期末文化水平測(cè)試數(shù)學(xué)試卷(含答案)
- 鋼筋統(tǒng)計(jì)表(插圖有尺寸)
- 部編版六年級(jí)語(yǔ)文上冊(cè)第七單元集體備課教材分析
- 《辦公自動(dòng)化》課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論