欢迎来到天天文库
浏览记录
ID:45885969
大小:463.00 KB
页数:73页
时间:2019-11-19
《信号量和银行家算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章同步、通信与死锁主要内容临界区管理信号量与PV操作进程通信死锁转向13.1.3进程的交互:竞争与协作(1)第一种是竞争关系系统中的多个进程之间彼此无关系统中的多个进程之间彼此相关资源竞争的两个控制问题:一个是死锁(Deadlock)问题,一个是饥饿(Starvation)问题既要解决饥饿问题,又要解决死锁问题。进程互斥是指若干个进程因相互争夺独占型资源时所产生的竞争制约关系。2进程的交往:竞争与协作(2)第二种是协作关系某些进程为完成同一任务需要分工协作。进程同步指为完成共同任务的并发进程基于某个条件来协调它们的活动,因为需要在某些位置上排定执行的先后次序而
2、等待、传递信号或消息所产生的协作制约关系。进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒。进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,是对进程使用资源次序上的一种协调。33.2临界区管理3.2.1互斥与临界区3.2.2实现临界区管理的几种尝试3.2.3实现临界区管理的软件方法3.2.4实现临界区管理的硬件设施43.2.1互斥与临界区(1)临界资源:一次仅允许一个进程使用的共享资源,如打印机,表格,磁带机。临界区:在每个进
3、程中方位临界资源的那段程序。与同一变量有关的临界区分散在各进程的程序段中,而各进程的执行速度不可预知。如果保证进程在临界区执行时,不让另一个进程进入临界区,即各进程对共享变量的访问是互斥的,就不会造成与时间有关的错误。5互斥与临界区(2)访问领界区的循环描述repeat进入区临界区推出区剩余区untilfalse检查临界资源是否能访问将临界资源设为未访问6互斥与临界区(3)临界区调度原则:一次至多一个进程能够进入临界区内执行;如果已有进程在临界区,其他试图进入的进程应等待;进入临界区内的进程应在有限时间内退出,以便让等待进程中的一个进入。临界区调度原则总结:互斥
4、使用、有空让进;忙则等待、有限等待;择一而入,算法可行。73.3信号量与PV操作3.3.1同步与同步机制3.3.2信号量与PV操作3.3.3信号量实现互斥3.3.4信号量解决五个哲学家吃通心面问题3.3.5信号量解决生产者-消费者问题3.3.6记录型信号量解决读者-写者问题3.3.7记录型信号量解决理发师问题转向8信号量机制如何协调进程间的同步互斥?1965年E.W.Dijkstra提出了新的同步工具--信号量和P、V操作。信号灯9信号量与PV操作信号量:一种软件资源一种数据结构信号量的值与相应资源的使用情况有关信号量的值仅有P,V操作改变。原语:内核中执行时不可
5、被中断的过程P操作原语和V操作原语一个进程在某一特殊点上被迫停止执行直到接收到一个对应的特殊变量值,这种特殊变量就是信号量(semaphore),复杂的进程合作需求都可以通过适当的信号结构得到满足。10信号量与PV操作那么信号量如何实现?11整型信号量整型数P操作(Wait)原语V操作(Singal)S12整型信号量Wait(s):whiles<=0dono–options:=s-1;Signal(s):s:=s+1;13Wait(s)和Signal(s)是原子操作注意:只要信号量<=0就不断测试,不满足让权等待。14记录型信号量记录型数据结构,有两个分量:一个是
6、信号量的值,另一个是信号量队列的队列指针。信号量的值(-2)信号量队列指针15记录型信号量记录型结构,包含两个数据项Typesemaphore=recordvalue:interger;L:listofprocessend:ValueLPCB链表S16记录型信号量S.value为资源信号量其初值;某类资源的数目Wait操作:申请一个单位资源ProcedureWait(s)vars:semaphore;begins.value=s.value-1;ifs.value<0thenBlock(s,l)End17记录型信号量Singal操作:释放一个单位资源Procedu
7、reSignal(s)VarS:SemaphorebeginS.value:=S.value+1;ifS.value<=0thenWakeup(s,L)S.value18记录型信号量S.value大于等于0表示系统中可用的资源数量S.value小于0表示其绝对值表示申请该资源的阻塞的进程数量S.value等于1:只允许一个进程访问临界资源,是互斥信号量。死锁可能产生!举例!!19记录型信号量Pa:Pb……Wait(Demutex)Wait(Emutex)Wait(Emutex)Wait(Dmutex)……可能会造成僵持的状态!20用信号量实现互斥Varmutex:
8、semap
此文档下载收益归作者所有