信号量互斥题目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

试用用信号量机制描述两人下象棋的过程。

两人下象棋的过程可以概括为:一开始只能是“红先黑后”,以后两人要循环轮流走子,直至某一方获胜或双方和棋为

止。•

这是个只有一个生产者和一个消费者的生产者——消费者问题,是个典型的“你等我,我也等你”的问题。红方是总的前趋任务——生产者进程,黑方是总的后继任务——消费者进程,但由于下棋过程必须轮流走子,所以红黑双方的生产者消费者身份会轮流改变。棋盘则是生产者与消费者共享的缓冲。•要求:只描述对弈过程,对棋盘的访问不做描述。二人对弈过程是个纯粹的同步过程

①所用信号量设臵如下:

Ⅰ)同步信号量hei,初值为1,表示黑方已走子,开始时可使红方先行不受阻。

Ⅱ)同步信号量hong,初值为0,表示红方尚未走子,开始时可使黑方先行受阻。

用信号量机制描述的二人下象棋过程如下

有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:

(1)为描述读者的动作,应编写几个程序,设臵几个进程?(2)试用P、V操作描述读者进程之间的同步关系。分析:•读者的动作都是一样的:登记进入阅览室,阅读,

撤消登记离开阅览室,因此可写一个程序,设n个进程。

•读者共享的资源有阅览室的座位和登记表,因此诸

个读者进程之间有两种互斥制约关系,需设2个信号量来实现:• seat:用于实现诸读者对阅览室的空闲座位的互斥

竞争,初值为100;

• mutex:用于实现诸读者对登记表的互斥访问,初值

为1

(1)可写一个程序,设n个进程

(2)读者进程readeri(i=1,2,3,……)描述如下:

P(seat); /*申请空座位*/

P(mutex); /*申请登记*/

登记;

V(mutex) /*允许其他读者登记*/

阅读;

P(mutex); /*申请撤消登记*/

撤消登记;

V(mutex); /*允许其他读者撤消登记*/ V(seat); /*释放座位,允许他人进入*/

相关文档
最新文档