网站大量收购闲置独家精品文档,联系QQ:2885784924

进程和处理机管理.ppt

  1. 1、本文档共104页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

生产者和消费者利用n个缓冲器工作的情况n个缓冲区生产者消费者生产者P(empty)P(mutex)P(mutex)P(full)V(full)V(mutex)V(mutex)V(empty)生产者和消费者的同步规则如下:生产者企图将一个消息放入已满的缓冲区时要等消费者取走一个消息之后;消费者企图从空的缓冲器中取走消息时,要等生产者放入一个之后。为此,设置两个私用信号量empty和full,用于进程之间的同步。其中,empty信号量表示可用的空缓冲器的数目,初始值为n,full信号量表示消息数目,初始值为0。缓冲器是共享的临界资源,要求两个进程互斥地对其操作,故设置一个公用信号量mutex,初始值为1(表示没有进程进入临界区),它用于实现进程互斥。生产者与消费者对于n个缓冲器的互斥与同步问题的描述如下:beginsemaphoremutex,empty,full;mutex:=1;empty:=n;full:=0;cobeginproducer:beginL1:producenextmessage;P(empty);P(mutex);Addtobuffer;V(mutex);V(full);GotoL1;End;Consumer:beginL2:P(full);P(mutex);Takefrombuffer;V(mutex);V(empty);Consumeproduct;GotoL2;End;Coend;如果将生产者进程或消费者进程中的P(empty)和P(mutex)或P(full)和P(mutex)的次序颠倒,会造成死锁而使两个进程都无法执行。这是因为若生产者(消费者)进程先执行P(mutex)操作,就意味着它将申请临界区资源,如果它不阻塞可以继续执行,当执行到P(empty)(或P(full))而阻塞时,必须启动另外一个进程执行,另一个进程当执行到P(mutex)时,也会因为临界区的互斥而阻塞,从而导致两个进程都无法执行下去,故产生死锁。请读者分析一下V操作的次序可否颠倒。实际使用的是将n个缓冲器构成一个环形缓冲区,如图3-13所示。工作时只要不是生产者进程的速度过快,以至于使缓冲区全满,或者消费者进程执行的速度过快而使缓冲区全空,那么缓冲区的容量将是无限大的。它将使缓冲区由有界变为无界。图3-13环形缓冲区生产者(往空缓冲区中送消息)消费者(从满缓冲区中取消息)。图3-13环形缓冲区生产者(往空缓冲区中送消息)消费者(从满缓冲区中取消息)3.5进程通信进程之间的信息交换称为进程通信。进程之间的所有通信情况都归结为互斥和同步两类,而严格说来,互斥也是一种同步,是一种很特殊的同步,前面已经讨论过。同步又可以分为信号同步和信件同步两种。信号同步:发送者只给对方发送一简单信号(同步的双方互相明白该信号的寓意)。1信件同步:发送者给对方发送一复杂信件。例如,用户进程要输出结果时,请求输出进程为它服务,用户进程将要输出的信息在内存中的头地址、输出信息的个数、输出格式以及在哪一台设备上输出等信息作为一个信件发送给输出进程,输出进程在尚未收到信件之前暂停执行,收到信件后,分析信件并按要求完成输出工作。交通控制程序提供了专门的机构来实现进程通信,这种机构通常叫做通信原语。2通信原语通常分为低级通信原语和高级通信原语两类。低级通信原语如关锁与开锁原语以及上一节所介绍的PV操作原语等。它们只能完成简单的信号传递,通信的效率低。高级通信原语如消息缓冲或信箱等通信手段完成的通信,这些通信方法是以较高的效率传递大批信息。3.5.1消息缓冲(messagebuffer)Hansen于1973年首先提出用消息缓冲作为进程通信的基本手段,并在RC4000系统中实现了。消息缓冲是进程之间的高级通信工具,它实现了以较高的效率在进程之间传递大批数据的的直接通信方式。为了实现这种通信方式,系统必须提供相应的原语。如发送消息(send)原语和读取消息(read)原语。所谓消息就是一组信息。消息缓冲区是包含如下信息的缓冲区:指向发送进程的指针Sptr;指向下一个消息缓冲区的指针Nptr;消息长度Size;消息正文Text。3.5.2信箱(mailbox)信箱是用以存放信件的。利用信箱通信就是由发送进程申请建立一个与接收进程链接的信箱,然后发送进程将欲发送的消息送往信箱中,接收进程从信箱中取出消息

文档评论(0)

SYWL2019 + 关注
官方认证
内容提供者

权威、专业、丰富

认证主体四川尚阅网络信息科技有限公司
IP属地北京
统一社会信用代码/组织机构代码
91510100MA6716HC2Y

1亿VIP精品文档

相关文档