欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《进程及进程》PPT课件.ppt

    • 资源ID:5611261       资源大小:1.54MB        全文页数:124页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《进程及进程》PPT课件.ppt

    第4章进程及进程管理,进程及进程管理,进程的引入进程概念进程控制进程的相互制约关系进程同步机构进程互斥与同步的实现,1,进程及进程管理主要内容,进程引入,进程及进程管理进程的引入,2,1.顺序程序及特点(1)计算 程序的一次执行过程称为一个计算,它由许多简单操作 所组成。(2)程序的顺序执行 一个计算的若干操作必须按照严格的先后次序顺序地执 行,这类计算过程就是程序的顺序执行过程。,进程及进程管理进程的引入,3,(3)顺序程序的特点 单道系统的工作情况 对用户作业的处理 首先输入用户的程序和数据;然后进行计算;最后打印计 算结果,即有三个顺序执行的操作。I:输入操作 C:计算操作 P:输出操作,单用户系统中操作的先后次序图,进程及进程管理进程的引入,4,顺序程序的特点顺序性 处理机的操作严格按照程序所规定的顺序执行。封闭性 程序一旦开始执行,其计算结果不受外界因素的影响。可再现性 程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。,进程及进程管理进程的引入,5,2.并发程序(1)多道系统的工作情况,哪些程序段的执行必须是顺 序的?为什么?哪些程序段的执行是并行 的?为什么?,多用户系统中操作的先后次序图,对n个用户作业的处理 作业1:I1 C1 P1 作业2:I2 C2 P2 作业n:In Cn Pn,进程及进程管理进程的引入,6,(2)什么是程序的并发执行 定义 若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠 的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即 使这种重叠是很小的一部分,也称这几个程序段是并发执行的。三个并发执行的程序段 并行语句记号 cobegin S1;S2;Sn;coend,三个并发进程,进程及进程管理进程的引入,7,(3)并发程序的特点 失去程序的封闭性和可再现性 若一个程序的执行可以改变另一个程序的变量,那么,后 者的输出就可能有赖于各程序执行的相对速度,即失去了 程序的封闭性特点。例:讨论共享公共变量的两个程 序,执行时可能产生的不同 结果。程序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:编译1C编译程序 编译2 编译n,程序并发执行的相互制约间接的相互制约关系 资源共享直接的相互制约关系 公共变量,一个程序对应多个计算的例子,进程及进程管理进程的引入,10,3.什么是与时间有关的错误 程序并发执行时,若共享了公共变量,其执行结果与各并发 程序的相对速度有关,即给定相同的初始条件,若不加以控 制,也可能得到不同的结果,此为与时间有关的错误。,进程及进程管理进程的引入,进程概念,进程及进程管理进程概念,11,1.进程定义 运行 暂停 运行,进程及进程管理进程概念,(1)什么是进程 所谓进程,就是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程。(2)进程与程序的区别 程序是静态的概念,进程是动态的概念;进程是一个独立运行的活动单位;进程是竞争系统资源的基本单位;一个程序可以对应多个进程,一个进程至少包含一个程序。,12,2.进程的状态,等待状态(wait)进程正等待着某一事件的发生而暂时停止执行。这时,即使给它CPU控制权,它也无法执行。,就绪状态(ready)进程已获得除CPU之外的运行所必需的资源,一旦得到 CPU控制权,立即可以运行。,(1)进程的基本状态 运行状态(running)该进程已获得运行所必需的资源,它的程序正在处理机上 执行。,进程及进程管理进程概念,13,(2)进程状态的变迁 进程状态可能的变迁,运 行,服务请求(请求I/O等),服务完成/事件来到,进程调度,时间片到,等 待,就 绪,个别系统提供,进程状态变迁图,进程及进程管理进程概念,14,具有进程基本状态的变迁图,进程状态变迁图,进程及进程管理进程概念,15,讨论进程状态的变迁,变迁1 变迁3,是否会发生?需要什么条件?,变迁4 变迁3,是否会发生?需要什么条件?,进程状态变迁的讨论,进程及进程管理进程概念,16,例1:讨论3个排序程序在不同的操作系统环境中执行结果 程序A:冒泡排序算法,在屏幕的左1/3处开设窗口显示其 排序过程;程序B:堆排序算法,在屏幕的中1/3处开设窗口显示其排 序过程;程序C:快速排序算法,在屏幕的右1/3处开设窗口显示其 排序过程。讨论在不支持多进程的操作系统下运行和在支持多进程的 操作系统下运行的情况,(3)讨论在多进程操作系统环境下程序的执行,进程及进程管理进程概念,17,在不支持多进程的操作系统下运行 依次运行程序A、程序B、程序C。在支持多进程的操作系统下运行建立进程A、B、C;对应的程序分别是程序A、B、C;若系统采用时间片轮转的调度策略,则在屏幕上有3个窗口,同时显示3个排序过程。实际上这3个程序在轮流地占用CPU时间,由于CPU的高速度,使我们看到的是这3个程序在同时执行。,进程及进程管理进程概念,18,例2:讨论2个程序在不同的操作系统环境中执行结果 程序C:打印工资报表的程序;程序D:计算1000以内所有素数并显示最后结果。讨论在不支持多进程的操作系统下运行和在支持多进程 的操作系统下运行。,进程及进程管理进程概念,19,在不支持多进程的操作系统下运行 依次运行程序C、程序D,可以看到,先是打印机不停 地打印工资报表,打完后,接着运行程序C,不停地计 算,最后显示所计算的结果。在支持多进程的操作系统下运行建立进程C、D;对应的程序分别是程序C、D;由于进程C是I/O量较大的进程,而进程D是计算量较大的进程,故在系统进程调度的控制下,两个进程并发执行。可以看到打印机不断打印工资报表;而处理机不停地计算,最后屏幕显示计算的结果。,进程及进程管理进程概念,20,3.进程描述(1)什么是进程控制块 描述进程与其他进程、系统资源的关系以及进程在各个不 同时期所处的状态的数据结构,称为进程控制块 PCB(process control block)。(2)进程的组成,程序与数据 描述进程本身所应完成的功能 PCB 进程的动态特征,该进程与其他进程和系统资源的关系。,进程组成的示意图,进程及进程管理进程概念,(3)进程控制块的主要内容,进程标识符 进程符号名或内部 id号 进程当前状态 本进程目前处于何种状态大量的进程如何组织?,21,进程及进程管理进程概念,22,当前队列指针next 该项登记了处于同一状态的下一个进程的 PCB地址。进程优先级 反映了进程要求CPU的紧迫程度。CPU现场保护区 当进程由于某种原因释放处理机时,CPU现场信息被保存 在PCB的该区域中。通信信息 进程间进行通信时所记录的有关信息。家族联系 指明本进程与家族的联系 占有资源清单,进程及进程管理进程概念,进程控制,进程及进程管理进程控制,23,1.进程控制的概念(1)进程控制的职责 对系统中的进程实施有效的管理,负责进程状态的改变。进程状态变化,进程及进程管理进程控制,创建,撤销,等待,唤醒,常用的进程控制原语 创建原语、撤消原语、阻塞原语、唤醒原语,24,(2)进程创建 进程创建原语的形式 create(name,priority),name为被创建进程的标识符priority为进程优先级,进程创建原语的功能 创建一个具有指定标识符的进程,建立进程的PCB结构。,进程及进程管理进程控制,25,PCB池,进程创建原语的实现,进程创建原语的实现框图,PCB池示意图,进程创建原语流程图,进程及进程管理进程控制,26,(3)进程撤销 进程撤销原语的形式 当进程完成任务后希望终止自己时使用进程撤消原语。Kill(或exit),进程撤销原语的功能 撤消当前运行的进程。将该进程的PCB结构归还到PCB资 源池,所占用的资源归还给父进程,从总链队列中摘除 它,然后转进程调度程序。,进程及进程管理进程控制,27,进程撤销原语的实现,进程撤销原语流程图,进程及进程管理进程控制,28,(4)进程等待 进程等待原语的形式 当进程需要等待某一事件完成时,它可以调用等待原语挂 起自己。susp(chan)入口参数chan:进程等待的原因,进程等待原语的功能 中止调用进程的执行,并加入到等待chan的等待队列中;最后使控制转向进程调度。,进程及进程管理进程控制,29,进程等待原语的实现,进程等待原语流程图,进程及进程管理进程控制,30,(5)进程唤醒 进程唤醒原语的形式 当处于等待状态的进程所期待的事件来到时,由发现者进 程使用唤醒原语叫唤醒它。wakeup(chan)入口参数chan:进程等待的原因。,进程唤醒原语的功能 当进程等待的事件发生时,唤醒等待该事件的进程。,进程及进程管理进程控制,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:=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)临界区,进程临界区示意图,进程及进程管理进程之间的相互制约关系,35,(3)互斥,在操作系统中,当某一进程正在访问某一存储区域时,就 不允许其他进程来读出或者修改存储区的内容,否则,就 会发生后果无法估计的错误。进程间的这种相互制约关系 称为互斥。,进程临界区示意图,进程及进程管理进程之间的相互制约关系,36,2.进程同步的概念(1)什么是进程同步 并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息称为进程同步。,(2)进程同步的例,病员就诊,进程同步活动示意图,进程及进程管理进程之间的相互制约关系,37,共享缓冲区的计算进程与打印进程的同步 计算进程 cp和打印进程 iop公用一个单缓冲,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)上锁原语和开锁原语 上锁原语算法 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 时,表示红灯,进程停止执行。注意:创建信号灯时,应准确说明信号灯 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,若相加结果大于零,进程继续执行,否则,要帮助唤 醒在信号灯等待队列上的一个进程。,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.用信号灯的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 表示有一个进程进入临界区;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,例: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;*表示pc进程能否开始执行*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,信号灯设置 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);程序描述,共享缓冲区的合作进程 的同步示意图,进程及进程管理进程互斥与同步的实现,55,程序 task5main()int sa=0;*表示buf中有无信息*int sb=1;*表示buf中有无空位置*cobegin cp();iop();coendcp()iop()while(计算未完成)while(打印工作未完成)得到一个计算结果;p(sa);p(sb);从缓冲区中取一数;将数送到缓冲区中;v(sb);v(sa);从打印机上输出;,共享缓冲区的合作进程 的同步示意图,进程及进程管理进程互斥与同步的实现,56,4.生产者消费者问题(1)生产者消费者问题的例,计算进程和打印进程 计算进程 cp不断产生数据,是生产者;打印进程 iop不断打印数据,是消费者。,通信问题 发消息进程 send不断产生消息,是生产者;收消息进程 receive不断接收消息,是消费者。,进程及进程管理进程互斥与同步的实现,57,(2)生产者消费者问题的一般解答,生产者消费者问题图示,生产者与消费者的同步关系 生产者:当有界缓冲区中无空位置时,要等待;向有界缓冲区放入物品后,要发消息。消费者:当有界缓冲区中无物品时,要等待;从有界缓冲区取出物品后,要发消息。,生产者消费者问题示意图,进程及进程管理进程互斥与同步的实现,58,信号灯设置 两个同步信号灯 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_consmain()int sa=0;*满缓冲区的数目*int sb=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);,进程及进程管理进程互斥与同步的实现,进程通信,进程及进程管理进程通信,62,进程及进程管理进程通信,在消息通信中,接收方和发送方之间有明确的协议和消息格式。消息缓冲通信方式包括消息缓冲、发送原语和接收原语。,1.进程通信的概念 进程通信是指进程之间直接以较高的效率传递较多数据的信 息交互方式。,2.进程通信方式,(1)消息缓存通信,63,进程及进程管理进程通信,在信箱通信中,需要定义信箱结构,还包括消息发送 和接收功能模块,提供发送原语和接收原语。信箱通信中,所使用的信箱可以位于用户空间中,是 接收进程地址空间的一部分;也可以放置在操作系统 的空间中。,(2)信箱通信,线程概念及特点,进程及进程管理线程概念及特点,64,1.什么是线程,(1)线程定义 线程是比进程更小的活动单位,它是进程中的一个执行路 径。(2)线程可以这样来描述,进程及进程管理线程概念及特点,进程中的一条执行路径;它有自己私用的堆栈和处理机执行环境;它与父进程共享分配给父进程的主存;它是单个进程所创建的许多个同时存在的线程中的一个。,65,进程及进程管理线程概念及特点,2.线程的特点,线程是比进程更小的活动单位,它是进程中的一个执行路 径。创建一个线程比创建一个进程开销要小得多。实现线程间通信十分方便,因为一个进程创建的多个线程 可以共享地址区域和数据。线程是一个动态的概念。在进程内创建多线程,可以提高系统的并行处理能力,加 快进程的处理速度。,3.线程的状态变迁,线程的状态变迁图,66,进程及进程管理线程概念及特点,操作系统的并发机制实例,进程及进程管理操作系统的并发机制实例,进程及进程管理操作系统的并发机制实例,1.创建进程及应用实例,(1)调用形式 pid=fork();功能:创建一个子进程,被创建的子进程是父进程的进 程映像的一个副本(除proc结构外),在UNIX系统中,除 了0#进程外,其它进程都是通过调用进程创建系统调用 创建的。,67,(2)系统调用 fork 完成的操作 UNIX/Linux系统的核心为系统调用fork 完成下列操作:为新进程分配一个新的pcb结构;为子进程赋一个唯一的进程标识号(PID);做一个父进程上下文的逻辑副本。由于进程的正文区(代码段)可被几个进程所共享,所以核心只要增加某个正文区的引用数即可,而不是真的将该区拷贝到一个新的内存物理区。这就意味着父子进程将执行相同的代码。数据段和堆栈段属于进程的私有数据,需要拷贝到新的内存区中。增加与该进程相关联的文件表和索引节点表的引用数。这就意味着父进程打开的文件子进程可以继续使用。对父进程返回子进程的进程号,对子进程返回零。,68,进程及进程管理操作系统的并发机制实例,从子进程返回打印:“这是子进程的执行程序。”“这是父、子进程的共有执行程序”从父进程返回 打印:“这是父进程执行程序。”“这是父、子进程的共有执行程序”,(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(child=0)i=i+3;printf(“i=%dn”,i);i=i+5;printf(“i=%dn”,i);,1.fork error2.i=5 i=10 i=73.i=7 i=5 i=104.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谁执行这一段?,子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,进程及进程管理操作系统的并发机制实例,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=pthread_create(,(3)运行结果?,75,进程及进程管理操作系统的并发机制实例,3.等待进程、线程的终止及其应用,(1)等待进程终止 wait();waitpid();,wait()语法格式 pid=wait(stat_addr);wait()函数使父进程暂停执行,直到它的一个子进程结束为 止,该函数的返回值是终止运行的子进程的PID。参数status 所指向的变量存放子进程的退出码,即从子进程的main函 数返回的值或子进程中exit()函数的参数。如果status不是一 个空指针,状态信息将被写入它指向的变量。,76,进程及进程管理操作系统的并发机制实例,waitpid()语法格式 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,进程及进程管理操作系统的并发机制实例,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执行”);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个合作进程 的进程流图,进程及进程管理操作系统的并发机制实例,#include#include int A;void subp1()printf(Ain thread is%dn,A);A=10;main()pthread_t p1;intpid;A=0;,84,应用实例2,进程及进程管理操作系统的并发机制实例,pid=fork();if(pid=0)printf(A in son process is%dn,A);A=100;exit(0);wait();pthread_create(,运行结果?A in son process isA in thread is A in father process is 10,85,进程及进程管理操作系统的并发机制实例,Linux信号量函数在通用的信号量数组上进行操作,而不是在一个单一的信号量上进行操作。这些系统调用主要包括:semget、semop和semctl。,4.信号量及其使用方法,(1)信号量的创建,功能 创建一个新的信号量或是获得一个已存在的信号量键值。,86,进程及进程管理操作系统的并发机制实例,参数key是一个用来允许多个进程访问相同信号量的整数值,它们通过相同的key值来调用semget。参数num_sems参数是所需要的信号量数目。Semget创建的是一个信号量数组,数组元素的个数即为num_sems。sem_flags参数是一个标记集合,与open函数的标记十分类似。低九位是信号的权限,其作用与文件权限类似。另外,这些标记可以与 IPC_CREAT进行或操作来创建新的信号量。一般用:IPC_CREAT|0666,原型 int semget(key_t key,int num_sems,int sem_flags)键值,87,进程及进程管理操作系统的并发机制实例,(2)信号量的控制,原型 int semctl(int sem_id,int sem_num,int command,.),参数sem_id,是由semget所获得的信号量标识符。参数sem_num参数是信号量数组元素的下标,即指定 对第几个信号量进行控制。command参数是要执行的动作,有多个不同的ommand 值可以用于semctl。常用的两个command值为:SETVAL:用于为信号量赋初值,其值通过第四个参数指定。IPC_RMID:当信号量不再需要时用于删除一个信号量标识。,88,进程及进程管理操作系统的并发机制实例,如果有第四个参数,则是union semun,该联合定义如 下:union semun int val;struct semid_ds*buf;unsigned short*array;,(3)信号量的操作,原型 int semop(int sem_id,struct sembuf*sem_ops,size_t num_sem_ops),89,进程及进程管理操作系统的并发机制实例,参数sem_id,是由semget函数所返回的信号量标识符。参数sem_ops是一个指向结构数组的指针,该结构定义如下:num_sem_ops 操作次数,一般为1struct sembuf short sem_num;/数组下标 short sem_op;/操作,-1或+1 short sem_flg;/0,90,进程及进程管理操作系统的并发机制实例,P操作,void P(int semid,int index)struct sembuf sem;sem.sem_num=index;sem.sem_op=-1;sem.sem_flg=0;/:操作标记:0或IPC_NOWAIT等 semop(semid,91,进程及进程管理操作系统的并发机制实例,V操作,void P(int semid,int index)void V(int semid,int index)struct sembuf sem;sem.sem_num=index;sem.sem_op=1;sem.sem_flg=0;semop(semid,92,进程及进程管理操作系统的并发机制实例,5.共享内存,(1)功能 共享内存允许两个或更多进程访问同一块内存,就如同 malloc()函数向不同进程返回了指向同一个物理内存区 域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。,93,进程及进程管理操作系统的并发机制实例,(2)共享内存创建 int shmget(key_t key,int size,int shmflg)其中:key:键值,多个需要使用此共享内存的进程用相同的 key来创建 shmflg:IPC_CREAT|0666,94,进程及进程管理操作系统的并发机制实例,(3)共享内存绑定 int shmget(key_t key,int size,int shmflg)int shmat(int shmid,char*shmaddr,int shmflg)其中:shmid:共享内存句柄,shmget调用的返回值;shmaddr:一般用NUL;shmflg:SHM_R|SHM_W S=(char*)shmat(shmid1,NULL,SHM_R|SHM_W)一旦绑定,对共享内存的操作即转化为对局部变量S的操 作。,95,进程及进程管理操作系统的并发机制实例,(4)共享内存的释放 系统调用格式:int shmctl(shmid,cmd,buf);其中:shmid:共享内存句柄,shmget调用的返回值;cmd:操作命令shmctl(shmid,IPC_RMID,0),96,进程及进程管理操作系统的并发机制实例,进程调度,进程及进程管理进程调度,(1)调度 在众多处于就绪状态的进程中,按一定的原则选择一个 进程。(2)分派 当处理机空闲时,移出就绪队列中第一个进程,并赋予 它使用处理机的权利。,1.调度 分派结构,进程及进程管理进程调度,97,(3)调度分派结构图,进程及进程管理进程调度,98,调度/分派结构示意图,(1)进程管理的数据结构(2)决定调度策略 优先调度 就绪队列按进程优先级高低排序 先来先服务 就绪队列按进程来到的先后次序排序(3)实施处理机的分配和回收,2.进程调度的功能,进程及进程管理进程调度,99,(1)什么是调度方式 当一进程正在处理机上执行时,若有某个更为“重要而紧迫”的进程需要运行,系统如何分配处理机。(2)非剥夺方式 当“重要而紧迫”的进程来到时,让正在执行的进程继续执行,直到该进程完成或发生某事件而进入“完成”或“阻塞”状态时,才把处理机分配给“重要而紧迫”的进程。(3)剥夺方式 当“重要而紧迫”的进程来到时,便暂停正在执行的进程,立即把处理机分配给优先级更高的进程。,3.进程调度的方式,进程及进程管理进程调度,100,(1)进程优先数调度算法 什么是进程优先数调度算法 预先确定各进程的优先数,系统把处理机的使用权赋予就 绪队列中具备最高优先权(优先数和一定的优先级相对应)的就绪进程。优先数的分类及确定 静态优先数 在进程被创建时确定,且一经确定后在整个进程运行 期间不再改变。,4.进程调度算法,进程及进程管理进程调度,101,静态优先数的确定优先数根据进程所需使用的资源来计算优先数基于程序运行时间的估计优先数基于进程的类型 动态优先数 进程优先数在进程运行期间可以改变。动态优先数的确定进程使用CPU超过一定数值时,降低优先数进程I/O操作后,增加优先数进程等待时间超过一定数值时,提高优先数,进程及进程管理进程调度,102,(2)循环轮转调度算法 什么是循环轮转调度算法 当CPU

    注意事项

    本文(《进程及进程》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开