中南大學數(shù)學院計算機操作系統(tǒng)進程通信學習教案_第1頁
中南大學數(shù)學院計算機操作系統(tǒng)進程通信學習教案_第2頁
中南大學數(shù)學院計算機操作系統(tǒng)進程通信學習教案_第3頁
中南大學數(shù)學院計算機操作系統(tǒng)進程通信學習教案_第4頁
中南大學數(shù)學院計算機操作系統(tǒng)進程通信學習教案_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、會計學1中南大學數(shù)學院計算機操作系統(tǒng)進程中南大學數(shù)學院計算機操作系統(tǒng)進程(jnchng)通信通信第一頁,共85頁。24.1.1 同步同步(tngb)與互斥的概念與互斥的概念 兩個或兩個以上的進程要協(xié)作完成一個任務(wù),它們之間就要互相配合,需要在某些動作之間進行同步。 進程間另一種關(guān)系(gun x)是互斥,這種關(guān)系(gun x)一般發(fā)生在兩個或兩個以上的進程競爭某些同時只能被一個進程使用的資源的情況下。第1頁/共85頁第二頁,共85頁。3臨界臨界(ln ji)(ln ji)資源與臨界資源與臨界(ln (ln ji)ji)段段第2頁/共85頁第三頁,共85頁。4 : : : :結(jié)果結(jié)果(ji gu)

2、(ji gu):countcount2 2設(shè)設(shè)count初值初值0第3頁/共85頁第四頁,共85頁。5countP1、P2訪問count的兩個程序段就是臨界段,諸進程(jnchng)必須互斥地進入臨界段。第4頁/共85頁第五頁,共85頁。6 鎖可以用于控制臨界段的互斥執(zhí)行。鎖有兩個狀態(tài),一個是打開狀態(tài),另一個是關(guān)閉(gunb)狀態(tài),故鎖可以用布爾變量表示。在C中,鎖變量可以定義為char或int類型變量。設(shè)x為鎖變量,則定義: x = 0 鎖的打開狀態(tài);1 鎖的關(guān)閉(gunb)狀態(tài)。4.2.1 鎖的表示鎖的表示(biosh)和操和操作作第5頁/共85頁第六頁,共85頁。7態(tài)時發(fā)現(xiàn)它處于關(guān)閉狀態(tài)

3、,態(tài)時發(fā)現(xiàn)它處于關(guān)閉狀態(tài),就只能在臨界就只能在臨界(ln ji)段外等段外等待。待。用鎖變量用鎖變量(binling)控制臨界段的執(zhí)控制臨界段的執(zhí)行行第6頁/共85頁第七頁,共85頁。8 (a)LOCK (x) x=0 ?x=1臨界臨界(ln ji)段段+-UNLOCK (x)臨界臨界(ln ji)段段x=0(b)第7頁/共85頁第八頁,共85頁。9它處于打開狀態(tài),于是關(guān)閉該它處于打開狀態(tài),于是關(guān)閉該鎖,并進入臨界段。那么兩個鎖,并進入臨界段。那么兩個進程就同時處于一個臨界段之進程就同時處于一個臨界段之中。中。第8頁/共85頁第九頁,共85頁。10第9頁/共85頁第十頁,共85頁。112. 交

4、換指令交換指令(zhlng)用用8086指令指令(zhlng)實現(xiàn)鎖操作實現(xiàn)鎖操作check:MOV AL, 1 ;置測試單元寄存器;置測試單元寄存器AL的值為的值為1LOCK XCHG X, AL ;在本指令的執(zhí)行時封鎖;在本指令的執(zhí)行時封鎖(fn su)總線,總線, ;交換鎖變量;交換鎖變量X與測試單元的值與測試單元的值TEST AL, AL ;測試;測試AL的值的值JNZ check ;如;如AL非非0,即原鎖處于關(guān)閉狀態(tài),即原鎖處于關(guān)閉狀態(tài),: ;跳轉(zhuǎn)至;跳轉(zhuǎn)至check,重復(fù)測試過程,重復(fù)測試過程臨界段臨界段 ;鎖變量;鎖變量X已置為已置為1第10頁/共85頁第十一頁,共85頁。12

5、 3)采用開、關(guān)中斷的硬件鎖方法禁止了其他無關(guān)的進程進入不同的臨界段,這種做法顯然傷害了很多的“無辜者”。 關(guān)中斷(zhngdun) 臨界區(qū) 開中斷(zhngdun)第11頁/共85頁第十二頁,共85頁。13n由于軟件鎖是一種程序長度最短的臨界段,故用開、關(guān)中斷的方法保證鎖操作的完整性幾乎不會影響到系統(tǒng)響應(yīng)其他的中斷請求。n用軟件鎖保證臨界段執(zhí)行的獨占性,不會影響到其他無關(guān)進程進入不同的臨界段,這是一種安全而高效的鎖。LOCK(x) 關(guān)中斷關(guān)中斷 開中斷開中斷 x=0? + x=1 開中斷開中斷 臨界臨界(ln ji)段段圖圖4-3 復(fù)合鎖的操作流程復(fù)合鎖的操作流程第12頁/共85頁第十三頁,

6、共85頁。14第13頁/共85頁第十四頁,共85頁。15第14頁/共85頁第十五頁,共85頁。16voidsemSignal(s)semaphores;if ( +s.value = 0 ) 從等待隊列從等待隊列queue中移出一進程中移出一進程(jnchng);將該進程將該進程(jnchng)置入就緒隊列中;置入就緒隊列中;voidsemWait(s)semaphores ;if ( -s.value 0 ) 將進程將進程(jnchng)置入等待隊列置入等待隊列queue中;中;封鎖進程封鎖進程(jnchng);轉(zhuǎn)進程轉(zhuǎn)進程(jnchng)調(diào)度程序;調(diào)度程序;第15頁/共85頁第十六頁,共8

7、5頁。17置信號燈置信號燈s的初值為的初值為1 P1 Pi PnsemWait(s) semWait (s) semWait (s) 臨界段臨界段臨界段臨界段 臨界段臨界段 semSignal(s) semSignal(s) semSignal (s)圖圖4-4 信號燈用于進程間互斥信號燈用于進程間互斥第16頁/共85頁第十七頁,共85頁。18s取值為取值為i, -(n-1) i-1,表示當,表示當前有前有|i|個進程被阻塞。個進程被阻塞。兩個并發(fā)兩個并發(fā)(bngf)進程涉及一個臨進程涉及一個臨界段界段第17頁/共85頁第十八頁,共85頁。19置信號燈置信號燈s的初值為的初值為0 Pa Pb計

8、算計算func1( ) 計算計算func2( )L1:semWait(s) 將計算結(jié)果存入緩沖區(qū)將計算結(jié)果存入緩沖區(qū)獲得獲得Pb的計算結(jié)果的計算結(jié)果 L2:semSignal(s) 計算乘積計算乘積 : :圖圖4-5 阻塞阻塞喚醒協(xié)議喚醒協(xié)議(xiy)的實現(xiàn)的實現(xiàn)第18頁/共85頁第十九頁,共85頁。20第19頁/共85頁第二十頁,共85頁。21 設(shè)有兩個進程(jnchng)Pa和Pb。進程(jnchng)Pa每次執(zhí)行一個計算,并將結(jié)果存入一個緩沖區(qū); 進程(jnchng)Pb則從緩沖區(qū)中取出結(jié)果,并將結(jié)果打印出來。第20頁/共85頁第二十一頁,共85頁。22第21頁/共85頁第二十二頁,共8

9、5頁。23緩沖區(qū)空緩沖區(qū)空第22頁/共85頁第二十三頁,共85頁。24 計算計算(j sun)(j sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)第23頁/共85頁第二十四頁,共85頁。25信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖:緩沖(hunchng)區(qū)還未存入數(shù)據(jù)區(qū)還未存入數(shù)據(jù) S2為為1:

10、緩沖:緩沖(hunchng)空閑(相當于空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計算計算(j sun)(j sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)2第24頁/共85頁第二十五頁,共85頁。26信號燈的初值可設(shè)置信號燈的初值可設(shè)置(shzh)為:為: S1為為0:緩沖區(qū)還未存入數(shù)據(jù):緩沖區(qū)還未存入數(shù)據(jù) S2為

11、為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計 算計 算 ( j ( j sun)sun)進程進程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)23(0)第25頁/共85頁第二十六頁,共85頁。27信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖:緩沖(hunchng)區(qū)還未存入數(shù)據(jù)

12、區(qū)還未存入數(shù)據(jù) S2為為1:緩沖:緩沖(hunchng)空閑(相當于空閑(相當于Pb已取走已取走數(shù)據(jù))數(shù)據(jù)) 計算計算(j sun)(j sun)進程進程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)23(0)4第26頁/共85頁第二十七頁,共85頁。28信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖區(qū)還未

13、存入:緩沖區(qū)還未存入(cn r)數(shù)據(jù)數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計算計算(j sun)(j sun)進程進程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)23(0)45(0)第27頁/共85頁第二十八頁,共85頁。29信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為

14、為0:緩沖:緩沖(hunchng)區(qū)還未存入數(shù)據(jù)區(qū)還未存入數(shù)據(jù) S2為為1:緩沖:緩沖(hunchng)空閑(相當于空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計算計算(j sun)(j sun)進進程程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)2, 63(0)45(0)第28頁/共85頁第二十九頁,共85頁。30信號燈

15、的初值可設(shè)置信號燈的初值可設(shè)置(shzh)為:為: S1為為0:緩沖區(qū)還未存入數(shù)據(jù):緩沖區(qū)還未存入數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計 算計 算 ( j ( j sun)sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)2, 63(0), 7(-1)45(0)第29頁/共8

16、5頁第三十頁,共85頁。31信號燈的初值可設(shè)置信號燈的初值可設(shè)置(shzh)為:為: S1為為0:緩沖區(qū)還未存入數(shù)據(jù):緩沖區(qū)還未存入數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計算計算(j sun)(j sun)進進程程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)2, 63(0),

17、7(-1)45(0)8第30頁/共85頁第三十一頁,共85頁。32信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖區(qū)還未存入:緩沖區(qū)還未存入(cn r)數(shù)據(jù)數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計 算計 算 ( j ( j sun)sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間

18、的全同步1(-1)2, 63(0), 7(-1)45(0)89(0)第31頁/共85頁第三十二頁,共85頁。33信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖區(qū)還未存入數(shù)據(jù):緩沖區(qū)還未存入數(shù)據(jù)(shj) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù)已取走數(shù)據(jù)(shj)) 計算計算(j sun)(j sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-

19、64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1)2, 63(0), 7(-1)45(0)89(0)10第32頁/共85頁第三十三頁,共85頁。34信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖:緩沖(hunchng)區(qū)還未存入數(shù)據(jù)區(qū)還未存入數(shù)據(jù) S2為為1:緩沖:緩沖(hunchng)空閑(相當于空閑(相當于Pb已已取走數(shù)據(jù))取走數(shù)據(jù)) 計算計算(j sun)(j sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (result) put (result) semSignal

20、(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1), 11(-1)2, 63(0), 7(-1)45(0)89(0)10第33頁/共85頁第三十四頁,共85頁。35信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖區(qū)還未存入:緩沖區(qū)還未存入(cn r)數(shù)據(jù)數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計算計算(j sun)(j sun)進程進程Pa打印打印(d yn)(d yn)進程進程Pb computing semWait(s1) semWait(s2) get (re

21、sult) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1), 11(-1)2, 63(0), 7(-1)4, 125(0)89(0)10第34頁/共85頁第三十五頁,共85頁。36信號燈的初值可設(shè)置為:信號燈的初值可設(shè)置為: S1為為0:緩沖區(qū)還未存入:緩沖區(qū)還未存入(cn r)數(shù)據(jù)數(shù)據(jù) S2為為1:緩沖空閑(相當于:緩沖空閑(相當于Pb已取走數(shù)據(jù))已取走數(shù)據(jù)) 計 算計 算 ( j ( j sun)sun)進程進程Pa打 印打 印 ( d ( d yn)yn)進程進程Pb

22、 computing semWait(s1) semWait(s2) get (result) put (result) semSignal(s2) semSignal(s1) printing圖圖 4-64-6 兩個進程之間的全同步兩個進程之間的全同步1(-1), 11(-1)2, 63(0), 7(-1)4, 125(0)89(0)10第35頁/共85頁第三十六頁,共85頁。37第36頁/共85頁第三十七頁,共85頁。38第37頁/共85頁第三十八頁,共85頁。39 producers: customers:producers: customers: while ( ) while ( )

23、 produce next product; semWait (products); semWait (buffers); get product from buffers; Put product into buffers; semSignal (buffers) semSignal (products);consume product; 第38頁/共85頁第三十九頁,共85頁。40 請仔細推敲semWait、semSignal操作(cozu)的次序。這些操作(cozu)的次序安排得不合理,就有可能發(fā)生“死鎖”。第39頁/共85頁第四十頁,共85頁。41第40頁/共85頁第四十一頁,共85頁

24、。42第41頁/共85頁第四十二頁,共85頁。43解決讀者解決讀者(dzh)寫者問題的算寫者問題的算法法 信號燈初值:mutex 為1 wrt為1 計數(shù)器變量(binling):int count = 0 writors: while ( ) semWait(wrt); write information semSignal(wrt); 第42頁/共85頁第四十三頁,共85頁。44第43頁/共85頁第四十四頁,共85頁。45v 消息通信的基本思想是由系統(tǒng)的消息通信機構(gòu)統(tǒng)一管理一組空閑的消息緩沖區(qū)。v 一個進程要向另一個進程發(fā)送消息,先要向系統(tǒng)申請一個緩沖區(qū),填寫了消息正文和其他有關(guān)消息的特征、

25、控制信息后,通過消息通信機構(gòu)將該消息送到接收其他消息隊列中。v 接收進程在一個適當時機從消息隊列中移出一個消息,讀取所有的信息后,再釋放消息緩沖區(qū)。v 一個消息緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)(sh j ji u)中除了要包括消息的正文外,一般還要包括其他有關(guān)的控制信息。第44頁/共85頁第四十五頁,共85頁。46第45頁/共85頁第四十六頁,共85頁。47msgsnd和和msgrcv系統(tǒng)系統(tǒng)(xtng)調(diào)調(diào)用用第46頁/共85頁第四十七頁,共85頁。48第47頁/共85頁第四十八頁,共85頁。49共享存儲共享存儲(cn ch)區(qū)(續(xù))區(qū)(續(xù))n如未找到指定關(guān)鍵字的表項,系統(tǒng)就根據(jù)進程對如未找到指定關(guān)鍵字的表

26、項,系統(tǒng)就根據(jù)進程對共享存儲區(qū)的大小及存取控制權(quán)的要求,分配一共享存儲區(qū)的大小及存取控制權(quán)的要求,分配一個空閑個空閑(kngxin)的頁表區(qū)和空閑的頁表區(qū)和空閑(kngxin)的內(nèi)存塊,在共享存儲區(qū)段表中填入共享段的關(guān)的內(nèi)存塊,在共享存儲區(qū)段表中填入共享段的關(guān)鍵字、大小、共享段的頁表始址及存取控制權(quán)等鍵字、大小、共享段的頁表始址及存取控制權(quán)等信息,并返回該表項的描述符。信息,并返回該表項的描述符。n接下來進程就可以通過該共享存儲區(qū)的描述字,接下來進程就可以通過該共享存儲區(qū)的描述字,將共享存儲段映射到進程的虛地址空間。將共享存儲段映射到進程的虛地址空間。第48頁/共85頁第四十九頁,共85頁。5

27、0第49頁/共85頁第五十頁,共85頁。51 1. 信號信號(xnho)的概念的概念v UNIX提供了一組軟中斷信號,用于模擬硬件中斷,但它提供了一組軟中斷信號,用于模擬硬件中斷,但它們 的 實 現(xiàn) 機 制 是 不 同 的 。 信 號 是 一 取 值 為們 的 實 現(xiàn) 機 制 是 不 同 的 。 信 號 是 一 取 值 為 1 1 9 (MAX_SIGS)的某個整數(shù),可以在進程之間傳送,用于的某個整數(shù),可以在進程之間傳送,用于通知進程發(fā)生了某種異常事件,需要執(zhí)行事先安排好的動通知進程發(fā)生了某種異常事件,需要執(zhí)行事先安排好的動作。作。v進程在運行中的某幾個時機要主動通過信號機制檢查是否進程在運行

28、中的某幾個時機要主動通過信號機制檢查是否有信號到達,如有,便中斷正在執(zhí)行的程序,轉(zhuǎn)入對應(yīng)的事有信號到達,如有,便中斷正在執(zhí)行的程序,轉(zhuǎn)入對應(yīng)的事件處理程序。件處理程序。v處理完畢,再返回斷點執(zhí)行原先的程序。信號處理過處理完畢,再返回斷點執(zhí)行原先的程序。信號處理過程與硬件中斷處理很相似,故稱為程與硬件中斷處理很相似,故稱為“軟中斷軟中斷”。第50頁/共85頁第五十一頁,共85頁。52用戶(yngh)態(tài)時,即系統(tǒng)調(diào)用、陷入或中斷返回時才檢查p_sig項,并處理與信號對應(yīng)的事件。n如一個進程處于較低優(yōu)先級的睡眠狀態(tài),那么系統(tǒng)將喚醒該進程,使其轉(zhuǎn)入就緒狀態(tài),并在被調(diào)度程序選中,轉(zhuǎn)入執(zhí)行狀態(tài)時執(zhí)行信號處

29、理程序。第51頁/共85頁第五十二頁,共85頁。53第52頁/共85頁第五十三頁,共85頁。54每一個進程的每一個進程的user結(jié)構(gòu)中有一個長度為結(jié)構(gòu)中有一個長度為NSIG(20)的數(shù))的數(shù)組組signalNSIG,以信號類型作為該數(shù)組的下標索引,元,以信號類型作為該數(shù)組的下標索引,元素的值決定了對應(yīng)信號的處理素的值決定了對應(yīng)信號的處理(chl)方式。信號的處理方式。信號的處理(chl)方式有三類方式有三類 (1)若數(shù)組元素值為)若數(shù)組元素值為0,則執(zhí)行信號機構(gòu)定義的缺省,則執(zhí)行信號機構(gòu)定義的缺省動作。動作。 (2)若數(shù)組元素值為)若數(shù)組元素值為1(或奇數(shù)),則忽略該信號,(或奇數(shù)),則忽略該

30、信號,不執(zhí)行任何動作。不執(zhí)行任何動作。 (3)若數(shù)組元素值為偶數(shù)(函數(shù)入口地址),則作為)若數(shù)組元素值為偶數(shù)(函數(shù)入口地址),則作為對應(yīng)信號處理對應(yīng)信號處理(chl)程序的指針。程序的指針。第53頁/共85頁第五十四頁,共85頁。55第54頁/共85頁第五十五頁,共85頁。56:p_sig :a:&newfunc:(oldptr)( ):newfunc( ):0 aoldptrprocu.u-signal進程進程(jnchng)Pa的圖像的圖像圖圖4-9信號處理信號處理(xn ho ch l)方式的設(shè)置方式的設(shè)置第55頁/共85頁第五十六頁,共85頁。57第56頁/共85頁第五十七頁,

31、共85頁。58# include # include main ( )int status;pid_t pid;void func ( );signal (SIGUSR1,func);1 /* 預(yù)置信號處理程序預(yù)置信號處理程序 */if (pid=fork () ) 2 printf (Parent: will send signal.n);4 kill (pid, SIGUSR1); 5/* 發(fā)送信號發(fā)送信號 */ wait (& status); 6/* 等待等待(dngdi)子進程停止子進程停止 */ printf (status=%d: Parent finish:n,stat

32、us);10 else sleep (10); 3/* 等待等待(dngdi)接受信號接受信號 */ printf (Child:signal is received.n);8 exit (0); 9 第57頁/共85頁第五十八頁,共85頁。59void func () printf (It is signal processing function.n); 7 在程序的開始部分用系統(tǒng)調(diào)用設(shè)置信號16的處理方式為執(zhí)行func程序,在父進程用fork創(chuàng)建子進程后,子進程繼承了對信號的處理方式。父進程向子進程發(fā)送信號后,如子進程處于低優(yōu)先權(quán)睡眠,則將其喚醒。子進程被喚醒后,檢查是否收到信號,發(fā)現(xiàn)已

33、收到信號,就執(zhí)行該信號(SIGUSR1)所對應(yīng)的處理程序func()。執(zhí)行完畢后返回(fnhu),繼續(xù)執(zhí)行余下程序段。第58頁/共85頁第五十九頁,共85頁。60第59頁/共85頁第六十頁,共85頁。61Solaris門門第60頁/共85頁第六十一頁,共85頁。62Solaris門門第61頁/共85頁第六十二頁,共85頁。63第62頁/共85頁第六十三頁,共85頁。64圖圖4-10 過河的相持過河的相持(xingch)第63頁/共85頁第六十四頁,共85頁。65進程進程B等待等待(dngdi)資源資源R1資源資源(zyun)R1 進程進程B 進程進程A資源資源R2進程進程A占用資源占用資源R1進程進程A等待資源等待資源R2進程進程B占用資源占用資源R2圖圖4-11兩個進程的死鎖兩個進程的死鎖第64頁/共85頁第六十五頁,共85頁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論