信号量互斥题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); /*释放座位,允许他人进入*/