操作系统原理_庞丽萍_第四章并发处理_第1页
操作系统原理_庞丽萍_第四章并发处理_第2页
操作系统原理_庞丽萍_第四章并发处理_第3页
操作系统原理_庞丽萍_第四章并发处理_第4页
操作系统原理_庞丽萍_第四章并发处理_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第四章并发处理,(一)并发程序及特点(二)进程的基本概念(三)进程控制(四)进程互斥(五)进程同步(六)线程的基本概念,2,(一)并发程序及特点一.顺序程序及特点1.什么是计算程序的一次执行过程称为一个计算,它由许多简单操作所组成。2.什么是程序的顺序执行一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行过程。,3,2.例:讨论单道系统的工作情况对用户作业的处理首先输入用户的程序和数据然后进行计算最后打印计算结果即有三个顺序执行的操作I:输入操作C:计算操作P:输出操作,4,3.顺序程序的特点(1)顺序性处理机的操作严格按照程序所规定的顺序执行。(2)封闭性程序一旦开始执行,其计算结果不受外界因素的影响。独占资源(3)可再现性程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。,5,二.并发程序及特点1.例:讨论在多道批处理系统中,对大量作业的处理。对作业1、作业2、作业n的处理:作业1:I1C1P1作业2:I2C2P2作业n:InCnPn,6,用下图说明在多道批处理系统中,大量操作执行的先后次序。,讨论:(1)哪些程序段的执行必须是顺序的?为什么?(2)哪些程序段的执行是并行的?为什么?,7,2.什么是程序的并发执行若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重叠是很小的一部分,也称这几个程序段是并发执行的。例:三个并发执行的程序段。,8,3.并行语句记号可以用语句cobeginS1;S2;Sncoend来表示语句S1,S2,Sn可以并发执行。三.与时间有关的错误什么是与时间有关的错误程序并发执行时,若共享了公共变量,其执行结果与各并发程序的相对速度有关,即给定相同的初始条件,若不加以控制,也可能得到不同的结果,此为与时间有关的错误。,9,四.并发程序的特点1.失去程序的封闭性和可再现性如果一个程序的执行可以改变另一个程序的变量,那么,后者的输出就可能有赖于各程序执行的相对速度,也就是失去了程序的封闭性特点。例:讨论共享公共变量的两个程序,它们执行时可能产生的不同结果。设:程序A每执行一次都要做n加1的操作,程序B每隔一定时间打印出n值,并将它重新置为零。,10,程序An:=n+1;,程序Bprint(n);n:=0;,程序A的n:=n+1与程序B的两个语句的关系n的赋值打印的结果n的最终赋值,之前10110,之后10101,之间10100,11,(2)程序与计算不再一一对应一个程序可以对应多个计算,例1:I1输入程序段I2In,例2:编译1C编译程序编译2编译n,12,(3)程序并发执行的相互制约直接的相互制约关系公共变量间接的相互制约关系资源共享,13,(二)进程的基本概念,一.进程定义程序并发执行时,新的活动规律:执行暂停执行,1.什么是进程所谓进程,就是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程。,14,2.进程与程序的区别(1)程序是静态的概念;进程是动态的概念。(2)进程是一个独立运行的活动单位。(3)进程是竞争系统资源的基本单位。(4)一个程序可以对应多个进程;一个进程至少包含一个程序。,15,二.进程状态1.进程的基本状态(1)运行状态(running)该进程已获得运行所必需的资源,它的程序正在处理机上执行。(2)等待状态(wait)进程正等待着某一事件的发生而暂时停止执行。这时,即使给它CPU控制权,它也无法执行,则称该进程处于等待态。(3)就绪状态(ready)进程已获得除CPU之外的运行所必需的资源,一旦得到CPU控制权,立即可以运行。,16,2.进程状态的变迁进程的状态随着自身的推进和外界条件的变化而发生变化。,17,三.进程描述当某程序和其他程序并发执行时,产生了动态特征,并由于并发程序之间的相互制约关系而造成了比较复杂的一个外界环境。1.什么是进程控制块描述进程与其他进程、系统资源的关系以及进程在各个不同时期所处的状态的数据结构,称为进程控制块pcb(processcontrolblock)或称为进程描述器(processdescriptor)。,18,2.进程的组成,进程控制块PCB,程序与数据,程序与数据:描述进程本身所应完成的功能;PCB:进程的动态特征,该进程与其他进程和系统资源的关系。,19,3.PCB的主要内容(1)进程标识符:进程符号名或内部id号。(2)进程当前状态:本进程目前处于何种状态(运行、就绪、等待)。(3)当前队列指针next:该项登记了处于同一状态的下一个进程的pcb地址。(4)总链队列指针all_q_next:该项登记了在系统总链队列中,下一个进程的pcb地址。,20,21,(5)程序开始地址:该进程的程序将从此地址开始执行。(6)进程优先级:反映了进程要求CPU的紧迫程度.(7)CPU现场保护区:当进程由于某种原因释放处理机时,CPU现场信息被保存在pcb的该区域中。(8)通信信息:进程间进行通信时所记录的有关信息。(9)家族联系:指明本进程与家族的联系(10)占有资源清单,22,(三)进程控制一.进程控制的概念1.进程控制的职责对系统中的全部进程实施有效的管理,负责进程状态的改变。进程状态变化:,无有消亡运行等待就绪等待,23,2.常用的进程控制原语创建原语、撤消原语、阻塞原语、唤醒原语等。二.进程创建1.进程创建原语的形式create(name,priority,start_addr)name为被创建进程的标识符priority为进程优先级start_addr为某程序的开始地址。,24,2.进程创建原语的功能创建一个具有指定标识符的进程,建立进程的PCB结构。3.进程创建原语的实现(1)PCB池,25,(3)程序描述算法create输入:新进程的符号名,优先级,开始执行地址输出:新创建进程的内部标识符pid在总链队列上查找有无同名的进程;if(有同名进程)return(错误码);*带错误码返回*从pcb资源池申请一个空闲的pcb结构;if(无空pcb结构)return(错误码);*带错误码返回*用入口参数设置pcb内容;置进程为“就绪”态;将新进程的pcb入就绪队列;将新进程的pcb入总链队列;return(新进程的pid);,26,三.进程撤消1.进程撤消原语的形式当进程完成任务后希望终止自己时使用进程撤消原语。Kill(或exit)该命令没有参数,其执行结果也无返回信息。2.进程撤消原语的功能撤消当前运行的进程。将该进程的pcb结构归还到pcb资源池,所占用的资源归还给父进程,从总链队列中摘除它,然后转进程调度程序。,27,3.进程撤消原语的实现算法kill输入:无输出:无由运行指针得当前进程的pid;释放本进程所占用的资源给父进程;该进程从总链队列中摘除;释放此pcb结构;转进程调度程序;,28,四.进程等待1.进程等待原语的形式当进程需要等待某一事件完成时,它可以调用等待原语把自己挂起。susp(chan)入口参数chan:进程等待的原因。2.进程等待原语的功能中止调用进程的执行,并加入到等待chan的等待队列中;最后使控制转向进程调度。,29,3.进程等待原语的描述算法susp输入:chan等待的事件(阻塞原因)输出:无保护现行进程的CPU现场到pcb结构中;置该进程为“阻塞”态;将该进程pcb插入到等chan的等待队列;转进程调度;,30,3.进程等待原语的描述算法susp输入:chan等待的事件(阻塞原因)输出:无保护现行进程的CPU现场到pcb结构中;置该进程为“阻塞”态;将该进程pcb插入到等chan的等待队列;转进程调度;,31,3.进程等待原语的描述算法susp输入:chan等待的事件(阻塞原因)输出:无保护现行进程的CPU现场到pcb结构中;置该进程为“阻塞”态;将该进程pcb插入到等chan的等待队列;转进程调度;,32,五.进程唤醒1.进程唤醒原语的形式当处于等待状态的进程所期待的事件来到时,由发现者进程使用唤醒原语叫唤醒它。wakeup(chan)入口参数chan:进程等待的原因。2.进程唤醒原语的功能当进程等待的事件发生时,唤醒等待该事件的所有进程或等待该事件的首进程。,33,3.进程唤醒原语的描述算法wakeup输入:chan等待的事件(阻塞原因)输出:无保护现行进程的CPU现场;找到该阻塞原因的队列指针;找到该等待进程;将进程移出此等待队列;置进程状态为“就绪”;将进程入就绪队列;,34,(四)进程互斥一.进程互斥的概念1.临界资源(1)例1:两个进程A、B共享一台打印机若不加以控制,两个进程的输出结果可能交织在一起,很难区分。(2)例2:两个进程共享一个变量x设:x代表某航班机座号,p1和p2两个售票进程,售票工作是对变量x加1。这两个进程在一个处理机C上并发执行,分别具有内部寄存器r1和r2,,35,两个进程共享一个变量x时,两种可能的执行次序:A:p1:r1:=x;r1:=r1+1;x:=r1;p2:r2:=x;r2:=r2+1;x:=r2;B: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,36,特点:当两个进程公用一个变量时,它们必须顺序地使用,一个进程对公用变量操作完毕后,另一个进程才能去访问和修改这一变量。(3)什么是临界资源我们把一次仅允许一个进程使用的资源称为临界资源。许多物理设备,如输入机、打印机、磁带机等都具有这种性质。软件资源,如公用变量、数据、表格、队列等也都具有这一特点。,37,(4)什么是临界区在每个进程中,访问临界资源的那段程序能够从概念上分离出来,称为临界区或临界段。它就是进程中对公共变量(或存储区)进行审查与修改的程序段,称为相对于该公共变量的临界区。,38,(5)什么是互斥在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程来读出或者修改存储区的内容,否则,就会发生后果无法估计的错误。进程间的这种相互制约关系称为互斥。例如:进程A正在执行csa段时,进程B就不能进入csb段执行。,39,二.锁和上锁、开锁操作1.什么是锁用变量w代表某种资源的状态,w称为“锁”。2.上锁操作和开锁操作检测w的值(是0还是1);如果w的值为1,继续检测;如果w的值为0,将锁位置1(表示占用资源),进入临界区执行。(此为上锁操作),临界资源使用完毕,将锁位置0。(此为开锁操作),40,3.上锁原语和开锁原语(1)上锁原语算法lock输入:锁变量w输出:无test:if(w为1)gototest;*测试锁位的值*elsew=1;*上锁*(2)开锁原语算法unlock输入:锁变量w输出:无w=0;*开锁*,41,4.用上锁原语和开锁原语实现进程互斥,42,三.信号灯和p、v操作1.什么是信号灯信号灯是整型变量。变量值0时,表示绿灯,进程执行;变量值0时,表示红灯,进程停止执行。信号灯是一个确定的二元组(s,q),s是一个具有非负初值的整型变量,q是一个初始状态为空的队列。操作系统利用信号灯的状态对并发进程和共享资源进行控制和管理。注意:创建信号灯时,应准确说明信号灯s的意义和初值(这个初值绝不能为负值)。,43,2.p、v操作信号灯的值只能由p、v操作来改变。(1)p操作p操作定义对信号灯s的p操作记为p(s)。p(s)是一个不可分割的原语操作,即取信号灯值减1,若相减结果为负,则调用p(s)的进程被阻,并插入到该信号灯的等待队列中,否则可以继续执行。,44,p操作原语的实现算法p输入:变量s输出:无s;if(s0)保留调用进程CPU现场;将该进程入s的等待队列;置“等待”状态;转进程调度;,45,(2)v操作v操作定义对信号灯s的v操作记为v(s)。v(s)是一个不可分割的原语操作,即取信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤醒在信号灯等待队列上的一个进程。,46,v操作原语的实现算法v输入:变量s输出:无s+;if(s=0)移出s等待队列首元素;将该进程入就绪队列;置“就绪”态;,47,3.用信号灯的P、V操作实现进程互斥设:mutex为互斥信号灯,初值为1。(1)框图描述,48,4.例:设:x代表某航班机座号,p1和p2两个售票进程,售票工作是对变量x加1。试用信号灯的P、V操作实现这两个进程的互斥。(1)程序描述程序task2main()intmutex=1;*互斥信号灯*cobeginpa();pb();coend,49,pa()pb()p(mutex);p(mutex);x:=x+1;x:=x+1;v(mutex);v(mutex);(2)信号灯可能的取值两个并发进程,互斥信号灯的值仅取1、0和1三个值。若mutex=1,表示没有进程进入临界区;若mutex=0,表示有一个进程进入临界区;若mutex=1,表示一个进程进入临界区,另一个进程等待进入。,50,(五)进程同步一.进程同步的概念1.什么是进程同步所谓同步,就是并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息称为进程同步。2.进程同步的例(1)病员就诊,51,2.进程同步的例(1)病员就诊,52,(2)共享缓冲区的计算进程与打印进程的同步计算进程cp和打印进程iop公用一个单缓冲,53,二.两类同步问题的解法1.合作进程的执行次序(1)进程流图描述进程集合的执行时间轨迹的图。图的连接描述了进程间开始和结束的次序约束。,54,(2)例:pa、pb、pc为一组合作进程,其进程流图如图所示,试用信号灯的p、v操作实现这三个进程的同步。,分析任务的同步关系:任务启动后pa先执行,当它结束后,pb、pc可以开始执行,pb、pc都执行完毕后,任务终止。为了确保这一执行顺序,设两个同步信号灯sb、sc分别表示进程pb和pc能否开始执行,其初值均为0。,55,(3)程序描述程序task4main()intsb=0;*表示pb进程能否开始执行*intsc=0;*表示pc进程能否开始执行*cobeginpa();pb();pc();coendpa()pb()pc()p(sb);p(sc);v(sb);v(sc);,56,pa()pb()pc()p(sb);p(sc);v(sb);v(sc);,57,2.共享缓冲区的合作进程的同步的解法计算进程cp和打印进程iop公用一个单缓冲,为了完成正确的计算与打印,试用信号灯的p、v操作实现这两个进程的同步。,58,(1)两个进程的任务计算进程cp经过计算,将计算结果送入buf;打印进程iop把buf中的数据取出打印。(2)两个进程的同步关系当cp进程把计算结果送入buf时,iop进程才能从buf中取出结果去打印,即当buf内有信息时,iop进程才能动作,否则必须等待。当iop进程把buf中的数据取出打印后,cp进程才能把下一个计算结果数据送入buf中,即只有当buf为空时,cp进程才能动作,否则必须等待。,59,(3)程序描述信号灯设置:设置两个信号灯sa和sb。信号灯sa用来表示缓冲区中是否有可供打印的计算结果,其初值为0。信号灯sb用以表示缓冲区有无空位置存放新的信息,其初值为1。程序task5main()intsa=0;*表示buf中有无信息*intsb=1;*表示buf中有无空位置*,60,cobegincp();iop();coendcp()iop()while(计算未完成)while(打印工作未完成)得到一个计算结果;p(sa);p(sb);从缓冲区中取一数;将数送到缓冲区中;v(sb);v(sa);从打印机上输出;,61,三.生产者消费者问题1.生产者消费者问题的例(1)计算进程和打印进程计算进程cp不断产生数据,是生产者;打印进程iop不断打印数据,是消费者。(2)通信问题发消息进程send不断产生消息,是生产者;收消息进程receive不断接收消息,是消费者。,62,2.生产者消费者问题的一般解答(1)生产者消费者问题图示,(2)生产者与消费者的同步关系生产者:当有界缓冲区中无空位置时,要等待;向有界缓冲区放入物品后,要发消息。消费者:当有界缓冲区中无物品时,要等待;从有界缓冲区取出物品后,要发消息。,63,(4)生产者消费者问题程序描述程序prod_consmain()intsa=0;*满缓冲区的数目*intsb=n;*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论