操作系统课件3.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:35 大小:110KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统课件3.ppt

操作系统课件3.ppt

预览

免费试读已结束,剩余 25 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第七章进程同步与通信7.1进程的顺序性与并发性7.2与时间有关的错误7.3临界区与PV操作7.4进程的互斥7.5进程的同步7.6进程通信7.7UNIX中的进程同步与进程通信7.8线程概念7.1进程的顺序性与并发性顺序进程的特征(1)封闭性:程序在封闭的环境下运行,并独占全机,因此机内的资源的状态只有运行的程序操作才能改变它,其执行结果不受外界因素的影响。(2)可再现性:只要程序执行时的环境和初始条件相同,程序经多次运行后所得的结果必然相同。7.1.2进程的并发性若干个进程同时在系统中运行,这些进程的执行在时间上是重叠的,一个进程的执行尚未结束,另一个进程的执行已经开始,即使这种重叠是很小的一部分,也称这几个进程是并发的。例:三个并发执行的进程。并发进程之间的关系(1)无关的:一个进程的执行不影响其他进程的执行结果,也不依赖其他进程的进展情况,即它们是各自独立的,则说这些进程相互之间是无关的。(2)有交互的:一个进程的这些要依赖其他进程的进展情况,或者可能会影响其他进程的执行结果,则说这些进程相互之间是有交互的。有交互的进程并发执行时,会破坏“封闭性”和“可再现性”7.2与时间有关的错误processObserverbeginL1:observealorry;count:=count+1;gotoL1;end;例2:机票预订系统AB旅行社A查到某机座空;::旅行社B查到某机座空;与其顾客商量;::旅行社A预订该机座;:B预订该机座;7.3临界区与PV操作临界区:并发交叉中与共享变量有关的程序段相关临界区:并发交叉中涉及相同变量的那些临界区进入临界区的准则:(1)每次至多有一个进程处于临界区;(2)当有若干个进程欲进入临界区时,应在有限的时间内使其进入;(3)进程在临界区内仅逗留有限的时间。7.3.2PV操作PV操作时由两个不被中断的过程——P操作原语和V操作原语组成。PV操作是对信号量实施操作信号量S是整型变量,其物理含义为:S>0时,S表示可使用的资源,或表示可使用资源的进程数。S=0时,表示无资源可供使用,或表示不允许进程再进入临界区。S<0时,|S|表示等待使用资源的进程个数,或表示等待进入临界区的进程个数。注意:创建信号灯时,应准确说明信号灯s的意义和初值(这个初值绝不能为负值)。信号量的值只能由P、V操作来改变。(1)P操作对信号量S的P操作记为P(S)。P(S)是一个不可分割的原语操作,即取信号灯值减1,若相减结果为负,则调用p(S)的进程被阻,并插入到该信号灯的等待队列中,否则可以继续执行。(2)V操作对信号量S的V操作记为V(S)。V(S)是一个不可分割的原语操作,即取信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤醒在信号灯等待队列上的一个进程。7.3.3用PV操作管理临界区信号量S的取值范围:-2、-1、0、17.4进程的互斥7.4.1用PV操作实现进程的互斥begincount:integer;count:=0;S:semaphore;S:=1;cobeginprocessObserverbeginL1:observealorry;P(S);count:=count+1;V(S);gotoL1;end;7.4.2读者写者问题7.5进程的同步7.5.2用PV操作实现进程的同步进程的同步:并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才唤醒。1.同步机制(1)调用P操作测试消息是否到达(2)调用V操作发送消息2.生产者消费者问题(1)只有一个生产者和一个消费者,只有单个缓冲区(2)只有一个生产者和一个消费者,有n单个缓冲区3.同步与互斥的混合问题例2m个生产者和r个消费者,有n单个缓冲区beginB:array[0..(n-1)]ofinteger;k,t:integer;k:=0;t:=0;m1,m2,SP,SG:semaphore;m1:=m2:=1;SP:=n;SG:=0;cobeginprocessproduceri(i=1,2,…,m)beginL1:produceaproduct;P(SP);P(m1);B[k]:=product;k:=(k+1)modn;V(m1);V(SG);gotoL1;end;例3:桌上有一个盘子,每次只能放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果。试用PV操作实现四个人的同步,并写出程序描述。beginmutex,SA,SO: