并发进程控制讲义.ppt
《并发进程控制讲义.ppt》由会员分享,可在线阅读,更多相关《并发进程控制讲义.ppt(115页珍藏版)》请在三一办公上搜索。
1、*,操作系统(并发进程),徐锋南京大学计算机科学与技术系,主要内容,并发进程概述临界区管理信号量与PV操作管程进程通信死锁,并发进程概述,顺序程序设计将一个程序设计成为一个顺序执行的程序模块,不同的程序也是按顺序执行。特点:(程序与程序的执行一一对应)执行的顺序性内部顺序性、外部顺序性环境的封闭性执行结果的确定性计算过程的可再现性,并发进程概述,顺序程序设计举例某程序需要循环执行输入、计算、输出三个过程while(TRUE)input;process;output;input 78ms,process 52ms,output 20ms,I1,P1,O1,I2,P2,O2,串行执行,并发进程概述
2、,顺序程序设计举例,处理器效率,处理器的利用率=52n/(78n+52n+20n)=52/150 35%,78,输入机,处理器,磁带机,130,150,228,280,300,378,430,450,时 间,并发进程概述,顺序程序设计优缺点:程序编制、调试方便计算机系统效率较低,并发进程概述,并发程序设计将一个程序分成若干个可同时执行的程序模块,每个程序模块和它执行时所处理的数据就组成了一个进程。特点:并发性共享性制约性交互性,并发进程概述,进程的并发性一组进程在执行时间上重叠,一个进程执行的第一条指令是在另一个进程执行的最后一条指令完成之前开始的宏观:在一个时间段中几个进程同时处于活动状态微
3、观:任一时刻仅有一个进程在处理器上运行实质:一个CPU在几个进程之间的多路复用,并发进程概述,并发程序设计举例一(相关进程)某程序需要循环执行输入、计算、输出三个过程设计为三个可并行执行的程序模块while(TRUE)input;send;78mswhile(TRUE)receive;process;send;52msWhile(TRUE)receive;output;20ms三个进程通过缓冲区交换信息,Ii,缓冲区1,Pi,缓冲区2,Oi,send,send,receive,receive,并发进程概述,并发程序设计举例一,I,P,O,t1,t2,t3,进程,时间,I1,I2,I3,P1,P
4、2,P3,O1,O2,O3,并发进程概述,并发程序设计举例一,处理器效率,78,输入机,处理器,磁带机,130,150,228,306,208,286,384,364,时 间,处理器的利用率=52n/(78n+52+20)67%,当n,并发进程概述,并发程序设计举例二(无关进程)进程A,由指令a1,a2,a3组成;进程B,由指令b1,b2,b3组成。A与B并发执行,则实际的指令执行序列?,a1a2a3b1b2b3,a1b1a2a3b2b3,b1a1b2a2b3a3,b1b2a1a2a3b3,并发进程概述,并发进程间的关系无关一组并发进程分别在不同的变量集合上操作,一个进程的执行与其他并发进程的
5、执行进度无关交互(往)一组并发进程共享某些变量,一个进程的执行可能影响其他并发进程的结果,并发进程概述,无关的并发进程判断并发进程的无关性是进程的执行与时间无关的一个充分条件,又称为Bernstein条件R(Pi)=a1,a2,an,指进程Pi在执行期间引用的变量集W(Pi)=b1,b2,bm,指进程Pi在执行期间改变的变量集若两个进程的上述变量集合满足下列条件:(R(P1)W(P2)(R(P2)W(P1)(W(P1)W(P2)=则并发进程的执行与时间无关,并发进程概述,无关的并发进程判断举例有如下四个进程:P1:a=x+y;P2:b=z+1;P3:c=a b;P4:w=c+1;判断哪两个进程
6、可并发执行?解:R(P1)=x,y,R(P2)=z,R(P3)=a,b,R(P4)=cW(P1)=a,W(P2)=b,W(P3)=c,W(P4)=wP1和P2的上述集合满足Bernstein条件,可并发执行。,并发进程概述,并发进程间的交互(往)竞争关系(间接制约关系)解决手段,进程互斥访问若干个进程要访问同一共享资源时,任何时刻最多允许一个进程访问,其他进程必须等待,直到占有资源的进程释放该资源协作关系(直接制约关系)解决手段,进程同步两个以上的进程基于某个条件来协调它们的活动。一个进程的执行依赖于其协作进程的消息或信号,当没有得到该消息或信号时需要等待,直到消息或信号到达时被唤醒进程的互斥
7、关系是一种特殊的进程同步关系,并发进程概述,并发程序设计的优点:对于单处理器系统,可让处理器和个I/O设备同时工作,发挥硬件的并行能力对于多处理器系统,可让各进程在不同的处理器上并行执行,加快计算速度简化程序设计任务,并发进程概述,采用并发程序设计的目的充分发挥硬件的并行工作能力,提高系统效率是多道程序设计的基础,并发进程概述,有交互关系的并发进程执行时带来的问题由于一组有交互关系的并发进程,其执行的相对速度无法控制,导致出现多种与时间有关的错误出现与时间有关错误的表现形式:结果不唯一永远等待,并发进程概述,结果不唯一错误举例,订票问题process Ti(i=1,2)var Xi:integ
8、er;begin按旅客定票要求找到Aj;Xi:=Aj;if Xi=1 then begin Xi:=Xi-1;Aj:=Xi;输出一张票;endelse 输出票已售完;end;,并发进程概述,永远等待错误举例,内存管理问题procedure borrow(var B:integer)begin if Bx then 申请进程进入等待队列等主存资源 x:=x-B;修改主存分配表,申请进程获得主存资源 end;procedure return(var B:integer)begin x:=x+B;修改主存分配表 释放等主存资源的进程 end;,临界区管理,临界区:并发进程中与共享变量有关的程序段,称
9、为临界区(Critical Section)临界资源:共享变量代表的资源,称为临界资源(Critical Resource)临界区管理:保证一个进程在临界区执行时,不让另一各进程进入相关的临界区。(实现对共享变量的互斥访问),临界区管理,临界区调度的原则一次至多一个进程能够进入它的临界区不能让一个进程无限地留在临界区不能强迫一个进程无限等待进入临界区“无空等待、有空让进、择一而入、算法可行”,临界区管理,临界区的描述临界资源(共享变量)shared 变量名临界区region 变量名 do 语句(复合语句)临界区的嵌套例,region X do;region Y do;嵌套可能导致进程无限地留在
10、临界区,临界区管理,临界区管理的尝试引入进程标志,分别指示进程进入临界区的情况第一种尝试,先测试,后置位不能保证同一时间只有一个进程进入临界区第二种尝试,先置位,后测试会出现死循环的情况,永远等待,临界区管理,临界区管理的尝试(1)inside1,inside2:Booleaninside1:=false;/*P1不在其临界区内*/inside2:=false;/*P2不在其临界区内*/cobeginprocess P1Begin while inside2 do begin end;inside1:=true;临界区;inside1:=false;end;process P2 Begin w
11、hile inside1 do begin end;inside2=true;临界区;inside2:=false;end;coend,临界区管理,临界区管理的尝试(2)inside1,inside2:Booleaninside1:=false;/*P1不在其临界区内*/inside2:=false;/*P2不在其临界区内*/cobeginprocess P1Begin inside1:=true;while inside2 do begin end;临界区;inside1:=false;end;process P2 Begin inside2=true;while inside1 do be
12、gin end;临界区;inside2:=false;end;coend,临界区管理,实现临界区管理的软件方法Dekker算法Peterson算法,临界区管理,Dekker算法,采用指示器变量turn来指示该由哪个进程进入临界区具体实现:/变量定义及初始化var inside:array1.2 of boolean;turn:integer;turn:=1 or 2;inside1:=false;inside2:=false;,临界区管理,Dekker算法(续),cobegin process P1begin inside1:=true;while inside2 do if turn=2 t
13、hen begin inside1:=false;while turn=2 do begin end;inside1:=true;end 临界区;turn=2;inside1:=false;end;,process P2begin inside2:=true;while inside1 do if turn=1 then begin inside2:=false;while turn=1 do begin end;inside2:=true;end 临界区;turn=1;inside2:=false;end;coend.,临界区管理,Dekker算法(续)基本思想:进程P1(或P2)进入自己的
14、临界区时,把自己的标志位insidei置为true,并检查对方标志位如果对方不在也不想进入临界区,进程Pi可立即进入临界区;如果双方都想进入,咨询指示器turn,若turn为1(或为2),P1(或P2)知道应该自己进入缺点:算法复杂难以理解,临界区管理,Peterson算法基本思想:用对turn的置值和while语句来限制每次只有一个进程进入临界区;进程执行完临界区程序后,修改insidei状态使等待进入临界区的进程可在有限时间内进入。算法满足临界区管理的三个条件。,临界区管理,Peterson算法算法描述(1)/变量定义及初始化var inside:array1.2 of boolean;t
15、urn:integer;turn:=1 or 2;inside1:=false;inside2:=false;,临界区管理,Peterson算法算法描述(2),cobeginprocess P1begin inside1:=true;turn:=2;while(inside2 and turn=2)do begin end;临界区;inside1:=false;end;,process P2begin inside2:=true;turn:=1;while(inside1 and turn=1)do begin end;临界区;inside2:=false;end;coend.,临界区管理,实
16、现临界区管理的硬件方法关中断(阻止进程交替执行)测试并建立指令,TS(测试与上锁不能分离)TS(x):若x=true,则x:=false;return true;否则return false;实现:var s:boolean;s:=true;process Pivar pi:boolean;begin repeat pi:=TS(s)until pi;临界区;s:=true;end;,临界区管理,实现临界区管理的硬件方法对换指令,SwapSwap(a,b):temp:=a;a:=b;b:=temp;例如:XCHG指令实现:var lock:boolean;lock:=false;process
17、 Pivar pi:boolean;begin pi:=true;repeat Swap(lock,pi)until pi=false;临界区;lock:=false;end;,信号量与PV操作,同步问题生产者-消费者问题是计算机操作系统中并发进程内在关系的一种抽象,是典型的进程同步问题生产者(如,计算进程、发送进程)消费者(如,打印进程、接收进程)问题描述(有界缓冲问题)有n个生产者和m个消费者,连接在一个有k个单位缓冲区的有界环形缓冲上。其中,pi和ci都是并发进程,只要缓冲区未满,生产者pi生产的产品就可投入缓冲区;类似,只要缓冲区不空,消费者ci就可从缓冲区取走并消耗产品。,信号量与P
18、V操作,生产者-消费者问题示意,P1,Pn,C1,Cm,Buffer,1,2,3,0,4,5,6,k-1,k-2,k-3,send,send,receive,receive,缓冲区指针:in,生产者进程投入产品指针out,消费者进程取产品指针缓冲区计数器:counter,in,out,信号量与PV操作,生产者-消费者问题算法描述,var k:integer;type item:any;buffer:array0.k-1 of item;in,out:integer:=0;counter:integer:=0;process producer while(TRUE)begin produce a
19、n item in nextp;if(counter=k)sleep();bufferin:=nextp;in:=(in+1)mod k;,counter:=counter+1;if(counter=1)wakeup(consumer)end;process consumer while(TRUE)begin if(counter=0)sleep();nextc:=bufferout;out:=(out+1)mod k;counter:=counter 1;if(counter=k-1)wakeup(producer)consume the item in nextc;end;,信号量与PV操
20、作,生产者-消费者算法存在的问题由于生产者和消费者进程执行速度的不一致导致:缓冲器计数器出错错过等待唤醒解决方法:交互进程之间通过交换信号或消息来达到调整相互执行速度,从而保证进程协调运行的目的,信号量与PV操作,进程同步机制:操作系统实现进程同步的机制,通常由同步原语组成常见的同步机制:信号量与PV操作管程消息传递,信号量与PV操作,信号量与PV操作前述临界区管理方法存在的问题软件方法:复杂度高、效率低,将测试能否进入临界区的责任推给用户,降低系统的可靠性,加重用户编程负担硬件方法:虽然简单,但硬件设施采用忙式等待测试、浪费CPU时间1965,Dijkstra提出了新的同步机制信号量与PV操
21、作同步原语:P(Proberen,测试)原语,V(Verhogen,增量)原语除赋初值外,信号量仅能由同步原语操作,信号量与PV操作,信号量的分类按用途可分为:公用信号量(进程互斥)私有信号量(进程同步)按取值可分为:二元信号量(0/1,互斥)一般信号量(非负整数,同步)按信号量的结构:(简单数据类型)整型信号量记录型信号量,信号量与PV操作,整型信号量(初步)设s为一正整型量P(s):当信号量s大于0时,将信号量s减一,否则调用P(s)的进程等待直至信号量s大于0。描述:while s=0 do null operation/忙式等待 s:=s-1;V(s):将信号量s加一描述:s:=s+1
22、;,信号量与PV操作,记录型信号量(系统内核实现)s为一个记录型变量,包括两个分量value,整型量,非负初值queue,进程队列,初值为空P(s):将信号量s的value值减去1,若结果小于0,则调用P(s)的进程被置为等待信号量s的状态,并加入queue队列V(s):将信号量s的value值加1,若结果不大于0,则唤醒queue队列中某个等待信号量s的进程,信号量与PV操作,记录型信号量,描述:type semaphore=record value:integer;queue:list of process;end;procedure P(var s:semaphore);begin s.
23、value:=s.value 1;if s.value 0 then W(s.queue);end;procedure V(var s:semaphore);begin s.value:=s.value+1;if s.value=0 then R(s.queue);end;,信号量与PV操作,当信号量代表某个物理资源时,关于记录型信号量和PV操作的三个推论若s.value为正,则该值代表实际还可以使用的物理资源数量若s.value为负,则其绝对值代表s.queue队列中等待该物理资源的进程数目P操作意味着请求一个资源(可能被阻塞),V操作意味着释放一个资源(唤醒被阻塞的进程),信号量与PV操作
24、,二元信号量记录型信号量的一个特例,其value分量仅能取值为0或1BP(s):if s.value=1 then s.value=0 else w(s.queue);BV(s):if s.queue is empty then s.value:=1 else R(s.queue);表达能力等同与一般的记录型信号量(稍有差别),信号量与PV操作,采用记录型信号量实现互斥与硬件指令实现的区别,P,V操作只对信号量测试一次(等待),而TS指令需要反复测试(忙等待)实现互斥的一般形式:var mutex:semaphore;mutex:=1;cobegin process Pi begin P(mu
25、tex);临界区;V(mutex);end;coend;,信号量与PV操作,记录型信号量与PV操作解决售票问题,var A:Array1.m of integer;mutex:semaphore;mutex:=1;cobegin process Pi var Xi:integer;begin L1:按旅客要求找到对应的Aj;P(mutex);Xi:=Aj;,if Xi=1 then begin Xi:=Xi-1;Aj:=Xi;V(mutex);输出一张票;end else begin V(mutex);提示票已售完;end;goto L1;end;coend.,信号量与PV操作,记录型信号量与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并发 进程 控制 讲义

链接地址:https://www.31ppt.com/p-6386982.html