第4章進(jìn)程及進(jìn)程管理_第1頁(yè)
第4章進(jìn)程及進(jìn)程管理_第2頁(yè)
第4章進(jìn)程及進(jìn)程管理_第3頁(yè)
第4章進(jìn)程及進(jìn)程管理_第4頁(yè)
第4章進(jìn)程及進(jìn)程管理_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、123 P2 C2 I2 P1 C1 I1作業(yè)作業(yè)1作業(yè)作業(yè)2單用戶系統(tǒng)中操作的先后次序圖45 I1 I2 I3 I4C1C3C2P1P2 哪些程序段的執(zhí)行必須是順 序的?為什么? 哪些程序段的執(zhí)行是并行 的?為什么?多用戶系統(tǒng)中操作的先后次序圖6PQR三個(gè)并發(fā)進(jìn)程7程序程序A n := n+1; 程序程序B print(n); n := 0; 共享變量的兩個(gè)程序8程序程序A的的n :=n+1與與程序程序B的兩個(gè)語(yǔ)句的兩個(gè)語(yǔ)句的關(guān)系的關(guān)系 n的賦值的賦值 打印的結(jié)果打印的結(jié)果 n的最終賦值的最終賦值 之前之前 10 11 0 之后之后 10 10 1 之間之間 10 10 0 程序程序A n

2、:= n+1; 程序程序B print(n); n := 0; 共享變量的兩個(gè)程序9例例1: I1 輸入程序段輸入程序段 I2 In例例2: 編譯編譯1C編譯程序編譯程序 編譯編譯2 編譯編譯n一個(gè)程序?qū)?yīng)多個(gè)計(jì)算的例子10111213 運(yùn)運(yùn) 行行服務(wù)請(qǐng)求服務(wù)請(qǐng)求(請(qǐng)求請(qǐng)求I/O等等)服務(wù)完成服務(wù)完成/事件來(lái)到事件來(lái)到進(jìn)程調(diào)度進(jìn)程調(diào)度時(shí)間片到時(shí)間片到 等等 待待 就就 緒緒個(gè)別系統(tǒng)提供個(gè)別系統(tǒng)提供進(jìn)程狀態(tài)變遷圖14 運(yùn)運(yùn) 行行服務(wù)請(qǐng)求服務(wù)請(qǐng)求(請(qǐng)求請(qǐng)求I/O等等)服務(wù)完成服務(wù)完成/事件來(lái)到事件來(lái)到進(jìn)程調(diào)度進(jìn)程調(diào)度 等等 待待 就就 緒緒進(jìn)程狀態(tài)變遷圖15 運(yùn)運(yùn) 行行1234 等等 待待 就就

3、緒緒變遷變遷1 變遷變遷3,是否會(huì)發(fā)生?需要什么條件?,是否會(huì)發(fā)生?需要什么條件?變遷變遷4 變遷變遷3,是否會(huì)發(fā)生?需要什么條件?是否會(huì)發(fā)生?需要什么條件?進(jìn)程狀態(tài)變遷的討論1617181920進(jìn)程進(jìn)程控制塊控制塊PCB程序程序與與數(shù)據(jù)數(shù)據(jù)進(jìn)程組成的示意圖21wait_lpt_q_startPCB3PCB7 next打印機(jī)等待隊(duì)列結(jié)構(gòu)打印機(jī)等待隊(duì)列結(jié)構(gòu)runningPCB4 next運(yùn)行指針運(yùn)行指針ready_q_start PCB1PCB2PCB9就緒隊(duì)列結(jié)構(gòu)就緒隊(duì)列結(jié)構(gòu)next進(jìn)程隊(duì)列結(jié)構(gòu)示例2223創(chuàng)建撤銷無(wú)無(wú)有有消亡消亡等待運(yùn)行運(yùn)行等待等待喚醒就緒就緒等待等待2425ab 1 入口入

4、口 查查PCB總鏈總鏈有同名有同名 ? 向系統(tǒng)申請(qǐng)一個(gè)向系統(tǒng)申請(qǐng)一個(gè)空的空的PCB 結(jié)構(gòu)結(jié)構(gòu)有空有空PCB ? 將入口信息填入將入口信息填入PCB相應(yīng)項(xiàng)相應(yīng)項(xiàng) 將將PCB入就緒隊(duì)列入就緒隊(duì)列 將將PCB入總鏈隊(duì)列入總鏈隊(duì)列返回進(jìn)返回進(jìn)程程pid出錯(cuò)出錯(cuò)YN出錯(cuò)出錯(cuò)PCB池示意圖進(jìn)程創(chuàng)建原語(yǔ)流程圖2627入口入口由運(yùn)行指針得當(dāng)前進(jìn)程的由運(yùn)行指針得當(dāng)前進(jìn)程的pid釋放本進(jìn)程所占用的資源給父進(jìn)程釋放本進(jìn)程所占用的資源給父進(jìn)程該進(jìn)程從總鏈隊(duì)列中摘下該進(jìn)程從總鏈隊(duì)列中摘下釋放釋放PCB結(jié)構(gòu)結(jié)構(gòu)轉(zhuǎn)進(jìn)程調(diào)度轉(zhuǎn)進(jìn)程調(diào)度進(jìn)程撤銷原語(yǔ)流程圖2829入口入口保護(hù)進(jìn)程的保護(hù)進(jìn)程的CPU現(xiàn)場(chǎng)到現(xiàn)場(chǎng)到PCB結(jié)構(gòu)中結(jié)構(gòu)中置

5、該進(jìn)程為置該進(jìn)程為”等待等待”狀態(tài)狀態(tài)將該進(jìn)程將該進(jìn)程PCB結(jié)構(gòu)插入到等待結(jié)構(gòu)插入到等待隊(duì)列中隊(duì)列中轉(zhuǎn)進(jìn)程調(diào)度轉(zhuǎn)進(jìn)程調(diào)度進(jìn)程等待原語(yǔ)流程圖3031入口入口找到該等待隊(duì)列找到該等待隊(duì)列將隊(duì)列首進(jìn)程移出此等待隊(duì)列將隊(duì)列首進(jìn)程移出此等待隊(duì)列將該進(jìn)程置將該進(jìn)程置為為”就緒就緒”狀態(tài),狀態(tài),并將并將PCB結(jié)構(gòu)插入到就緒結(jié)構(gòu)插入到就緒隊(duì)列中隊(duì)列中返回返回進(jìn)程喚醒原語(yǔ)流程圖323334 x := x+1; csa 進(jìn)程進(jìn)程A進(jìn)程進(jìn)程B x := x+1; csb 進(jìn)程臨界區(qū)示意圖35 x := x+1; csa 進(jìn)程進(jìn)程A進(jìn)程進(jìn)程B x := x+1; csb 進(jìn)程臨界區(qū)示意圖36看病活動(dòng):看病活動(dòng): 要病

6、人去要病人去化驗(yàn);化驗(yàn); 等等化驗(yàn)結(jié)果;化驗(yàn)結(jié)果; 繼續(xù)診??;繼續(xù)診??;化驗(yàn)活動(dòng):化驗(yàn)活動(dòng): 需要進(jìn)行化驗(yàn)需要進(jìn)行化驗(yàn) ? 進(jìn)行進(jìn)行化驗(yàn);化驗(yàn); 開出化驗(yàn)結(jié)果;開出化驗(yàn)結(jié)果; 進(jìn)程同步活動(dòng)示意圖37 緩沖區(qū)緩沖區(qū)bufiop cpABCDABCD兩個(gè)進(jìn)程共享一個(gè)緩沖區(qū)示意圖3839 1W 進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csa 0W進(jìn)程進(jìn)程AW=0 ?= 0 1W 進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csb 0W進(jìn)程進(jìn)程BW=0 ?= 0兩個(gè)進(jìn)程使用臨界資源的操作404142 入入 口口 S-1 S S0 ?轉(zhuǎn)進(jìn)程調(diào)度轉(zhuǎn)進(jìn)程調(diào)度返回返回 入信號(hào)燈等待隊(duì)列入信號(hào)燈等待隊(duì)列 置置“等待狀態(tài)等待狀態(tài)”00 0 0P 操作原語(yǔ)流

7、程圖43 入入 口口 S+ +1 S 從信號(hào)燈的等待隊(duì)列中取出首元素從信號(hào)燈的等待隊(duì)列中取出首元素 入就緒隊(duì)列入就緒隊(duì)列 置置“就緒狀態(tài)就緒狀態(tài)” 返回返回 S0 ?0 0V 操作原語(yǔ)流程圖44上鎖原語(yǔ)上鎖原語(yǔ)進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csa 進(jìn)程進(jìn)程 pa開鎖原語(yǔ)開鎖原語(yǔ)上鎖原語(yǔ)上鎖原語(yǔ)進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csb 進(jìn)程進(jìn)程 pb開鎖原語(yǔ)開鎖原語(yǔ)兩個(gè)進(jìn)程利用上鎖、開鎖原語(yǔ)實(shí)現(xiàn)互斥4546p(mutex)進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csa 進(jìn)程進(jìn)程 pa v(mutex)p(mutex)進(jìn)入臨界區(qū)進(jìn)入臨界區(qū)csb 進(jìn)程進(jìn)程 pb v(mutex)兩個(gè)進(jìn)程利用信號(hào)燈的P、V操作實(shí)現(xiàn)互斥474849p3 s fp

8、5p1p2p4p6p9p10p8 f sp5p6p7 s f進(jìn)程流圖示例50pbpcpa f s3個(gè)合作進(jìn)程 的進(jìn)程流圖51pbpcpa f s3個(gè)合作進(jìn)程 的進(jìn)程流圖52 iop cp共享緩沖區(qū)的合作進(jìn)程的同步示意圖53 iop cp共享緩沖區(qū)的合作進(jìn)程 的同步示意圖54 iop cp共享緩沖區(qū)的合作進(jìn)程 的同步示意圖55 iop cp共享緩沖區(qū)的合作進(jìn)程 的同步示意圖5657c1p1 c2c3ck p2p3pm生產(chǎn)者消費(fèi)者問(wèn)題示意圖58c1p1 c2c3ck p2p3pm生產(chǎn)者消費(fèi)者問(wèn)題示意圖59606162636465運(yùn) 行 終止 創(chuàng)建 就緒 等待 線程的狀態(tài)變遷圖66676869例:

9、main() int x; while(x=fork()= = - 1); if(x= =0) printf(“a”); else printf(“b”); printf(“c”); abcc?bcac?abcc?acbc? cabc?結(jié)果 ?701.fork error2 . i=5 i=10 i=73. i=7 i=5 i=104. i=5 i=7 i=10插入else呢?71父子1子2main( ) if(fork()=0) 子1的代碼段 else if(fork()=0) 子2的代碼段 else 父代碼段 main( ) if(fork()=0) 子1的代碼段; if(fork()=0

10、) 子2的代碼段 else 子1的代碼段 else 父代碼段去掉這個(gè)去掉這個(gè)else誰(shuí)執(zhí)行這一段?誰(shuí)執(zhí)行這一段?子1子2父72main() if(fork()=0) printf(“a”); execlp(“file1”,0); printf(“b”); printf(“c”);file1:main() printf(“d”);acd?cad?adc?abdc?adbcc?7374int main(void)pthread_tid;int i,ret;ret=pthread_create(&id,NULL,(void *) thread,NULL);if(ret!=0) printf

11、(Create pthread error!n); exit (1);for(i=0;i3;i+)printf(This is the main process.n);pthread_join(id,NULL);return (0);757677printf(“c”);78798081p3p4 Fp2Sp1p582子進(jìn)程進(jìn)程執(zhí)行的流圖圖83 s fp5p6p73個(gè)合作進(jìn)程 的進(jìn)程流圖84運(yùn)行結(jié)果?運(yùn)行結(jié)果?A in son process isA in thread is A in father process is 1085868788899091929394959697ready_q scheduler susp wakeup receive pcb6pcb4pcb3pcb2pcb1 dispatcher CPU98調(diào)度/分派結(jié)構(gòu)示意圖99100101102 pcb1pcb2pcbnCPU完成完成103簡(jiǎn)單循環(huán)輪轉(zhuǎn)調(diào)度算法示意圖104 運(yùn)行運(yùn)行首先選擇首先選擇 100ms 因因 IO 而等待而等待 高

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論