进程及进程管理.ppt

上传人:本田雅阁 文档编号:2391816 上传时间:2019-03-25 格式:PPT 页数:124 大小:1.62MB
返回 下载 相关 举报
进程及进程管理.ppt_第1页
第1页 / 共124页
进程及进程管理.ppt_第2页
第2页 / 共124页
进程及进程管理.ppt_第3页
第3页 / 共124页
亲,该文档总共124页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《进程及进程管理.ppt》由会员分享,可在线阅读,更多相关《进程及进程管理.ppt(124页珍藏版)》请在三一文库上搜索。

1、第4章 进程及进程管理,进程及进程管理,进程的引入 进程概念 进程控制 进程的相互制约关系 进程同步机构 进程互斥与同步的实现,1,进程及进程管理主要内容,进程引入,进程及进程管理进程的引入,2,1. 顺序程序及特点 (1) 计算 程序的一次执行过程称为一个计算,它由许多简单操作 所组成。 (2) 程序的顺序执行 一个计算的若干操作必须按照严格的先后次序顺序地执 行,这类计算过程就是程序的顺序执行过程。,进程及进程管理进程的引入,3,(3) 顺序程序的特点 单道系统的工作情况 对用户作业的处理 首先输入用户的程序和数据;然后进行计算;最后打印计 算结果,即有三个顺序执行的操作。 I:输入操作

2、C:计算操作 P:输出操作,单用户系统中操作的先后次序图,进程及进程管理进程的引入,4, 顺序程序的特点 顺序性 处理机的操作严格按照程序所规定的顺序执行。 封闭性 程序一旦开始执行,其计算结果不受外界因素的影响。 可再现性 程序执行的结果与它的执行速度无关 (即与时间无关),而只与初始条件有关。,进程及进程管理进程的引入,5,2. 并发程序 (1) 多道系统的工作情况,哪些程序段的执行必须是顺 序的?为什么? 哪些程序段的执行是并行 的?为什么?,多用户系统中操作的先后次序图,对n个用户作业的处理 作业1: I1 C1 P1 作业2: I2 C2 P2 作业n: In Cn Pn,进程及进程

3、管理进程的引入,6,(2) 什么是程序的并发执行 定义 若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠 的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即 使这种重叠是很小的一部分,也称这几个程序段是并发执行的。 三个并发执行的程序段 并行语句记号 cobegin S1;S2; ;Sn ; coend,三个并发进程,进程及进程管理进程的引入,7,(3) 并发程序的特点 失去程序的封闭性和可再现性 若一个程序的执行可以改变另一个程序的变量,那么,后 者的输出就可能有赖于各程序执行的相对速度,即失去了 程序的封闭性特点。 例: 讨论共享公共变量的两个程 序,执行时可能产生的

4、不同 结果。程序A执行时对n做加 1的操作;程序B打印出n值, 并将它重新置为零。,共享变量的两个程序,进程及进程管理进程的引入,8, 失去程序的封闭性和可再现性的讨论,程序A的n :=n+1与 程序B的两个语句 的关系 n的赋值 打印的结果 n的最终赋值,之前 10 11 0,之后 10 10 1,之间 10 10 0,共享变量的两个程序,进程及进程管理进程的引入,9, 程序与计算不再一一对应 一个程序可以对应多个计算。,例1: I1 输入程序段 I2 In,例2: 编译1 C编译程序 编译2 编译n, 程序并发执行的相互制约 间接的相互制约关系 资源共享 直接的相互制约关系 公共变量,一个

5、程序对应多个计算的例子,进程及进程管理进程的引入,10,3. 什么是与时间有关的错误 程序并发执行时,若共享了公共变量,其执行结果与各并发 程序的相对速度有关,即给定相同的初始条件,若不加以控 制,也可能得到不同的结果,此为与时间有关的错误。,进程及进程管理进程的引入,进程概念,进程及进程管理进程概念,11,1. 进程定义 运行 暂停 运行,进程及进程管理进程概念,(1) 什么是进程 所谓进程,就是一个程序在给定活动空间和初始环境下, 在一个处理机上的执行过程。 (2) 进程与程序的区别 程序是静态的概念,进程是动态的概念; 进程是一个独立运行的活动单位; 进程是竞争系统资源的基本单位; 一个

6、程序可以对应多个进程,一个进程至少包含一个程序。,12,2. 进程的状态, 等待状态(wait) 进程正等待着某一事件的发生而暂时停止执行。这时, 即使给它CPU控制权,它也无法执行。, 就绪状态(ready) 进程已获得除CPU之外的运行所必需的资源,一旦得到 CPU控制权,立即可以运行。,(1) 进程的基本状态 运行状态(running) 该进程已获得运行所必需的资源,它的程序正在处理机上 执行。,进程及进程管理进程概念,13,(2) 进程状态的变迁 进程状态可能的变迁,运 行,服务请求 (请求I/O等),服务完成/ 事件来到,进程调度,时间片到,等 待,就 绪,个别系统提供,进程状态变迁

7、图,进程及进程管理进程概念,14, 具有进程基本状态的变迁图,进程状态变迁图,进程及进程管理进程概念,15, 讨论进程状态的变迁,变迁1 变迁3,是否会发生?需要什么条件?,变迁4 变迁3,是否会发生?需要什么条件?,进程状态变迁的讨论,进程及进程管理进程概念,16, 例1:讨论3个排序程序在不同的操作系统环境中执行结果 程序A:冒泡排序算法,在屏幕的左1/3处开设窗口显示其 排序过程; 程序B:堆排序算法,在屏幕的中1/3处开设窗口显示其排 序过程; 程序C:快速排序算法,在屏幕的右1/3处开设窗口显示其 排序过程。 讨论在不支持多进程的操作系统下运行和在支持多进程的 操作系统下运行的情况,

8、(3) 讨论在多进程操作系统环境下程序的执行,进程及进程管理进程概念,17,在不支持多进程的操作系统下运行 依次运行程序A、程序B、程序C。 在支持多进程的操作系统下运行 建立进程A、B、C;对应的程序分别是程序A、B、C; 若系统采用时间片轮转的调度策略,则在屏幕上有3个窗口,同时显示3个排序过程。 实际上这3个程序在轮流地占用CPU时间,由于CPU的高速度,使我们看到的是这3个程序在同时执行。,进程及进程管理进程概念,18, 例2:讨论2个程序在不同的操作系统环境中执行结果 程序C:打印工资报表的程序; 程序D:计算1000以内所有素数并显示最后结果。 讨论在不支持多进程的操作系统下运行和

9、在支持多进程 的操作系统下运行。,进程及进程管理进程概念,19,在不支持多进程的操作系统下运行 依次运行程序C、程序D,可以看到,先是打印机不停 地打印工资报表,打完后,接着运行程序C,不停地计 算,最后显示所计算的结果。 在支持多进程的操作系统下运行 建立进程C、D;对应的程序分别是程序C、D; 由于进程C是I/O量较大的进程,而进程D是计算量较大的进程,故在系统进程调度的控制下,两个进程并发执行。可以看到打印机不断打印工资报表;而处理机不停地计算,最后屏幕显示计算的结果。,进程及进程管理进程概念,20,3. 进程描述 (1) 什么是进程控制块 描述进程与其他进程、系统资源的关系以及进程在各

10、个不 同时期所处的状态的数据结构,称为进程控制块 PCB (process control block)。 (2) 进程的组成, 程序与数据 描述进程本身所应完成的功能 PCB 进程的动态特征,该进程与其他进程和系统资源的关系。,进程组成的示意图,进程及进程管理进程概念,(3) 进程控制块的主要内容, 进程标识符 进程符号名或内部 id号 进程当前状态 本进程目前处于何种状态 大量的进程如何组织?,21,进程及进程管理进程概念,22, 当前队列指针next 该项登记了处于同一状态的下一个进程的 PCB地址。 进程优先级 反映了进程要求CPU的紧迫程度。 CPU现场保护区 当进程由于某种原因释放

11、处理机时,CPU现场信息被保存 在PCB的该区域中。 通信信息 进程间进行通信时所记录的有关信息。 家族联系 指明本进程与家族的联系 占有资源清单,进程及进程管理进程概念,进程控制,进程及进程管理进程控制,23,1. 进程控制的概念 (1) 进程控制的职责 对系统中的进程实施有效的管理,负责进程状态的改变。 进程状态变化,进程及进程管理进程控制,创建,撤销,等待,唤醒, 常用的进程控制原语 创建原语、撤消原语、阻塞原语、唤醒原语,24,(2) 进程创建 进程创建原语的形式 create (name,priority),name为被创建进程的标识符 priority为进程优先级, 进程创建原语的

12、功能 创建一个具有指定标识符的进程,建立进程的PCB结构。,进程及进程管理进程控制,25,PCB池, 进程创建原语的实现,进程创建原语的实现框图,PCB池示意图,进程创建原语流程图,进程及进程管理进程控制,26,(3) 进程撤销 进程撤销原语的形式 当进程完成任务后希望终止自己时使用进程撤消原语。 Kill (或exit), 进程撤销原语的功能 撤消当前运行的进程。将该进程的PCB结构归还到PCB资 源池,所占用的资源归还给父进程,从总链队列中摘除 它,然后转进程调度程序。,进程及进程管理进程控制,27, 进程撤销原语的实现,进程撤销原语流程图,进程及进程管理进程控制,28,(4) 进程等待

13、进程等待原语的形式 当进程需要等待某一事件完成时,它可以调用等待原语挂 起自己。 susp(chan) 入口参数chan:进程等待的原因, 进程等待原语的功能 中止调用进程的执行,并加入到等待chan的等待队列中; 最后使控制转向进程调度。,进程及进程管理进程控制,29, 进程等待原语的实现,进程等待原语流程图,进程及进程管理进程控制,30,(5) 进程唤醒 进程唤醒原语的形式 当处于等待状态的进程所期待的事件来到时,由发现者进 程使用唤醒原语叫唤醒它。 wakeup(chan) 入口参数chan:进程等待的原因。, 进程唤醒原语的功能 当进程等待的事件发生时,唤醒等待该事件的进程。,进程及进

14、程管理进程控制,31, 进程唤醒原语的实现,进程唤醒原语流程图,进程及进程管理进程控制,进程之间的相互制约关系,进程及进程管理进程之间的相互制约关系,32,1. 进程互斥的概念 (1) 临界资源, 例1:两个进程A、B共享一台打印机 设:x代表某航班机座号,p1和p2两个售票进程,售票工 作是对变量x加1。这两个进程在一个处理机C上并发执 行,分别具有内部寄存器r1和r2。,进程及进程管理进程之间的相互制约关系,33, 例2:两个进程共享一个变量x 两个进程共享一个变量x时,两种可能的执行次序: A: p1: r1 := x;r1:= r1+1; x := r1 ; p2: r2:= x;r2

15、 := r2+1; x := r2 ;,设x的初值为10,两种情况下的执行结果: 情况A: x = 10+2 情况B: x = 10+1,B: p1: r1 := x; r1:= r1+1; x := r1 ; p2: r2:= x;r2 := r2+1; x := r2 ;,进程及进程管理进程之间的相互制约关系,34,临界区是进程中对公共变量 (或存储区)进行审查与修改的 程序段,称为相对于该公共变量的临界区。, 临界资源的定义 一次仅允许一个进程使用的资源称为临界资源。 硬件:如输入机、打印机、磁带机等 软件:如公用变量、数据、表格、队列等,(2) 临界区,进程临界区示意图,进程及进程管理

16、进程之间的相互制约关系,35,(3) 互斥,在操作系统中,当某一进程正在访问某一存储区域时,就 不允许其他进程来读出或者修改存储区的内容,否则,就 会发生后果无法估计的错误。进程间的这种相互制约关系 称为互斥。,进程临界区示意图,进程及进程管理进程之间的相互制约关系,36,2. 进程同步的概念 (1) 什么是进程同步 并发进程在一些关键点上可能需要互相等待与互通消息, 这种相互制约的等待与互通消息称为进程同步。,(2) 进程同步的例, 病员就诊,进程同步活动示意图,进程及进程管理进程之间的相互制约关系,37, 共享缓冲区的计算进程与打印进程的同步 计算进程 cp和打印进程 iop公用一个单缓冲

17、,A,B,C,D,A,B,C,D,两个进程共享一个缓冲区示意图,进程及进程管理进程之间的相互制约关系,进程同步机构,进程及进程管理进程同步机构,38,1. 锁和上锁、开锁操作 (1) 什么是锁 用变量w代表某种资源的状态,w称为“锁” 。 (2) 上锁操作和开锁操作,进程及进程管理进程同步机构,检测w的值 (是0还是1); 如果w的值为1,继续检测; 如果w的值为0,将锁位置1 (表示占用资源),进入临界区执行。 (此为上锁操作) 临界资源使用完毕,将锁位置0。 (此为开锁操作),39,(3) 进程使用临界资源的操作,两个进程使用临界资源的操作,进程及进程管理进程同步机构,40,(4) 上锁原

18、语和开锁原语 上锁原语 算法 lock 输入:锁变量w 输出:无 test: if (w为1) goto test; * 测试锁位的值* else w=1; *上锁* , 开锁原语 算法 unlock 输入:锁变量w 输出:无 w=0;*开锁* ,进程及进程管理进程同步机构,41,2. 信号灯和P、V操作 (1) 什么是信号灯 信号灯是一个确定的二元组 (s,q),s是一个具有非负初值 的整型变量,q是一个初始状态为空的队列。操作系统利 用信号灯的状态对并发进程和共享资源进行控制和管理。 信号灯是整型变量。 变量值 0 时,表示绿灯,进程执行; 变量值 0 时,表示红灯,进程停止执行。 注意:

19、创建信号灯时,应准确说明信号灯 s 的意义和初值 (这个初值绝不能为负值)。,进程及进程管理进程同步机构,42,(2) P 操作, P 操作的定义 对信号灯s的 p操作记为 p(s)。p(s)是一个不可分割的原语操作,即取 信号灯值减1,若相减结果为负,则调用p(s)的进程被阻,并插入到 该信号灯的等待队列中,否则可以继续执行。, P 操作的实现,P 操作原语流程图,进程及进程管理进程同步机构,43,(3) V 操作, V 操作的定义 对信号灯s的 v操作记为 v(s)。v(s)是一个不可分割的原语操作,即取 信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤 醒在信号灯等待队列上的

20、一个进程。, V 操作的实现,V 操作原语流程图,进程及进程管理进程同步机构,进程互斥与同步的实现,进程及进程管理进程互斥与同步的实现,44,1. 用上锁原语和开锁原语实现进程互斥 (1) 框图描述,两个进程利用上锁、开锁原语实现互斥,进程及进程管理进程互斥与同步的实现,45,(2) 程序描述 程序 task1 main( ) pa( ) pb( ) int w=1; * 互斥锁 * cobegin lock(w); lock(w); pa( ); csa ; csb ; pb( ); unlock(w); unlock(w); coend ,进程及进程管理进程互斥与同步的实现,46,2. 用

21、信号灯的P、V操作实现互斥 (1) 框图描述 设:mutex为互斥信号灯,初值为1。,(2) 程序描述,两个进程利用信号灯的P、V操作实现互斥,进程及进程管理进程互斥与同步的实现,47,程序 task2 main( ) int mutex=1; * 互斥信号灯 * cobegin pa( ); pb( ); coend pa( ) pb( ) p(mutex); p(mutex); csa ; csb ; v(mutex); v(mutex); ,(3) 信号灯可能的取值 两个并发进程,互斥信号灯的值仅取1、0和1三个值。 mutex=1 表示没有进程进入临界区; mutex=0 表示有一个进

22、程进入临界区; mutex=1 表示一个进程进入临界区, 另一个进程等待进入。,进程及进程管理进程互斥与同步的实现,48,(4) 例 x代表某航班机座号,pa和pb两个售票进程,售票工作是 对变量x加1。试用信号灯的P、V操作实现这两个进程的 互斥。 设:mutex为互斥信号灯,初值为1。,pa( ) pb( ) p(mutex); p(mutex); x:=x+1 ; x:=x+1 ; v(mutex); v(mutex); ,进程及进程管理进程互斥与同步的实现,49,3. 两类同步问题的解法 (1) 合作进程的执行次序, 进程流图,进程流图示例,进程及进程管理进程互斥与同步的实现,50,

23、例:pa、pb、pc为一组合作进程,其进程流图如图所示, 试用信号灯的p、v操作实现这三个进程的同步。, 分析任务的同步关系 任务启动后 pa先执行,当它结束后,pb、pc可以 开始 执行, pb、pc 都执行完毕后,任务终止。, 信号灯设置 设两个同步信号灯sb、sc分别表示进程pb和pc能否开 始执行,其初值均为0。, 同步描述 pa pb pc p(sb ); p(sc ); v(sb ); v(sc ); ,3个合作进程 的进程流图,进程及进程管理进程互斥与同步的实现,51,程序 task4 main( ) int sb=0; *表示pb进程能否开始执行* int sc=0; *表示p

24、c进程能否开始执行* cobegin pa( ); pb( ); pc( ); coend pa( ) pb( ) pc( ) p(sb); p(sc); v(sb); v(sc); ,3个合作进程 的进程流图,进程及进程管理进程互斥与同步的实现,52,(2) 共享缓冲区的合作进程的同步的解法 计算进程 cp和打印进程 iop公用一个单缓冲,为了完成正确的计算与打印,试用信号灯的p、v操作实现这两个进程的同步。, 两个进程的任务 计算进程cp经过计算,将计算结果送入buf; 打印进程iop把buf中的数据取出打印。,共享缓冲区的合作进程的同步示意图,进程及进程管理进程互斥与同步的实现,53,

25、信号灯设置 sa:表示缓冲区中是否有可供打印的 计算结果,其初值为0。 sb:表示缓冲区有无空位置存放新的 信息,其初值为1。, 分析任务的同步关系 当cp进程把计算结果送入buf时,iop进程才能从buf中取出结 果去打印,否则必须等待。 当iop进程把buf中的数据取出打印后,cp进程才能把下一个 计算结果数据送入buf中,否则必须等待。,共享缓冲区的合作进程 的同步示意图,进程及进程管理进程互斥与同步的实现,54, 同步描述 cp: iop: p(sa); 产生一个数据; 从buf中取 数据; p(sb); v(sb); 将数据放入buf ; 打印; v(sa); 程序描述,共享缓冲区的

26、合作进程 的同步示意图,进程及进程管理进程互斥与同步的实现,55,程序 task5 main( ) int sa=0; *表示buf中有无信息 * int sb=1; *表示buf中有无空位置* cobegin cp( );iop( ); coend cp( ) iop( ) while(计算未完成) while(打印工作未完成) 得到一个计算结果; p(sa); p(sb); 从缓冲区中取一数; 将数送到缓冲区中; v(sb); v(sa); 从打印机上输出; ,共享缓冲区的合作进程 的同步示意图,进程及进程管理进程互斥与同步的实现,56,4. 生产者消费者问题 (1) 生产者消费者问题的例

27、, 计算进程和打印进程 计算进程 cp不断产生数据,是生产者; 打印进程 iop不断打印数据,是消费者。, 通信问题 发消息进程 send不断产生消息,是生产者; 收消息进程 receive不断接收消息,是消费者。,进程及进程管理进程互斥与同步的实现,57,(2) 生产者消费者问题的一般解答, 生产者消费者问题图示, 生产者与消费者的同步关系 生产者:当有界缓冲区中无空位置时,要等待; 向有界缓冲区放入物品后,要发消息。 消费者:当有界缓冲区中无物品时,要等待; 从有界缓冲区取出物品后,要发消息。,生产者消费者问题示意图,进程及进程管理进程互斥与同步的实现,58, 信号灯设置 两个同步信号灯

28、sb :表示空缓冲区的数目,初值 = n sa : 表示满缓冲区 (即信息)的数目,初值 = 0 一个互斥信号灯 mutex:表示有界缓冲区是否被占用,初值 = 1,生产者消费者问题示意图,进程及进程管理进程互斥与同步的实现,59, 同步描述 生产者: 消费者: p(sa) p(sb); p(mutex); p(mutex); 从有界缓冲区中取数据; 将数据放入有界缓冲区; v(mutex); v(mutex); v(sb); v(sa); 消费;,进程及进程管理进程互斥与同步的实现,60, 程序描述 程序 prod_cons main( ) int sa=0; *满缓冲区的数目* int s

29、b=n; *空缓冲区的数目* int mutex=1; *对有界缓冲区进行操作的互斥信号灯* cobegin p1 ( ); p2 ( ); pm ( ); c1 ( ); c2 ( ); ck ( ); coend ,进程及进程管理进程互斥与同步的实现,61,pi( ) cj( ) while(生产未完成) while(还要继续消费) p(sa); 生产一个产品; p(mutex); p(sb); 从有界缓冲区中取产品; p(mutex); v(empty); 送一个产品到有界缓冲 v(sb); v(mutex); 消费一个产品; v(sa); ,进程及进程管理进程互斥与同步的实现,进程通信

30、,进程及进程管理进程通信,62,进程及进程管理进程通信,在消息通信中,接收方和发送方之间有明确的协议和消息格式 。 消息缓冲通信方式包括消息缓冲、发送原语和接收原语。,1. 进程通信的概念 进程通信是指进程之间直接以较高的效率传递较多数据的信 息交互方式。,2. 进程通信方式,(1) 消息缓存通信,63,进程及进程管理进程通信,在信箱通信中,需要定义信箱结构,还包括消息发送 和接收功能模块,提供发送原语和接收原语。 信箱通信中,所使用的信箱可以位于用户空间中,是 接收进程地址空间的一部分;也可以放置在操作系统 的空间中。,(2) 信箱通信,线程概念及特点,进程及进程管理线程概念及特点,64,1

31、. 什么是线程,(1) 线程定义 线程是比进程更小的活动单位,它是进程中的一个执行路 径。 (2) 线程可以这样来描述,进程及进程管理线程概念及特点,进程中的一条执行路径; 它有自己私用的堆栈和处理机执行环境 ; 它与父进程共享分配给父进程的主存; 它是单个进程所创建的许多个同时存在的线程中的一个。,65,进程及进程管理线程概念及特点,2. 线程的特点,线程是比进程更小的活动单位,它是进程中的一个执行路 径。 创建一个线程比创建一个进程开销要小得多。 实现线程间通信十分方便,因为一个进程创建的多个线程 可以共享地址区域和数据。 线程是一个动态的概念。 在进程内创建多线程,可以提高系统的并行处理

32、能力,加 快进程的处理速度。,3. 线程的状态变迁,线程的状态变迁图,66,进程及进程管理线程概念及特点,操作系统的并发机制实例,进程及进程管理操作系统的并发机制实例,进程及进程管理操作系统的并发机制实例,1. 创建进程及应用实例,(1) 调用形式 pid=fork(); 功能:创建一个子进程,被创建的子进程是父进程的进 程映像的一个副本 (除proc结构外),在UNIX系统中,除 了0#进程外,其它进程都是通过调用进程创建系统调用 创建的。,67,(2) 系统调用 fork 完成的操作 UNIX/Linux系统的核心为系统调用fork 完成下列操作: 为新进程分配一个新的pcb结构; 为子进

33、程赋一个唯一的进程标识号 (PID); 做一个父进程上下文的逻辑副本。由于进程的正文区 (代码段) 可被几个进程所共享,所以核心只要增加某个正文区的引用数即可,而不是真的将该区拷贝到一个新的内存物理区。这就意味着父子进程将执行相同的代码。数据段和堆栈段属于进程的私有数据,需要拷贝到新的内存区中。 增加与该进程相关联的文件表和索引节点表的引用数。这就意味着父进程打开的文件子进程可以继续使用。 对父进程返回子进程的进程号,对子进程返回零。,68,进程及进程管理操作系统的并发机制实例, 从子进程返回 打印: “这是子进程的执行程序。” “这是父、子进程的共有执行程序” 从父进程返回 打印:“这是父进

34、程执行程序。” “这是父、子进程的共有执行程序”,(3) 执行这个程序有两 种可能的结果,69,进程及进程管理操作系统的并发机制实例,例: main() int x; while(x=fork()= = - 1); if(x= =0) printf(“a”); else printf(“b”); printf(“c”); ,abcc? bcac? abcc? acbc? cabc?,结果 ?,70,进程及进程管理操作系统的并发机制实例,main() int child, i=2; if(child=fork() = 1) printf(“fork error. “);exit(); if(ch

35、ild=0) i=i+3; printf(“i=%dn”,i); i=i+5; printf(“i=%dn”,i); ,1.fork error 2 . i=5 i=10 i=7 3. i=7 i=5 i=10 4. i=5 i=7 i=10,插入else呢?,71,进程及进程管理操作系统的并发机制实例,main( ) if(fork()=0) 子1的代码段 else if(fork()=0) 子2的代码段 else 父代码段 ,main( ) if(fork()=0) 子1的代码段; if(fork()=0) 子2的代码段 else 子1的代码段 else 父代码段 ,去掉这个else 谁执

36、行这一段?,子1,子2,父,72,进程及进程管理操作系统的并发机制实例, 更换进程执行代码,更换正文段,数据段 调用格式:exec (文件名,参数表,环境变量表) 例 execlp(“max”,15,18,10,0); execvp(“max”,argp),main() if(fork()=0) printf(“a”); execlp(“file1”,0); printf(“b”); printf(“c”); ,file1: main() printf(“d”); ,acd? cad? adc? abdc? adbcc?,(4) exec-执行文件,启动新程序运行,73,进程及进程管理操作系统

37、的并发机制实例,2. 创建线程及应用实例,(1) 调用形式 pid=fork(); pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);,74,(2) 程序范例 #include #include #include void thread(void) int i; for(i=0;i3;i+) printf(“This is a pthread.n“); ,int main(void) pthread_tid; int i,ret; ret=pthr

38、ead_create( ,(3) 运行结果?,75,进程及进程管理操作系统的并发机制实例,3. 等待进程、线程的终止及其应用,(1) 等待进程终止 wait(); waitpid();, wait() 语法格式 pid=wait(stat_addr); wait()函数使父进程暂停执行,直到它的一个子进程结束为 止,该函数的返回值是终止运行的子进程的PID。参数status 所指向的变量存放子进程的退出码,即从子进程的main函 数返回的值或子进程中exit()函数的参数。如果status不是一 个空指针,状态信息将被写入它指向的变量。,76,进程及进程管理操作系统的并发机制实例, waitp

39、id() 语法格式 pid=wait(stat_addr); waitpid(pid_t pid,int * status,int options) 用来等待子进程的结束,但它用于等待某个特定进程结束。 参数pid指明要等待的子进程的PID,参数status的含义与 wait()函数中的status相同。,77,进程及进程管理操作系统的并发机制实例,main( ) int n; . if(fork()=0) printf(“a”); exit(0); wait( ,printf(“c”);,(2) wait-等待子进程结束 与 exit-终止进程的使用 方法,78, 例1,进程及进程管理操作系

40、统的并发机制实例,main() int p1,p2,p3,p4,p5,pp1,pp2; printf(“程序开始执行”); if (p1=fork( )= 0) printf(“进程proc1执行”); exit(1); else if (p2=fork() )= 0) printf(“进程proc2执行”); exit(1); pp1=wait( /* 等待,直到子进程终止 */,79, 例2 程序,进程及进程管理操作系统的并发机制实例,if (p3=fork()= 0) printf(“进程proc3执行”); else if((p4=fork())= 0) printf(“进程proc4

41、执行”); else if((p5=fork())= 0) printf(“进程proc5执行”); exit(1); printf(“整个程序终止“); exit(0); ,80,进程及进程管理操作系统的并发机制实例,a. 画出描述子进程执行先后次序的进程流图。(各进程 分别用其对应的函数名或包含其进程号的符号名标识)。 b. 这个程序执行时最多可能有几个进程同时存在?同时 存在的进程数最多时分别是哪几个进程? c. 程序执行时,“整个程序终止”被输出几次?分别是 哪些进程输出的?, 试回答如下问题,81,进程及进程管理操作系统的并发机制实例,b. 最多4个进程同时存在,分别是main、p3、p4、p5 。 c. 3次,main、p3、p4 。, 问题答案,a.,82,子进程进程执行的流图图,进程及进程管理操作系统的并发机制实例,#include #include int main () pid_t pid; int status; pid=fork(); if (pid=0) p6();exit(); else pid=fork(); if (pid=0 ) p5();exit(); wait( p7(); ,83, 应用实例1,3个合作进程 的进程流

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1