




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第二章進程的描述與控制2.1前趨圖和程序執(zhí)行(理解)2.2進程的描述(重點)2.3進程控制(重點)2.4進程同步(重點、難點)2.5經(jīng)典進程的同步問題(重點、難點)2.6進程通信(編程掌握)2.7線程(編程掌握)第二章進程的描述與控制2.1前趨圖和程序執(zhí)行(理1應(yīng)用的提出:同時進行多個任務(wù)的需求舉例編輯文檔運行程序網(wǎng)上瀏覽CD音樂欣賞問題:單處理機如何同時執(zhí)行多個任務(wù)?進程的引入應(yīng)用的提出:同時進行多個任務(wù)的需求舉例編輯文檔問題:單處理機2右圖給出了7個結(jié)點的前驅(qū)圖。在該圖中,存在下面一些前驅(qū)關(guān)系:P1→P2,P1→P3,┅,P4→P6,P6→P7,或表示為:P={P1,P2,P3,P4,P5,P6,P7}P={(P1,P2),,P1,P3),┅,(P5,P7),(P6,P7)}1234756具有7個結(jié)點的前驅(qū)圖1前趨圖提示:前趨圖中不存在循環(huán)圖中的每個結(jié)點可用于描述一個程序段或進程不存在前驅(qū)關(guān)系的程序之間才能并發(fā)執(zhí)行2.1前趨圖和程序執(zhí)行右圖給出了7個結(jié)點的前驅(qū)圖。在該圖中,存在下面一些前驅(qū)關(guān)系:32程序的順序執(zhí)行及其特征a.程序的順序執(zhí)行程序是指令(或語句)的集合,指令之間是順序關(guān)系,是一個靜態(tài)的概念,僅當(dāng)前一操作(程序段)執(zhí)行完后,才能執(zhí)行后繼操作。2程序的順序執(zhí)行及其特征a.程序的順4
假定用I、C和P分別表示輸入、計算和輸出操作(也可以為語句),可以有下圖的順序關(guān)系。
I1C1P1I2C2P2S1S3S2a=10;b=a+8;Print(b);S1:S2:S3:假定用I、C和P分別表示輸入、計算和輸出操作5再如例1:t輸入:計算:輸出:I1C1P1I2C2P2I3C3P3
t0t1t2t3t4t5t6t7t8t9t10三個程序順序執(zhí)行Δt程序1:I1C1P1程序2:程序3:I2C2P2I3C3P39個Δt
再如例1:t輸入:I1C1P1I2C2P2I3C3P36b.程序順序執(zhí)行具有如下3個特點:
順序性;處理機的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。
封閉性;程序獨占全機資源,程序執(zhí)行結(jié)果不受外界因素的影響。
可再現(xiàn)性;只要輸入的初始條件相同,則無論何時重復(fù)執(zhí)行該程序都會得到相同的結(jié)果。
程序順序執(zhí)行的特性為程序員檢測和校正程序錯誤帶來很大的方便!b.程序順序執(zhí)行具有如下3個特點:順序性;處理機的操73程序的并發(fā)執(zhí)行及其特征a.程序的并發(fā)執(zhí)行
對于例1中的任意程序,存在著Ii→Ci→Pi這樣的前驅(qū)關(guān)系,因而對一個用戶程序的輸入、計算和打印這三個操作,必須順序執(zhí)行。
但在多道環(huán)境下,并不存在,或并不要求Pi→Ii+1關(guān)系,即Ii、Cj和Pk(i≠j≠k)之間并不存在前驅(qū)關(guān)系,因而在對一批程序處理時,可使它們并發(fā)執(zhí)行。這就產(chǎn)生了并發(fā)操作。3程序的并發(fā)執(zhí)行及其特征a.程序的并發(fā)執(zhí)行8
輸入:計算:輸出:
t0t1t2t3t4t5t6ΔttI1三個程序并發(fā)執(zhí)行的前驅(qū)圖I2I3C1C2C3P1P2P3時間:5個Δt并發(fā)并發(fā)并發(fā)前驅(qū)關(guān)系執(zhí)行順序輸入:9
程序內(nèi)保持Ii→Ci→Pi程序邏輯順序性。
存在Ii→Ii+1;Ci→Ci+1;Pi→Pi+1;表明系統(tǒng)資源競爭帶來順序性前驅(qū)關(guān)系。
不同程序之間
Ii+2、Ci+1和Pi,沒有前驅(qū)關(guān)系,說明可以并發(fā)執(zhí)行,這是系統(tǒng)的并發(fā)性,提高(9-5)/9x100%=44%。I1I2I3C1C2C3P1P2P3問:CPU某一時刻只能執(zhí)行輸入、計算、打印三個程序中的一個,如何理解并發(fā)???程序內(nèi)保持Ii→Ci→Pi程序邏輯順序性。存在I10例2:兩個程序A和B共享一個變量N(當(dāng)前值為n)。
程序A:
┅N=N+1;┅程序B:┅print(N);N=0;┅在處理機上執(zhí)行關(guān)于N的3條指令,由于并發(fā)性,有理由假定3個可能的執(zhí)行序列:①
N=N+1;
print(N);N=0;(完全順序A→B)
②
print(N);N=0;
N=N+1;(完全順序B→A)
③
print(N);
N=N+1;N=0;(B,A交替運行)n+1,n+1,0,最終N的結(jié)果為
0
n,0,1,最終N的結(jié)果為
1
n,1,0,最終N的結(jié)果為
0
計算結(jié)果與并發(fā)程序的執(zhí)行速度有關(guān)例2:兩個程序A和B共享一個變量N(當(dāng)前值為n)。程11b.程序并發(fā)執(zhí)行時的特征
2)失去封閉性:多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行失去了封閉性。1)間斷性:任意程序不可能一直占有CPU3)不可再現(xiàn)性:程序在并發(fā)執(zhí)行時,由于失去了封閉性,也導(dǎo)致失去了可再現(xiàn)性。b.程序并發(fā)執(zhí)行時的特征1)間斷性:任意程序不可能一直占12(1)程序是一個靜態(tài)概念,而進程是一個動態(tài)概念
程序是指令的有序集合,它作為一個靜態(tài)的實體而存在,可以作為程序文件被長久保存。程序一旦執(zhí)行進程就會被創(chuàng)建,該進程因調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,因執(zhí)行結(jié)束而撤銷,因而具有生命期,是一個動態(tài)的實體,是暫時的。4進程與程序的關(guān)系(2)
進程具有并行特性,而程序沒有。(1)程序是一個靜態(tài)概念,而進程是一個動態(tài)概念4進程與程序13
程序:進程的1:n聯(lián)系通過多次執(zhí)行,一個程序可以對應(yīng)多個進程;例如:打開多個WORD文件。
進程:程序的1:n聯(lián)系通過調(diào)用關(guān)系,一個進程可以包括多個程序。例:在WORD中插入BMP圖象、EXCEL表格等。(3)
進程與程序之間存在多對多的聯(lián)系。
進程:程序的1:n聯(lián)系(3)
進程與程序之間存145實例介紹:Linux系統(tǒng)創(chuàng)建進程(1)進程創(chuàng)建——fork
在Linux系統(tǒng)中,用戶或系統(tǒng)可以使用系統(tǒng)調(diào)用fork來創(chuàng)建一個新的進程。fork的函數(shù)原形為:
格式:intfork()返回值:=0 創(chuàng)建成功,從子進程返回;>0 創(chuàng)建成功,從父進程返回,其值為子進程的PID號; =-1創(chuàng)建失敗。
5實例介紹:Linux系統(tǒng)創(chuàng)建進程15
由于fork()調(diào)用執(zhí)行后,從父進程和子進程返回的值不同,因而用戶能夠在程序中使用分支結(jié)構(gòu)將父子進程需要執(zhí)行的不同程序分開。應(yīng)用程序的框架結(jié)構(gòu)如下:main(){ intp; //存放子進程pid號 while((p=fork())==-1); //創(chuàng)建子進程直到成功為止
if(p==0) //返回值=0表示子進程返回 { /*此處插入子進程程序段*/ } else //返回值>0表示父進程返回 { /*此處插入父進程程序段*/ }}由于fork()調(diào)用執(zhí)行后,從父進程和子進程返16……..Beforefork()After……..forkfork執(zhí)行前一個控制流進入內(nèi)核fork模塊。。。。Beforefork()After………。。。。Beforefork()After………forkfork執(zhí)行后調(diào)用后,從fork返回兩個控制流父進程子進程……..forkfork執(zhí)行前一個控制流進入內(nèi)核fork模塊17
#include<stdio.h>main(){intp1,p2while((p1=fork())==-1);
if(p1==0)
printf(“b”);elseprintf(“a”);}輸出結(jié)果是什么??#include<stdio.h>輸出結(jié)果是什么??18[例]父進程創(chuàng)建子進程P1、P2,父子進程分別輸出字符a、b和c。#include<stdio.h>main(){ intp1,p2; while((p1=fork())==-1); //創(chuàng)建子進程1,直至創(chuàng)建成功
if(p1==0) //子進程P1返回輸出’b’ putchar('b'); else //父進程返回 { while((p2=fork())==-1); //創(chuàng)建子進程2
if(p2==0) //子進程P2返回輸出’c’ putchar('c'); else putchar('a'); //父進程返回輸出’a’ }}[例]父進程創(chuàng)建子進程P1、P2,父子進程分別輸出字符a、19該程序多次運行后,輸出的結(jié)果可能會是:abc、acb、bca、cba、bac或cab等隨機結(jié)果中的任意一種。每次運行后都會產(chǎn)生父子3個進程,所以有3個字符輸出。其中系統(tǒng)屏幕輸出進程的輸出[humingqing@BitLinuxchap3]$顯示會跟隨在父進程輸出’a’之后。
該程序多次運行后,輸出的結(jié)果可能會是:20第二章進程的描述與控制2.1前趨圖和程序執(zhí)行(理解)2.2進程的描述(重點)2.3進程控制(重點)2.4進程同步(重點、難點)2.5經(jīng)典進程的同步問題(重點、難點)2.6進程通信(編程掌握)2.7線程(編程掌握)第二章進程的描述與控制2.1前趨圖和程序執(zhí)行(理21應(yīng)用的提出:同時進行多個任務(wù)的需求舉例編輯文檔運行程序網(wǎng)上瀏覽CD音樂欣賞問題:單處理機如何同時執(zhí)行多個任務(wù)?進程的引入應(yīng)用的提出:同時進行多個任務(wù)的需求舉例編輯文檔問題:單處理機22右圖給出了7個結(jié)點的前驅(qū)圖。在該圖中,存在下面一些前驅(qū)關(guān)系:P1→P2,P1→P3,┅,P4→P6,P6→P7,或表示為:P={P1,P2,P3,P4,P5,P6,P7}P={(P1,P2),,P1,P3),┅,(P5,P7),(P6,P7)}1234756具有7個結(jié)點的前驅(qū)圖1前趨圖提示:前趨圖中不存在循環(huán)圖中的每個結(jié)點可用于描述一個程序段或進程不存在前驅(qū)關(guān)系的程序之間才能并發(fā)執(zhí)行2.1前趨圖和程序執(zhí)行右圖給出了7個結(jié)點的前驅(qū)圖。在該圖中,存在下面一些前驅(qū)關(guān)系:232程序的順序執(zhí)行及其特征a.程序的順序執(zhí)行程序是指令(或語句)的集合,指令之間是順序關(guān)系,是一個靜態(tài)的概念,僅當(dāng)前一操作(程序段)執(zhí)行完后,才能執(zhí)行后繼操作。2程序的順序執(zhí)行及其特征a.程序的順24
假定用I、C和P分別表示輸入、計算和輸出操作(也可以為語句),可以有下圖的順序關(guān)系。
I1C1P1I2C2P2S1S3S2a=10;b=a+8;Print(b);S1:S2:S3:假定用I、C和P分別表示輸入、計算和輸出操作25再如例1:t輸入:計算:輸出:I1C1P1I2C2P2I3C3P3
t0t1t2t3t4t5t6t7t8t9t10三個程序順序執(zhí)行Δt程序1:I1C1P1程序2:程序3:I2C2P2I3C3P39個Δt
再如例1:t輸入:I1C1P1I2C2P2I3C3P326b.程序順序執(zhí)行具有如下3個特點:
順序性;處理機的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。
封閉性;程序獨占全機資源,程序執(zhí)行結(jié)果不受外界因素的影響。
可再現(xiàn)性;只要輸入的初始條件相同,則無論何時重復(fù)執(zhí)行該程序都會得到相同的結(jié)果。
程序順序執(zhí)行的特性為程序員檢測和校正程序錯誤帶來很大的方便!b.程序順序執(zhí)行具有如下3個特點:順序性;處理機的操273程序的并發(fā)執(zhí)行及其特征a.程序的并發(fā)執(zhí)行
對于例1中的任意程序,存在著Ii→Ci→Pi這樣的前驅(qū)關(guān)系,因而對一個用戶程序的輸入、計算和打印這三個操作,必須順序執(zhí)行。
但在多道環(huán)境下,并不存在,或并不要求Pi→Ii+1關(guān)系,即Ii、Cj和Pk(i≠j≠k)之間并不存在前驅(qū)關(guān)系,因而在對一批程序處理時,可使它們并發(fā)執(zhí)行。這就產(chǎn)生了并發(fā)操作。3程序的并發(fā)執(zhí)行及其特征a.程序的并發(fā)執(zhí)行28
輸入:計算:輸出:
t0t1t2t3t4t5t6ΔttI1三個程序并發(fā)執(zhí)行的前驅(qū)圖I2I3C1C2C3P1P2P3時間:5個Δt并發(fā)并發(fā)并發(fā)前驅(qū)關(guān)系執(zhí)行順序輸入:29
程序內(nèi)保持Ii→Ci→Pi程序邏輯順序性。
存在Ii→Ii+1;Ci→Ci+1;Pi→Pi+1;表明系統(tǒng)資源競爭帶來順序性前驅(qū)關(guān)系。
不同程序之間
Ii+2、Ci+1和Pi,沒有前驅(qū)關(guān)系,說明可以并發(fā)執(zhí)行,這是系統(tǒng)的并發(fā)性,提高(9-5)/9x100%=44%。I1I2I3C1C2C3P1P2P3問:CPU某一時刻只能執(zhí)行輸入、計算、打印三個程序中的一個,如何理解并發(fā)???程序內(nèi)保持Ii→Ci→Pi程序邏輯順序性。存在I30例2:兩個程序A和B共享一個變量N(當(dāng)前值為n)。
程序A:
┅N=N+1;┅程序B:┅print(N);N=0;┅在處理機上執(zhí)行關(guān)于N的3條指令,由于并發(fā)性,有理由假定3個可能的執(zhí)行序列:①
N=N+1;
print(N);N=0;(完全順序A→B)
②
print(N);N=0;
N=N+1;(完全順序B→A)
③
print(N);
N=N+1;N=0;(B,A交替運行)n+1,n+1,0,最終N的結(jié)果為
0
n,0,1,最終N的結(jié)果為
1
n,1,0,最終N的結(jié)果為
0
計算結(jié)果與并發(fā)程序的執(zhí)行速度有關(guān)例2:兩個程序A和B共享一個變量N(當(dāng)前值為n)。程31b.程序并發(fā)執(zhí)行時的特征
2)失去封閉性:多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行失去了封閉性。1)間斷性:任意程序不可能一直占有CPU3)不可再現(xiàn)性:程序在并發(fā)執(zhí)行時,由于失去了封閉性,也導(dǎo)致失去了可再現(xiàn)性。b.程序并發(fā)執(zhí)行時的特征1)間斷性:任意程序不可能一直占32(1)程序是一個靜態(tài)概念,而進程是一個動態(tài)概念
程序是指令的有序集合,它作為一個靜態(tài)的實體而存在,可以作為程序文件被長久保存。程序一旦執(zhí)行進程就會被創(chuàng)建,該進程因調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,因執(zhí)行結(jié)束而撤銷,因而具有生命期,是一個動態(tài)的實體,是暫時的。4進程與程序的關(guān)系(2)
進程具有并行特性,而程序沒有。(1)程序是一個靜態(tài)概念,而進程是一個動態(tài)概念4進程與程序33
程序:進程的1:n聯(lián)系通過多次執(zhí)行,一個程序可以對應(yīng)多個進程;例如:打開多個WORD文件。
進程:程序的1:n聯(lián)系通過調(diào)用關(guān)系,一個進程可以包括多個程序。例:在WORD中插入BMP圖象、EXCEL表格等。(3)
進程與程序之間存在多對多的聯(lián)系。
進程:程序的1:n聯(lián)系(3)
進程與程序之間存345實例介紹:Linux系統(tǒng)創(chuàng)建進程(1)進程創(chuàng)建——fork
在Linux系統(tǒng)中,用戶或系統(tǒng)可以使用系統(tǒng)調(diào)用fork來創(chuàng)建一個新的進程。fork的函數(shù)原形為:
格式:intfork()返回值:=0 創(chuàng)建成功,從子進程返回;>0 創(chuàng)建成功,從父進程返回,其值為子進程的PID號; =-1創(chuàng)建失敗。
5實例介紹:Linux系統(tǒng)創(chuàng)建進程35
由于fork()調(diào)用執(zhí)行后,從父進程和子進程返回的值不同,因而用戶能夠在程序中使用分支結(jié)構(gòu)將父子進程需要執(zhí)行的不同程序分開。應(yīng)用程序的框架結(jié)構(gòu)如下:main(){ intp; //存放子進程pid號 while((p=fork())==-1); //創(chuàng)建子進程直到成功為止
if(p==0) //返回值=0表示子進程返回 { /*此處插入子進程程序段*/ } else //返回值>0表示父進程返回 { /*此處插入父進程程序段*/ }}由于fork()調(diào)用執(zhí)行后,從父進程和子進程返36……..
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025電影長津湖觀后感心得
- 理財三級2025年真題
- 健康領(lǐng)域?qū)嵺`指南核心要點
- 爆發(fā)性糖尿病病例分析
- 春天健康課小班
- 社區(qū)健康教育理論與模式
- 2025年鐵氧體粘結(jié)永磁磁粉項目提案報告
- 2025年非磁介質(zhì)復(fù)制品項目申請報告模板
- 北京市民政局所屬事業(yè)單位2025年第二批公開招聘工作人員筆試及復(fù)審筆試歷年典型考題及考點剖析附帶答案詳解
- 文庫發(fā)布:稅務(wù)師課件app
- 公司安全員培訓(xùn)課件
- 新型寵物食品開發(fā)與應(yīng)用
- 倫理審查培訓(xùn)課件
- 超聲波式熱量表超聲波熱量表
- 交通事故責(zé)任認(rèn)定書模板
- 設(shè)備運行狀態(tài)實時監(jiān)測系統(tǒng)
- 深圳市企業(yè)職工養(yǎng)老保險養(yǎng)老金申請表
- DLT1249-2013 架空輸電線路運行狀態(tài)評估技術(shù)導(dǎo)則
- 業(yè)主項目部項目管理策劃
- 劍橋Think第一級Unit+1+Welcome課件
- 基于水凝膠模板原位合成磷酸鈣類骨組織修復(fù)材料及表征
評論
0/150
提交評論