操作系统课件2进程同步习题课.pptVIP

  • 18
  • 0
  • 约3.97千字
  • 约 24页
  • 2018-01-20 发布于广东
  • 举报
Southeast University 7.* Operating System Concepts 进程同步与互斥习题集 张竞慧 jhzhang@seu.edu.cn Operating System Concepts 进程同步与互斥:习题1 嗜睡的理发师问题:一个理发店由一个有N张沙发的等候室和一个放有一张理发椅的理发室组成。没有顾客要理发时,理发师便去睡觉。当一个顾客走进理发店时,如果所有的沙发都已经占用,他便离开理发店;否则,如果理发师正在为其他顾客理发,则该顾客就找一张空沙发坐下等待;如果理发师因无顾客正在睡觉,则由新到的顾客唤醒理发师为其理发。在理发完成后,顾客必须付费,直到理发师收费后才能离开理发店,试用信号量实现这一同步问题。 进程同步与互斥:习题1 分析:本题中,顾客进程和理发师进程之间存在着多种同步关系: 1.只有在理发椅空闲时,顾客才能做到理发椅上等待理发师理发,否则顾客便必须等待;只有当理发椅上有顾客时,理发师才可以开始理发,否则他也必须等待;这种同步关系类似于单缓冲的生产者-消费者问题中的同步关系,故可通过信号量empty和full来控制; Operating System Concepts 进程同步与互斥:习题1 2.理发师为顾客理发时,顾客必须等待理发的完成,并在理发完成后理发师唤醒他,这可单独使用一个信号量cut来控制; 3.顾客理完发后必须向理发师付费,并等理发师收费后顾客才能离开;而理发师则需等待顾客付费,并在收费后唤醒顾客以允许他离开,这可分别通过两个信号量payment和receipt来控制。 Operating System Concepts 进程同步与互斥:习题1 4.等候室中的N帐沙发是顾客竟争的资源,故还需为它们设置了一个资源信号量sofa 5.为了控制顾客的人数,使顾客能自所有的沙发都被占用时离开理发店,还必须设置一个整型变量count来对理发店重的顾客进行计数,该变量将被多个顾客进程互斥地访问并修改,这可通过一个互斥信号量mutext来实现。 Operating System Concepts 进程同步与互斥:习题1 为解决上述问题,需设置一个整型变量count用来对理发店重的顾客进行计数,并需设置7个信号量,其中:mutex用来实现顾客进程对count变量的互斥访问,其初值为1;sofa是对应于等候室中N张沙发的资源信号量,其初值为N;empty表示是否有空闲的理发椅,其初值为1;full表示理发椅上是否有等待理发的顾客,其初值为0;cut用来等待理发的完成,其初值为0;payment表示用来等待付费,其初值为0;receipt用来等待收费,其初值为0。 Operating System Concepts 进程同步与互斥:习题1 算法: Operating System Concepts 进程同步与互斥:习题2 设有两个生产者进程A、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售;销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库,也不允许边入库边出库;而且要求生产和消费A产品和B产品的件数都满足一下关系:-n≤A的件数-B的件数≤m,其中n、m是正整数。 Operating System Concepts 进程同步与互斥:习题2 分析:本题中存在着以下的同步和互斥关系:生产者A、B和消费者之间不能同时将产品入库和出库,故仓库是一个临界资源;两个生产者之间必须进行同步,当生产的A、B产品的件数之差大于等于m时,生产者A必须等待;小于等于-n时,生产者B必须等待; Operating System Concepts 进程同步与互斥:习题2 生产者和销售者之间也必须进行同步,只有当生产者生产出产品并入库后,销售者才能进行销售;而且由于销售的产品件数必须满足关系-n≤A的件数-B的件数≤m,因此当销售的A、B产品件数之差大于等于m而仓库中已无B产品时,或者销售的A、B产品的件数之差小于等于-n而仓库中已无A产品时,销售者C必须等待 Operating System Concepts 进程同步与互斥:习题2 生产的A、B产品必须满足:-n≤A的件数-B的件数≤m,分别使用了信号量SAB和SBA; 仓库的管理只要求出入库互斥,由于仓库无限大入库只要操作互斥就可以完成,出库要考虑有无产品,SA对应于仓库中的A产品量,SB对应于仓库中的B产品量; Operating System Concepts 进程同步与互斥:习题2 销售要满足:-n≤A的件数-B的件数≤m,用difference表示A的件数-B的件数,即difference= A的件数-B的件数;difference==-n的时候,不能取产品B,只能取A;diffe

文档评论(0)

1亿VIP精品文档

相关文档