进程的同步与互斥.pptx
《进程的同步与互斥.pptx》由会员分享,可在线阅读,更多相关《进程的同步与互斥.pptx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、12023/3/30两种制约关系两种制约关系直接相互制约关系(同步)间接相互制约关系(互斥)产生的原因进程合作资源共享 第1页/共45页22023/3/30进程的同步(进程的同步(1 1)直接相互制约关系(同步)指系统中一些进程需要相互合作,共同完成一项任务,这种协作进程之间相互等待对方消息或信号的协调关系称为进程同步.具体说,并发进程在一些关键点上可能需要互相等待与互通消息,进程间的相互联系是有意识的安排的。产生的原因进程合作第2页/共45页32023/3/30进程的同步(进程的同步(2 2)一般同步问题有两类保证一组合作进程按逻辑需要的执行次序执行 【例】司机 P1 售票员 P2 REPE
2、AT REPEAT 启动 关门 正常运行 售票 到站停 开门 UNTIL FALSE UNTIL FALSE保证共享缓冲区(共享数据)的合作进程的同步 【例】输入进程PI缓冲区缓冲区计算进程PC打印进程PP第3页/共45页42023/3/30进程的互斥进程的互斥是解决进程间竞争关系(间接制约关系)的手段。间接相互制约关系(互斥)是指若干个进程同时竞争一个需要互斥使用的资源时,任何时刻最多允许一个进程去使用,其他要使用该资源的进程必须等待,直到该资源被释放。进程间要通过某种中介发生联系,是无意识安排的。产生的原因资源共享互斥是一种特殊的同步逐次使用互斥资源,也是对进程使用资源次序上的一种协调。第
3、4页/共45页52023/3/30临界资源临界资源 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量。硬件临界资源:打印机、磁带机软件临界资源:只能排它使用的变量、表格、队列第5页/共45页62023/3/30临界资源实例临界资源实例二人合作存款 count=100;count=100;P PA A S1:N=count;S1:N=count;S2:N=N+100;S2:N=N+100;S3:count=N;S3:count=N;P PB B S4:M=count;S4:M=count;S5:M=M+200;S5:M=M+200;S6:count=M;S6:co
4、unt=M;执行情况:(1)P PA A P PB B,P,PB B P PA A count=400 count=400 (2)S1S1 P PB BS2S3 count=200 count=200(3)S4S4 P PA AS5S6 count=300 count=300 因count是一个互斥性使用的变量,是一个临界资源第6页/共45页72023/3/30临界区临界区临界区(临界段)在进程中访问临界资源的那段代码区。例子第7页/共45页82023/3/30具有临界资源的进程结构 /*进入区*/critical section;/*临界区*/*退出区*/remainder section;
5、/*剩余区*/entry sectionexit section第8页/共45页92023/3/30访问临界区应遵循的原则空闲让进 当无进程在临界区时,任何有权使用临界区的进程可进入。忙则等待 不允许两个以上的进程同时进入临界区。有限等待 任何进入临界区的要求应在有限的时间内得到满足。让权等待 不能进入临界区的进程应放弃占用CPU。第9页/共45页102023/3/30临界区互斥解决方法硬件缺点:成本高软件用编程解决缺点:(1)忙等待 (2)实现过于复杂,需要高的编程技巧信号量机制第10页/共45页112023/3/30信号量机制信号量机制一类资源抽象成S(信号量)信号量 只能由P P、V V
6、操作对其进行操作的变量。信号量的使用应注意必须置一次且只能置一次初值。初值只能为非负整数,实现互斥时初值为1 1。只能执行P P、V V操作。第11页/共45页122023/3/30P P、V V操作操作 P(S):表示申请一个资源。V(S):表示释放一个资源。P、V操作必须成对出现,有一个P操作就一定有一个V操作。第12页/共45页132023/3/30整型信号量整型信号量信号量S:整型量,除初始化外仅能通过P、V操作访问P和V操作原语定义:var S:integer;S=1;P(S):while S 0 do no-op S=S-1;V(S):S=S+1;一类资源抽象成S(信号量)整型量第
7、13页/共45页142023/3/30利用整型信号量实现进程互斥P(S)V(S)P1P2互斥区互斥区P(S)V(S)第14页/共45页152023/3/30记录型信号量记录型信号量记录型信号量信号量S S:记录型数据结构,一个分量为整型量value,value,另一个分量为信号量队列 L L;信号量的物理含义 当S.value0:表示可用资源个数 当S.value0:表示可用资源正好用完 当S.value0:表示等待该类资源的进程数一类资源抽象成S(信号量)value 0L=nil信号量的值(-2)(-2)信号量队列指针第15页/共45页162023/3/30struct semaphore
8、int value;int*L;void P(struct semaphore S);S.value=S.value 1;/*把信号量减去1*/if S.value 0 then block(S.L);/*若信号量小于0,则调用P(S)的进 程被置成等待信号量S的状态*/物理意义:申请一个资源,如果申请成功,则返回;如果申请不成功,则挂在该资源的等待队列上。void V(struct semaphore S);S.value=S.value+1;/*把信号量加1*/if S.value 0:表示有S.value个资源可用S.value=0:表示无资源可用S.value 0:则|S.value|
9、表示等待队列中的进程个数 信号量的初值应该大于等于0第18页/共45页192023/3/30P P、V V操作讨论操作讨论(2)(2)P(S):表示申请一个资源 V(S):表示释放一个资源。P、V操作必须成对出现,有一个P操作就一定有一个V操作P、V操作的优点 简单,而且表达能力强,可解决任何互斥问题P、V操作的缺点 不够安全,P、V操作使用不当会出现死锁,遇到复杂互斥问题时,实现复杂。第19页/共45页202023/3/30用用P P、V V操作实现互斥操作实现互斥信号量初值为1对于两个并发进程,互斥信号量的值仅取1、0和-1三个值:若mutex.value1表示没有进程进入临界区若mute
10、x.value0表示有一个进程进入临界区若mutex.value-1表示一个进程进入临界区,另一个进程等待进入。第20页/共45页212023/3/30利用P、V操作实现两个进程互斥的模板如下:struct semaphore mutex;mutex.value=1;mutex.L=nil;cobegin Process P1:Begin M P(mutex);临界区1 V(mutex);M End Process P2:Begin M P(mutex);临界区2 V(mutex);M End coend 第21页/共45页222023/3/30使用使用PVPVPVPV操作实现互斥应注意操作实
11、现互斥应注意识别临界资源是否被共享;是否有排它性使用要求。临界区代码应尽量短小,不能有死循环。P和V原语应分别紧靠临界区的头尾。P、V操作在同一进程中必须成对出现。第22页/共45页232023/3/30思考题思考题 用记录型信号量解决二人存款问题,用类C语言编写进程互斥算法。第23页/共45页242023/3/30用用P P、V V操作实现操作实现进程的同步进程的同步只要信号量初值是一个大于等于0的整数就能达到同步的目的,就可以直接使用P、V操作实现同步互斥是一种特殊的同步P、V操作既可以实现互斥,也可以实现同步第24页/共45页利用信号量实现进程同步的实例利用信号量实现进程同步的实例设有三
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 同步
限制150内