第6章 进程间的制约关系 - 副本.ppt

第6章 进程间的制约关系 - 副本.ppt

ID:49055784

大小:379.50 KB

页数:64页

时间:2020-01-30

第6章  进程间的制约关系 - 副本.ppt_第1页
第6章  进程间的制约关系 - 副本.ppt_第2页
第6章  进程间的制约关系 - 副本.ppt_第3页
第6章  进程间的制约关系 - 副本.ppt_第4页
第6章  进程间的制约关系 - 副本.ppt_第5页
资源描述:

《第6章 进程间的制约关系 - 副本.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本章学习目标1、进程间的制约关系2、信号量和P、V操作3、死锁问题和高级进程通信第6章进程间的制约关系在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,这些资源有些是可共享使用的,如磁盘,有些是以独占方式使用的,如打印机。由此将会引起一系列的矛盾,产生错综复杂的相互制约的关系。产生这种错综复杂的相互制约关系的原因有二:资源共享——间接制约关系进程合作——直接制约关系6.1进程间制约关系进程间的同步2.进程间的互斥一、进程间的同步和互斥临界资源:某段时间仅允许一个进程使用的资源称为临界资源。宿舍电话打印机电话和打印机都属于临界资源。除此之

2、外,还有内存变量、指针、数组等等也是临界资源。几个进程若共享同一临界资源,它们必须以互斥的方式使用这个临界资源,即当一个进程正在使用临界资源且尚未使用完毕时,则其他进程必须推迟对该资源的进一步操作。一、进程间的同步和互斥临界区(criticalsection)每个进程中访问临界资源的那段程序段称为相对于临界资源的临界区。访问临界资源的进程互斥的进入各自的临界区。这种方法使用了一个物理实体,称为锁,用W来表示,锁有两种状态,W=0表示锁已打开;W=1表示锁被关闭。加锁原语用LOCK(W)表示,其操作为:测试W,若W=1,表示资源正在使用,继续反复测试;若W=0,置W=

3、1(加锁)。加锁原语用LOCK(W)可描述为L:ifW=1thengotoLelseW:=1;开锁原语用UNLOCK(W)表示,可描述为W:=0;二、实现临界区互斥的锁操作法两个进程P1、P2使用如下程序实施进程的互斥:进程P1进程P2LOCK(W)LOCK(W)S1S2UNLOCK(W)UNLOCK(W)其中S1和S2分别为进程P1和P2的临界区。三、实现临界区互斥的TS指令法Test-and-Set指令FunctionTS(VARboolean:lock):booleanBeginTS=lock;lock=TRUE;ENDlock表示临界资源的两种状态:lock

4、=TRUE表示临界资源正被占用,lock=FALSE表示临界资源空闲;lock的初值为FALSE。互斥算法(TS指令)利用TS实现进程互斥:每个临界资源设置一个公共布尔变量lock,初值为FALSEwhileTS(lock)doskip;lock:=FALSE;criticalsectionremaindersection1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步工具,在长期广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量机制发展到记录型信号量机制,进而发展为“信号集”机制。现在信号量机制已广泛应用于OS中。6.2信号量和

5、P、V操作信号量按联系进程的关系分成二类:公用信号量(互斥信号量):它为一组需互斥共享临界资源的并发进程而设置,代表共享的临界资源,每个进程均可对它施加P、V操作,即都可申请和释放该临界资源,其初始值置为1。信号量s取值意义如下:s=1;表示资源空闲,可供使用。s=0;表示资源已被占用,无其它进程等待。s=-n;表示资源已被占用,还有n个进程因等待资源而阻塞。私用信号量(同步信号量):它为一组需同步协作完成任务的并发进程而设置,只有拥有该资源的进程才能对它施加P操作(即可申请资源),而由其合作进程对它施加V操作(即释放资源)。P、V操作是定义在信号量S上的两个操作,

6、其定义分别如下:P(S):S:=S-1若S≥0,则调用P(S)的进程继续运行;若S<0,则调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列中。V(S):S:=S+1;若S>0,则调用V(S)的进程继续运行;若S≤0,从等待信号量S的阻塞队列中唤醒头一个进程,然后调用V(S)的进程继续运行。P、V操作可表示为如下两个过程:P操作:ProcedureP(VarS:Semaphore)BeginS:=S-1;//表示申请一个资源;Ifs<0//表示没有空闲资源;thenW(S)//调用进程进入等待队列;End;V操作:ProcedureV(Vars:semap

7、hore)BeginS:=S+1;//表示释放一个资源;IfS≤0//表示有进程处于阻塞状态;thenR(S)//从等待队列s中取出一个进程是其进入就绪队列;End;其中W(S)表示将调用该过程的进程置成等待信号量S的阻塞状态,并插入相应的阻塞队列中。R(S)表示要唤醒等待信号S阻塞队列中的头一个进程。为临界资源设置一个互斥信号量mutex(MUTualExclusion),其初值为1;在每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间必须成对使用P和V原语:遗漏P原语则不能保证互斥访问,遗漏V原语则不能在使用临界资源之后将其释放(给其他等待

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。