資源描述:
《操作系統(tǒng)教程(第4版),孫鐘秀主編,高等教育出版社 第3章 同步、通信與死鎖課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、第3章同步、通信與死鎖主要內(nèi)容并發(fā)進(jìn)程臨界區(qū)管理信號(hào)量與PV操作管程進(jìn)程通信死鎖Linux同步機(jī)制和通信機(jī)制Windows2003同步機(jī)制和通信13.1并發(fā)進(jìn)程3.1.1順序程序設(shè)計(jì)3.1.2進(jìn)程的并發(fā)性3.1.3進(jìn)程的交互:協(xié)作和競(jìng)爭(zhēng)23.1.1順序程序設(shè)計(jì)進(jìn)程的順序性一個(gè)進(jìn)程在順序處理器上的執(zhí)行是嚴(yán)格按序的,一個(gè)進(jìn)程只有當(dāng)一個(gè)操作結(jié)束后,才能開始后繼操作。順序程序設(shè)計(jì)是把一個(gè)程序設(shè)計(jì)成一個(gè)順序執(zhí)行的程序模塊,順序的含義不但指一個(gè)程序模塊內(nèi)部,也指兩個(gè)程序模塊之間。3順序程序設(shè)計(jì)特點(diǎn)程序執(zhí)行的順序性
2、程序環(huán)境的封閉性程序執(zhí)行結(jié)果的確定性計(jì)算過(guò)程的可再現(xiàn)性順序程序設(shè)計(jì)的缺點(diǎn)計(jì)算機(jī)系統(tǒng)效率不高。43.1.2進(jìn)程的并發(fā)性1、并發(fā)程序設(shè)計(jì)進(jìn)程執(zhí)行的并發(fā)性:一組進(jìn)程的執(zhí)行在時(shí)間上是重疊的。并發(fā)性舉例:有兩個(gè)進(jìn)程A(a1、a2、a3)和B(b1、b2、b3)并發(fā)執(zhí)行。a1、a2、a3、b1、b2、b3順序執(zhí)行a1、b1、a2、b2、a3、b3并發(fā)執(zhí)行從宏觀上看,并發(fā)性反映一個(gè)時(shí)間段中幾個(gè)進(jìn)程都在同一處理器上,處于運(yùn)行還未運(yùn)行結(jié)束狀態(tài)。從微觀上看,任一時(shí)刻僅有一個(gè)進(jìn)程在處理器上運(yùn)行。5并行工作圖示進(jìn)程i1p1i
3、poo1i2p2o2i3p3o3t1t2t3時(shí)間并行工作i4t4i5P4t56并發(fā)的實(shí)質(zhì)并發(fā)的實(shí)質(zhì)是一個(gè)處理器在幾個(gè)進(jìn)程之間的多路復(fù)用,并發(fā)是對(duì)有限的物理資源強(qiáng)制行使多用戶共享,消除計(jì)算機(jī)部件之間的互等現(xiàn)象,以提高系統(tǒng)資源利用率。72、并發(fā)進(jìn)程的特性無(wú)關(guān)的并發(fā)進(jìn)程一組并發(fā)進(jìn)程分別在不同的變量集合上操作,一個(gè)進(jìn)程的執(zhí)行與其他并發(fā)進(jìn)程的進(jìn)展無(wú)關(guān)。并發(fā)進(jìn)程的無(wú)關(guān)性是進(jìn)程的執(zhí)行與時(shí)間無(wú)關(guān)的一個(gè)充分條件,又稱為Bernstein條件。交往的并發(fā)進(jìn)程一組并發(fā)進(jìn)程共享某些變量,一個(gè)進(jìn)程的執(zhí)行可能影響其他并發(fā)進(jìn)程的結(jié)
4、果。8Bernstein條件R(pi)={a1,a2,…an},程序pi在執(zhí)行期間引用的變量集W(pi)={b1,b2,…bm},程序pi在執(zhí)行期間改變的變量集若兩個(gè)程序的變量集交集之和為空集:R(p1)∩W(p2)∪R(p2)∩W(p1)∪W(p1)∩W(p2)={}則并發(fā)進(jìn)程的執(zhí)行與時(shí)間無(wú)關(guān)。9Bernstein條件舉例例如,有如下四條語(yǔ)句:S1:a:=x+yS2:b:=z+1S3:c:=a–bS4:w:=c+1于是有:R(S1)={x,y},R(S2)={z},R(S3)={a,b},R(S4)
5、={c};W(S1)={a},W(S2)=,W(S3)={c},W(S4)={w}。S1和S2可并發(fā)執(zhí)行,滿足Bernstein條件。其他語(yǔ)句并發(fā)執(zhí)行可能會(huì)產(chǎn)生與時(shí)間有關(guān)的錯(cuò)誤。10并發(fā)程序設(shè)計(jì)的優(yōu)點(diǎn)對(duì)于單處理器系統(tǒng),可讓處理器和各I/O設(shè)備同時(shí)工作,發(fā)揮硬部件的并行能力。對(duì)于多處理器系統(tǒng),可讓各進(jìn)程在不同處理器上物理地并行,加快計(jì)算速度。簡(jiǎn)化了程序設(shè)計(jì)任務(wù)。11采用并發(fā)程序設(shè)計(jì)的目的充分發(fā)揮硬件的并行性,提高系統(tǒng)效率。硬件能并行工作僅有了提高效率的可能性,硬部件并行性的實(shí)現(xiàn)需要軟件技術(shù)去利用和
6、發(fā)揮,這種軟件技術(shù)就是并發(fā)程序設(shè)計(jì)。并發(fā)程序設(shè)計(jì)是多道程序設(shè)計(jì)的基礎(chǔ),多道程序的實(shí)質(zhì)就是把并發(fā)程序設(shè)計(jì)引入到系統(tǒng)中。123、與時(shí)間有關(guān)的錯(cuò)誤對(duì)于一組交往的并發(fā)進(jìn)程,執(zhí)行的相對(duì)速度無(wú)法相互控制,各種與時(shí)間有關(guān)的錯(cuò)誤就可能出現(xiàn)。與時(shí)間有關(guān)錯(cuò)誤的表現(xiàn)形式:結(jié)果不唯一永遠(yuǎn)等待13(結(jié)果不唯一)機(jī)票問(wèn)題//飛機(jī)票售票問(wèn)題voidT1(){voidT2(){{按旅客訂票要求找到Aj};{按旅客訂票要求找到Aj};intX1=Aj;intX2=Aj;if(X1>=1){if(X2>=1){X1--;X2--;Aj=
7、X1;Aj=X2;{輸出一張票};{輸出一張票};}}elseelse{輸出信息"票已售完"};{輸出信息"票已售完"};}}14T1、T2并發(fā)執(zhí)行,可能出現(xiàn)如下交叉情況:T1:X1=Aj;//X1=mT2:X2=Aj;//X2=mT2:X2--;Aj=X2;{輸出一張票};//Aj=m-1T1:X1--;Aj=X1;{輸出一張票};//Aj=m-1同一張票賣給兩位旅客15(永遠(yuǎn)等待)主存管理問(wèn)題申請(qǐng)和歸還主存資源問(wèn)題intX=memory;//memory為初始主存容量voidborrow(intB
8、){voidreturn(intB){while(B>X)X=X+B;{進(jìn)程進(jìn)入等待主存資源隊(duì)列};{修改主存分配表};X=X-B;{釋放等主存資源進(jìn)程};{修改主存分配表,進(jìn)程獲得主存資源};}}16若對(duì)borrow和return的并發(fā)執(zhí)行不加限制將會(huì)導(dǎo)致錯(cuò)誤,例如:Borrow:while(B>X);Return:X=X+B;{修改主存分配表};{釋放等待主存資源的進(jìn)程};此時(shí),因?yàn)閎orrow還沒(méi)有進(jìn)入等待隊(duì)列,因此,return的釋放操作是空操作