操作系統(tǒng)PV操作的作業(yè)參考答案_第1頁(yè)
操作系統(tǒng)PV操作的作業(yè)參考答案_第2頁(yè)
操作系統(tǒng)PV操作的作業(yè)參考答案_第3頁(yè)
操作系統(tǒng)PV操作的作業(yè)參考答案_第4頁(yè)
操作系統(tǒng)PV操作的作業(yè)參考答案_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、關(guān)于調(diào)度算法【例1】下表給出作業(yè)I, 2, 3的提交時(shí)間和運(yùn)行時(shí)間。采用先來(lái)先服務(wù)調(diào)度算法和短作業(yè)優(yōu)先調(diào)度算 法,試問(wèn)作業(yè)調(diào)度次序和平均周轉(zhuǎn)時(shí)間各為多少?(時(shí)間單位:小時(shí),以十進(jìn)制進(jìn)行計(jì)算。)作業(yè)號(hào)提交時(shí)間運(yùn)行時(shí)間10.08.020.44.031.01.0分析解這樣的題關(guān)鍵是要根據(jù)系統(tǒng)采用的調(diào)度算法,弄清系統(tǒng)中各道作業(yè)隨時(shí)間的推進(jìn)情況。我們用一個(gè)作業(yè)執(zhí)行時(shí)間圖來(lái)形象地表示作業(yè)的執(zhí)行情況,幫助我們理解此題。采用先來(lái)先服務(wù)調(diào)度算法,是按照作業(yè)提交的先后次序挑選作業(yè),先進(jìn)入的作業(yè)優(yōu)先被挑選。然后按照排隊(duì) 買(mǎi)票”的作業(yè)提童時(shí)問(wèn)客作業(yè)陸續(xù)需成時(shí)間辦法,依次選擇 作業(yè)。其 作業(yè)執(zhí) 行時(shí)間 圖如下:采用短作

2、業(yè)優(yōu)先調(diào)度算法,作業(yè)調(diào)度時(shí)根據(jù)作業(yè)的運(yùn)行時(shí)間,優(yōu)先選擇計(jì)算時(shí)間短且資源能得滿(mǎn)足的作業(yè)。其作業(yè)執(zhí)行時(shí)間圖如下:作業(yè)提交肘間客倍業(yè)陸續(xù)舟成時(shí)間由于作業(yè)1,2, 3是依次到來(lái)的,所以當(dāng)開(kāi)始時(shí)系統(tǒng)中只有作業(yè)1,于是作業(yè)1先被選中。在8.0時(shí)刻,作業(yè)1運(yùn)行完成,這時(shí)系統(tǒng)中有兩道作業(yè)在等待調(diào) 度,作業(yè)2和作業(yè)3,按照短作業(yè)優(yōu)先調(diào)度算法,作業(yè)3只要運(yùn)行1個(gè)時(shí)間單位,而作業(yè) 2要運(yùn)行4個(gè)時(shí)間單位,于是作業(yè)3被優(yōu)先選中,所以作業(yè) 3先運(yùn)行。待作業(yè)3運(yùn)行完畢,最后運(yùn)行作業(yè) 2。作業(yè)調(diào)度的 次序是1, 3, 2。另外,要記住以下公式:作業(yè)i的周轉(zhuǎn)時(shí)間T,=作業(yè)完成時(shí)間一作業(yè)提交時(shí)間系統(tǒng)中個(gè)作業(yè)的平均周轉(zhuǎn)時(shí)間,其中T

3、i為作業(yè)i的周轉(zhuǎn)時(shí)間。解:采用先來(lái)先服務(wù)調(diào)度策略,則調(diào)度次序?yàn)镮、2、3。作業(yè)號(hào)提交時(shí)間運(yùn)行時(shí)間開(kāi)始時(shí)間完成時(shí)間周轉(zhuǎn)時(shí)間10.08.00.08.08.020.44.08.012.011.631.01.012.013.012.0平均周轉(zhuǎn)時(shí)間 T =( 8 + 11.6 + 12) /3= 10.53采用短作業(yè)優(yōu)先調(diào)度策略,則調(diào)度次序?yàn)镮、3、2。作業(yè)號(hào)提交時(shí)間運(yùn)行時(shí)間開(kāi)始時(shí)間完成時(shí)間周轉(zhuǎn)時(shí)間10.08.00.08.08.031.01.08.09.08.020.44.09.013.012.6平均周轉(zhuǎn)時(shí)間 T =( 8 + 8+ 12.6) /3= 9.53思考題1請(qǐng)同學(xué)們判斷這句話(huà):作業(yè)一旦被作業(yè)

4、調(diào)度程序選中,即占有了CPU o ()提示:需要清楚作業(yè)調(diào)度和進(jìn)程調(diào)度的區(qū)別?!纠?】考慮下述頁(yè)面走向:1, 2, 3,4, 2,1, 5,6, 2,1, 2,3, 7,6,3, 2,1, 2,3, 6當(dāng)內(nèi)存塊數(shù)量分別為 3時(shí),試問(wèn)FIFO、LRU、OPT這三種置換算法的缺頁(yè)次數(shù)各是多少答:缺頁(yè)定義為所有內(nèi)存塊最初都是空的,所以第一次用到的頁(yè)面都產(chǎn)生一次缺頁(yè)。當(dāng)內(nèi)存塊數(shù)量為3時(shí):發(fā)生缺頁(yè)中斷的次數(shù)為16在FIFO算法中,先進(jìn)入內(nèi)存的頁(yè)面被先換出。當(dāng)頁(yè)6要調(diào)入時(shí),內(nèi)存的狀態(tài)為前調(diào)入的頁(yè)面,分別為 5、1、2、4,可見(jiàn)4為最先進(jìn)入內(nèi)存的,本次應(yīng)換出,然后把頁(yè)4、1、5,考查頁(yè)6之6調(diào)入內(nèi)存。發(fā)生缺

5、頁(yè)中斷的次數(shù)為15在LRU算法中,最近最少使用的頁(yè)面被先換出。當(dāng)頁(yè) 6要調(diào)入時(shí),內(nèi)存的狀態(tài)為 之前調(diào)入的頁(yè)面,分別為 5、1、2,可見(jiàn)2為最近一段時(shí)間內(nèi)使用最少的,本次應(yīng)換出, 內(nèi)存。5、2、1,考查頁(yè)6然后把頁(yè)6調(diào)入CFT發(fā)生缺頁(yè)中斷的次數(shù)為11。在OPT算法中,在最遠(yuǎn)的將來(lái)才被訪(fǎng)問(wèn)的頁(yè)面被先換出。當(dāng)頁(yè)6要調(diào)入時(shí),內(nèi)存的狀態(tài)為 1、2、5,考查頁(yè)6后面要調(diào)入的頁(yè)面,分別為 2、1、2、,可見(jiàn)5為最近一段時(shí)間內(nèi)使用最少的,本次應(yīng)換出, 然后把頁(yè)6調(diào)入內(nèi)存?!纠?】在一個(gè)單道的程序設(shè)計(jì)系統(tǒng)中,有 3個(gè)作業(yè)J1、J2、J3,它們到達(dá)輸入井的時(shí)間分別為8: 50、9: 00、9: 30,它們需要執(zhí)行

6、的時(shí)間分別為1.5小時(shí)、0.4小時(shí)、1小時(shí)。系統(tǒng)在10: 00按響應(yīng)比高者優(yōu)先算法對(duì)它們進(jìn)行調(diào)度,請(qǐng)回答:(1) 作業(yè)被選中執(zhí)行的次序是什么?(2) 三個(gè)作業(yè)被選中時(shí)的響應(yīng)比分別是多少?分析 響應(yīng)比=作業(yè)周轉(zhuǎn)時(shí)間/作業(yè)運(yùn)行時(shí)間+作業(yè)等待時(shí)間/作業(yè)運(yùn)行時(shí)間系統(tǒng)在10: 00,計(jì)算作業(yè)的響應(yīng)比:以J1為例,它的作業(yè)計(jì)算時(shí)間是1.5小時(shí),即90分鐘;J1從8: 50到達(dá)輸入井,在10: 00時(shí)刻,J1的等待時(shí)間為70分鐘,因此作業(yè) J1的響應(yīng)比為:1 + 70分鐘/90分鐘=1.77同理,J2: 1 + 60分鐘/24分鐘=3.5 J3: 1 + 30分鐘/60分鐘=1.5因此按照響應(yīng)比高者優(yōu)先算法

7、,優(yōu)先調(diào)度J2。在10: 24,J2完成。這時(shí)計(jì)算 J1、J3的響應(yīng)比:J1: 1+( 70 + 24)分鐘 /90 分鐘=2.04 J3: 1+( 30 + 24)分鐘 /60 分鐘=1.9按照響應(yīng)比高者優(yōu)先算法,優(yōu)先調(diào)度J1。在11: 54,J1完成,系統(tǒng)調(diào)度J3, J3的響應(yīng)比為1+( 30+24+ 90)分鐘/60分鐘=3.4因此,作業(yè)被選中執(zhí)行的次序是J2、J1、J3o三個(gè)作業(yè)被選中時(shí)的響應(yīng)比分別是:J1,2.04; J2,3.5; J3,3.4o解:(1) 作業(yè)被選中執(zhí)行的次序是J2、J1、J3o(2) 三個(gè)作業(yè)被選中時(shí)的響應(yīng)比分別是:J1, 1.04; J2,2.5; J3,2.

8、4o思考題2某作業(yè)的提交時(shí)間為10: 30,需要運(yùn)行的時(shí)間為1小時(shí),假設(shè)11: 00開(kāi)始調(diào)度,它的響應(yīng)比是【例4】設(shè)有進(jìn)程A、B、C、D依次進(jìn)入就緒隊(duì)列(相隔一個(gè)時(shí)間單位),它們的優(yōu)先級(jí)(優(yōu)先數(shù)大的優(yōu)先級(jí)較高)如下表所示:進(jìn)程CPU時(shí)間優(yōu)先數(shù)A203B151C84D103試問(wèn)采用 先來(lái)先服務(wù)”、靜態(tài)優(yōu)先數(shù)法”調(diào)度算法(注:優(yōu)先數(shù)大的優(yōu)先級(jí)高),選中進(jìn)程的執(zhí)行次序。解:采用先來(lái)先服務(wù)調(diào)度算法,按照進(jìn)程進(jìn)入就緒隊(duì)列的先后次序占有CPU,其執(zhí)行次序是A-B-C-D。采用靜態(tài)優(yōu)先數(shù)法,進(jìn)程 A最先就緒,在0時(shí)刻先占有CPU運(yùn)行,隨后1時(shí)刻進(jìn)程B進(jìn)入就緒隊(duì)列,2 時(shí)刻進(jìn)程C進(jìn)入就緒隊(duì)列,3時(shí)刻進(jìn)程D進(jìn)入

9、就緒隊(duì)列。由于采用靜態(tài)優(yōu)先數(shù)法,不容許隨時(shí)間的推移改 變進(jìn)程的優(yōu)先級(jí),所以當(dāng)進(jìn)程 A運(yùn)行結(jié)束時(shí),系統(tǒng)的就緒隊(duì)列中有B、C、D三個(gè)進(jìn)程,而進(jìn)程 C優(yōu)先級(jí)最高,于是選中C;這樣分析下去,進(jìn)程的執(zhí)行次序是A-C-D-B。思考題3時(shí)間片輪轉(zhuǎn)調(diào)度算法是為了()。A多個(gè)終端都能得到系統(tǒng)的及時(shí)響應(yīng)B 先來(lái)先服務(wù)C 優(yōu)先級(jí)高的進(jìn)程先使用 CPU D 緊急事件優(yōu)先處理參考解答思考題1:錯(cuò)誤。作業(yè)被作業(yè)調(diào)度程序選中,說(shuō)明作業(yè)處于運(yùn)行狀態(tài),即該作業(yè)進(jìn)入內(nèi)存并以進(jìn)程的形式存在于系統(tǒng)中,但屬于該作業(yè)的進(jìn)程可能處于運(yùn)行、就緒和等待狀態(tài),只有處于運(yùn)行狀態(tài)的進(jìn)程才能占有 處理機(jī),而其余兩種狀態(tài)的進(jìn)程并不占有處理機(jī)。作業(yè)調(diào)度和

10、進(jìn)程調(diào)度的區(qū)別:一個(gè)作業(yè)從進(jìn)入系統(tǒng)到最后完成,一般至少要經(jīng)歷兩級(jí)調(diào)度:作業(yè)調(diào)度和進(jìn)程調(diào)度。作業(yè)調(diào)度是宏觀(guān)上的高級(jí)調(diào)度,它的主要功能是根據(jù)一定的算法,從輸入井中選中若干個(gè)作業(yè),分配必要的資源,如主存、外設(shè)等,為它們建立初始狀態(tài)為就緒的作業(yè)進(jìn)程。進(jìn)程調(diào)度是微觀(guān)上的低級(jí)調(diào)度,它的主要功能是根據(jù)一定的算法將CPU分派給就緒隊(duì)列中的一個(gè)進(jìn)程。般的操作系統(tǒng)都必須有進(jìn)程調(diào)度。可見(jiàn)在多道系統(tǒng)中,作業(yè)調(diào)度與進(jìn)程調(diào)度是相互配合來(lái)實(shí)現(xiàn)多道作業(yè)的并行執(zhí)行的。兩者的關(guān)系可用下圖 表示。思考題2: 1.5 (注:作業(yè)等待 0.5小時(shí),運(yùn)行1小時(shí),響應(yīng)比=1 + 0.5/1=1.5)思考題3: A【例5】考慮一個(gè)由8個(gè)頁(yè)面

11、,每頁(yè)有1024個(gè)字節(jié)組成的邏輯空間,把它裝入到有32個(gè)物理塊的存儲(chǔ)器中,問(wèn):(1) 邏輯地址需要多少二進(jìn)制位表示?(2) 物理地址需要多少二進(jìn)制位表示?分析在分頁(yè)存儲(chǔ)管理中,邏輯地址結(jié)構(gòu)如下圖所示。它由兩個(gè)部分組成:前一部分表示該地址所在頁(yè)面的頁(yè)號(hào)p ;后一部分表示頁(yè)內(nèi)地址(頁(yè)內(nèi)位移) d。頁(yè)號(hào)的地址位數(shù)決定了頁(yè)的多少, 假設(shè)頁(yè)號(hào)有20位,則地址空間中最多可容納的頁(yè)面數(shù)為 220,即1MB個(gè)頁(yè)面。 頁(yè)內(nèi)地址位數(shù)確定了每頁(yè)的大小,若頁(yè)內(nèi)地址為12位,則每頁(yè)大小為212, 即 2KB。同理,物理地址中塊號(hào)的地址位數(shù)決定了塊的數(shù)量。由于頁(yè)式存儲(chǔ)管理內(nèi)存空間塊的大小與頁(yè)面大小相同,所以物理地址中塊內(nèi)

12、地址與邏輯地址中的頁(yè)內(nèi)地址位數(shù)相同。解 因?yàn)轫?yè)面數(shù)為8=23,故需要3位二進(jìn)制數(shù)表示。每頁(yè)有 1024個(gè)字節(jié),1024=210,于是頁(yè)內(nèi)地址需要10 位二進(jìn)制數(shù)表示。32個(gè)物理塊,需要5位二進(jìn)制數(shù)表示(32=25)。(1 )頁(yè)的邏輯地址由頁(yè)號(hào)和頁(yè)內(nèi)地址組成,所以需要3+10=13位二進(jìn)制數(shù)表示。5+10=15位二進(jìn)制數(shù)表示。(2)頁(yè)的物理地址由塊號(hào)和頁(yè)內(nèi)地址的拼接,所以需要1024字節(jié),試將邏輯【例6】若在一分頁(yè)存儲(chǔ)管理系統(tǒng)中,某作業(yè)的頁(yè)表如下所示。已知頁(yè)面大小為 地址1011,2148,4000,5012轉(zhuǎn)化為相應(yīng)的物理地址"000B?"'>頁(yè)號(hào)塊號(hào)<

13、0<1<2<3<2<3<1<6分析頁(yè)式存儲(chǔ)管理的地址結(jié)構(gòu)是一維的,即邏輯地址(或物理地址)只用一個(gè)數(shù)值即可表示。若給定邏輯地址A,頁(yè)面的大小為L(zhǎng),則頁(yè)號(hào)p和頁(yè)內(nèi)地址d可按照下式求得:p=int A/L d=A mod L其中,int是取整函數(shù)(取數(shù)值的整數(shù)部分),mod是取余函數(shù)(取數(shù)值的余數(shù)部分)。頁(yè)表的作用是實(shí)現(xiàn)從頁(yè)號(hào)到物理塊號(hào)的地址映射。以邏輯地址的頁(yè)號(hào)檢索頁(yè)表,得到該頁(yè)的物理塊號(hào);同 時(shí)將頁(yè)內(nèi)地址d直接送入物理地址寄存器的塊內(nèi)地址字段中。這樣物理塊號(hào)和塊內(nèi)地址拼接成了實(shí)際訪(fǎng)問(wèn) 內(nèi)存的地址,從而完成了從邏輯地址到物理地址的轉(zhuǎn)換。所以物理地址的計(jì)算

14、公式為:物理地址=塊的大小(即頁(yè)的大小 L)塊號(hào)f+頁(yè)內(nèi)地址d解:本題中,為了描述方便,設(shè)頁(yè)號(hào)為 p,頁(yè)內(nèi)位移為d,則:(1) 對(duì)于邏輯地址 1011,p= int (1011/1024)= 0,d = 1011 mod 1024 = 1011。查頁(yè)表第 0 頁(yè)在第 2 塊, 所以物理地址為1024'2 + 1011= 3059。(2)對(duì)于邏輯地址2148,p = int ( 2148/1024)= 2,d= 2148 mod 1024= 100。查頁(yè)表第 2頁(yè)在第1塊,所以物理地址為 1024 + 100= 1124(3)對(duì)于邏輯地址4000,p = int ( 4000/1024)

15、= 3,d= 4000 mod 1024= 928。查頁(yè)表第 3頁(yè)在第6塊,所以物理地址為 1024' 6+ 928 = 7072。(4)對(duì)于邏輯地址 5012, p = int ( 5012/1024)= 4, d= 5012 mod 1024= 916。因頁(yè)號(hào)超過(guò)頁(yè)表長(zhǎng)度,該邏輯地址非法?!纠?】某虛擬存儲(chǔ)器的用戶(hù)編程空間共32個(gè)頁(yè)面,每頁(yè)為1KB,內(nèi)存為16KB。假定某時(shí)刻一用戶(hù)頁(yè)表中已調(diào)入內(nèi)存的頁(yè)面的頁(yè)號(hào)和物理塊號(hào)的對(duì)照表如下:頁(yè)號(hào)物理塊號(hào)10則邏輯地址0A5C( H)所對(duì)應(yīng)的物理地址是什么?分析 在分頁(yè)存儲(chǔ)管理方式中,邏輯地址結(jié)構(gòu)為:頁(yè)內(nèi)地址巾如果給定的邏輯地址是 A,頁(yè)面大

16、小為L(zhǎng),則頁(yè)號(hào)p和頁(yè)內(nèi)地址d可按下式求得:p=intA/L d=Amod L 其中,int表示取結(jié)果的整數(shù)部分,mod表示取結(jié)果的余數(shù)部分。頁(yè)號(hào)的位數(shù)表示地址空間中最多可容納的頁(yè)面?zhèn)€數(shù),頁(yè)內(nèi)地址位數(shù)表示第頁(yè)的大小,頁(yè)表的作用是實(shí)現(xiàn)從頁(yè)號(hào)到物理塊號(hào)的 地址映射。在頁(yè)式存儲(chǔ)管理中,邏輯空間頁(yè)的大小與主存地址空間中塊的大小相同。一般:物理地址與頁(yè)號(hào)、塊號(hào)和頁(yè)內(nèi)地址之間存在如下關(guān)系物理地址=塊的大?。?yè)的大小 L)*塊號(hào)+頁(yè)內(nèi)地址d解:頁(yè)式存儲(chǔ)管理的邏輯地址分為兩部分:頁(yè)號(hào)和頁(yè)內(nèi)地址。由已知條件 用戶(hù)編程空間共32個(gè)頁(yè)面”可知頁(yè)號(hào)部分占5位;由 每頁(yè)為1KB,1K=210,可知內(nèi)頁(yè)地址 占10位。由內(nèi)

17、存為16KB,可知有16塊,塊號(hào)為4位。邏輯地址0A5C(H)所對(duì)應(yīng)的二進(jìn)制表示形式是:000 1010 0101 1100,根據(jù)上面的分析,下劃線(xiàn)部分為頁(yè)內(nèi)地址,編碼“000 10”為頁(yè)號(hào),表示該邏輯地址對(duì)應(yīng)的頁(yè)號(hào)為2。查頁(yè)表,得到物理塊號(hào)是4(十進(jìn)制),即物理塊地址為: 01 00,拼接塊內(nèi)地址 10 0101 1100,得01 0010 0101 1100,即125C( H)。邏輯地址0A5C ( H)所對(duì)應(yīng)的物理地址是 125C( H)【例8】某段表內(nèi)容如下:段號(hào)段首地址段長(zhǎng)度0120K40K1760K30K2480K20K3370K20K一邏輯地址為(2, 154)的實(shí)際物理地址為多

18、少?答:邏輯地址(2 ,154)表示段號(hào)為2,即段首地址為480K ,154為單元號(hào),則實(shí)際物理地址為480K+154?!纠?】下表給岀了某系統(tǒng)中的空閑分區(qū)表,系統(tǒng)采用可變式分區(qū)存儲(chǔ)管理策略?,F(xiàn)有以下作業(yè)序列:96K、20K、200K。若采用首次適應(yīng)算法和最佳適應(yīng)算法來(lái)處理這些作業(yè)序列,試問(wèn)哪一種算法可以滿(mǎn)足該作業(yè)的請(qǐng)求,為什么?分區(qū)號(hào)大小起始地址132K100K210K150K35K200K4218K220K596K530K100KL50K解:空閑分區(qū)表如右圖所示,(1) 首次適應(yīng)算法:96K的作業(yè)達(dá)到4區(qū)占用96K,剩余122K,20K的作業(yè)到達(dá)1區(qū),占用20K,剩余12K,200K作業(yè)到

19、達(dá)后無(wú) 足夠空間可用。(2) 最佳適應(yīng)算法:96K作業(yè)進(jìn)入后到5區(qū)占用,20K作業(yè)進(jìn)入 后到達(dá)1區(qū)占用,200K作業(yè)進(jìn)入后到達(dá)4區(qū)。顯然,最佳適應(yīng)算法能滿(mǎn)足要求。關(guān)于PV操作在計(jì)算機(jī)操作系統(tǒng)中,PV操作是進(jìn)程管理中的難點(diǎn) 首先應(yīng)弄清 PV 操作的含義 :PV 操作由 P 操作原語(yǔ)和 V 操作原語(yǔ)組成(原語(yǔ)是不可中斷的過(guò)程) ,對(duì)信號(hào) 量進(jìn)行操作,具體定義如下:P (S):將信號(hào)量 S的值減1,即S=S-1;如果S30,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài),排入等待隊(duì)列。V( S):將信號(hào)量 S的值加1,即S=S+1;如果S>0,則該進(jìn)程繼續(xù)執(zhí)行;否則釋放隊(duì)列中第一個(gè)等待信號(hào)量的進(jìn)程。

20、V操作的意義:我們用信號(hào)量及 PV操作來(lái)實(shí)現(xiàn)進(jìn)程的同步和互斥。PV操作屬于進(jìn)程的低級(jí)通信。什么是信號(hào)量?信號(hào)量(semaphore)的數(shù)據(jù)結(jié)構(gòu)為一個(gè)值和一個(gè)指針,指針指向等待該信號(hào)量的下一個(gè)進(jìn) 程。信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)。當(dāng)它的值大于 0 時(shí),表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小 于0時(shí),其絕對(duì)值表示等待使用該資源的進(jìn)程個(gè)數(shù)。注意,信號(hào)量的值僅能由PV操作來(lái)改變。一般來(lái)說(shuō),信號(hào)量S3)時(shí),S表示可用資源的數(shù)量。執(zhí)行一次P操作意味著請(qǐng)求分配一個(gè)單位資源,因此S的值減1;當(dāng)S<0時(shí),表示已經(jīng)沒(méi)有可用資源,請(qǐng)求者必須等待別的進(jìn)程釋放該類(lèi)資源,它才能運(yùn)行下去。而執(zhí)行一個(gè)V操作意味著釋放

21、一個(gè)單位資源,因此S的值加1 ;若S如,表示有某些進(jìn)程正在等待該資源,因此要喚醒一個(gè)等待狀態(tài)的進(jìn)程,使之運(yùn)行下去。利用信號(hào)量和 PV 操作實(shí)現(xiàn)進(jìn)程互斥的一般模型是:進(jìn)程R進(jìn)程P?進(jìn)程PnP(S); P( S); P(S);臨界區(qū); 臨界區(qū); 臨界區(qū);V(S); V( S); V(S);其中信號(hào)量s用于互斥,初值為1。使用PV操作實(shí)現(xiàn)進(jìn)程互斥時(shí)應(yīng)該注意的是:(1)每個(gè)程序中用戶(hù)實(shí)現(xiàn)互斥的 P、V操作必須成對(duì)出現(xiàn),先做 P操作,進(jìn)臨界區(qū),后做 V操作,出臨界 區(qū)。若有多個(gè)分支,要認(rèn)真檢查其成對(duì)性。(2)P、V 操作應(yīng)分別緊靠臨界區(qū)的頭尾部,臨界區(qū)的代碼應(yīng)盡可能短,不能有死循環(huán)。( 3 )互斥信號(hào)量

22、的初值一般為 1。利用信號(hào)量和 PV 操作實(shí)現(xiàn)進(jìn)程同步PV 操作是典型的同步機(jī)制之一。用一個(gè)信號(hào)量與一個(gè)消息聯(lián)系起來(lái),當(dāng)信號(hào)量的值為0 時(shí),表示期望的消息尚未產(chǎn)生;當(dāng)信號(hào)量的值非 0時(shí),表示期望的消息已經(jīng)存在。用PV操作實(shí)現(xiàn)進(jìn)程同步時(shí),調(diào)用 P操作測(cè)試消息是否到達(dá),調(diào)用 V 操作發(fā)送消息。使用PV操作實(shí)現(xiàn)進(jìn)程同步時(shí)應(yīng)該注意的是:(1)分析進(jìn)程間的制約關(guān)系, 確定信號(hào)量種類(lèi)。 在保持進(jìn)程間有正確的同步關(guān)系情況下, 哪個(gè)進(jìn)程先執(zhí)行, 哪些進(jìn)程后執(zhí)行,彼此間通過(guò)什么資源(信號(hào)量)進(jìn)行協(xié)調(diào),從而明確要設(shè)置哪些信號(hào)量。(2) 信號(hào)量的初值與相應(yīng)資源的數(shù)量有關(guān),也與P、V操作在程序代碼中出現(xiàn)的位置有關(guān)。(

23、3)同一信號(hào)量的 P、 V 操作要成對(duì)出現(xiàn),但它們分別在不同的進(jìn)程代碼中?!纠?10】生產(chǎn)者 -消費(fèi)者問(wèn)題在多道程序環(huán)境下,進(jìn)程同步是一個(gè)十分重要又令人感興趣的問(wèn)題,而生產(chǎn)者-消費(fèi)者問(wèn)題是其中一個(gè)有代表性的進(jìn)程同步問(wèn)題。下面我們給出了各種情況下的生產(chǎn)者-消費(fèi)者問(wèn)題,深入地分析和透徹地理解這個(gè)例子,對(duì)于全面解決操作系統(tǒng)內(nèi)的同步、互斥問(wèn)題將有很大幫助。( 1)一個(gè)生產(chǎn)者,一個(gè)消費(fèi)者,公用一個(gè)緩沖區(qū)。定義兩個(gè)同步信號(hào)量:empty表示緩沖區(qū)是否為空,初值為1。full 表示緩沖區(qū)中是否為滿(mǎn),初值為 0生產(chǎn)者進(jìn)程消費(fèi)者進(jìn)程while(TRUE)while(True)生產(chǎn)一個(gè)產(chǎn)品 ;P(full);P(

24、empty);從 Buffer 取出一個(gè)產(chǎn)品 ;產(chǎn)品送往 Buffer;V(empty);V(full);消費(fèi)該產(chǎn)品 ;(2)一個(gè)生產(chǎn)者,一個(gè)消費(fèi)者,公用n 個(gè)環(huán)形緩沖區(qū)。定義兩個(gè)同步信號(hào)量:empty 表示緩沖區(qū)是否為空,初值為n。full 表示緩沖區(qū)中是否為滿(mǎn),初值為0。設(shè)緩沖區(qū)的編號(hào)為1n-1,定義兩個(gè)指針in和out,分別是生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程使用的指針,指向下 一個(gè)可用的緩沖區(qū)。生產(chǎn)者進(jìn)程消費(fèi)者進(jìn)程while(TRUE)while(TRUE)生產(chǎn)一個(gè)產(chǎn)品 ;P(full);P(empty);從buffer ( out)中取出產(chǎn)品;產(chǎn)品送往 buffer(in);out=(out+1

25、)mod n ;in=(in+1)mod n ;V(empty);V(full);消費(fèi)該產(chǎn)品 ;3)一組生產(chǎn)者,一組消費(fèi)者,公用 n 個(gè)環(huán)形緩沖區(qū)在這個(gè)問(wèn)題中,不僅生產(chǎn)者與消費(fèi)者之間要同步,而且各個(gè)生產(chǎn)者之間、各個(gè)消費(fèi)者之間還必須互斥 地訪(fǎng)問(wèn)緩沖區(qū) 定義四個(gè)信號(hào)量:empty 表示緩沖區(qū)是否為空,初值為n。full 表示緩沖區(qū)中是否為滿(mǎn),初值為0。mutex1 生產(chǎn)者之間的互斥信號(hào)量,初值為1。mutex2 消費(fèi)者之間的互斥信號(hào)量,初值為1。設(shè)緩沖區(qū)的編號(hào)為1n-1,定義兩個(gè)指針in和out,分別是生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程使用的指針,指向下 一個(gè)可用的緩沖區(qū)。生產(chǎn)者進(jìn)程消費(fèi)者進(jìn)程while(TR

26、UE)while(TRUE)生產(chǎn)一個(gè)產(chǎn)品 ;P(full);P(empty);P(mutex2);P(mutex1);從buffer ( out)中取出產(chǎn)品;產(chǎn)品送往 buffer( in);out=(out+1)mod n ;in=(in+1)mod n ;V( mutex2) ;V(mutex1);V(empty);V(full);消費(fèi)該產(chǎn)品 ;需要注意的是無(wú)論在生產(chǎn)者進(jìn)程中還是在消費(fèi)者進(jìn)程中,兩個(gè) P 操作的次序不能顛倒。應(yīng)先執(zhí)行同步信號(hào)量的 P 操作,然后再執(zhí)行互斥信號(hào)量的 P 操作,否則可能造成進(jìn)程死鎖?!纠?11】 桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果,也可向盤(pán)中放桔

27、子,兒子專(zhuān)等吃 盤(pán)中的桔子,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。規(guī)定當(dāng)盤(pán)空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用P、V 原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。分析 在本題中,爸爸、兒子、女兒共用一個(gè)盤(pán)子,盤(pán)中一次只能放一個(gè)水果。當(dāng)盤(pán)子為空時(shí),爸爸可 將一個(gè)水果放入果盤(pán)中。若放入果盤(pán)中的是桔子,則允許兒子吃,女兒必須等待;若放入果盤(pán)中的是蘋(píng)果, 則允許女兒吃,兒子必須等待。本題實(shí)際上是生產(chǎn)者-消費(fèi)者問(wèn)題的一種變形。這里,生產(chǎn)者放入緩沖區(qū)的產(chǎn)品有兩類(lèi),消費(fèi)者也有兩類(lèi),每類(lèi)消費(fèi)者只消費(fèi)其中固定的一類(lèi)產(chǎn)品。解:在本題中,應(yīng)設(shè)置三個(gè)信號(hào)量S、So、Sa,信號(hào)量S表示盤(pán)子是否為空,其初值為I;信號(hào)量So表示盤(pán)中是否有桔子,其初值為0;信號(hào)量Sa表示盤(pán)中是否有蘋(píng)果,其初值為0。同步描述如下:int S= 1;int Sa= 0;int So = 0;main()cobeginfather(); /* 父親進(jìn)程 */son(); /* 兒子進(jìn)程 */daughter(); /* 女兒進(jìn)程 */coendfather()whiIe(1)P(S);將水果放入盤(pán)中 ;V(So);if (放入的是桔子) else V(Sa);son()while(1)P(So);從盤(pán)中取出桔子 ;V(S);吃桔子 ;daughter()while(1)P(Sa);從盤(pán)中取出蘋(píng)果V(s);吃蘋(píng)果;思考題:四個(gè)進(jìn)程A、B、C、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論