某大学的阅览室共有300个座位,同学进入时必须先在管理处用学生证换取座位牌,若座位满了,同学就要在阅览室外等候。当有同学离开时,要到管理处用座位牌换回学生证。请画出流程图,试用一种类语言,利用信号量和P、V操作,描述同学进入和离开阅览室的过程。

admin2014-12-08  37

问题 某大学的阅览室共有300个座位,同学进入时必须先在管理处用学生证换取座位牌,若座位满了,同学就要在阅览室外等候。当有同学离开时,要到管理处用座位牌换回学生证。请画出流程图,试用一种类语言,利用信号量和P、V操作,描述同学进入和离开阅览室的过程。

选项

答案同学进入阅览室的同步算法如下流程图所示。 typedef int semaphore; semaphore mutex=1; semaphore sit=300; void student() { P(sit); P(mutex); mark_sit(); V(mutex); reading(); P(mutex); release_sit(); V(mutex); V(sit); leave(); } [*]

解析 本题考查进程间同步的问题。用信号量是可以解决同步问题的。假设同学有很多,晚自习时都希望在图书馆的阅览室占到一个座位,但是,阅览室的座位数是有限的,我们不妨设该数值为一个资源信号量,用它来控制进入阅览室的同学的数量。另外设互斥量mutex,代表在管理处换取座位牌时,管理处的临界资源,初始值为1,用来防止两个及以上的同学同时换取座位牌而造成混乱。
转载请注明原文地址:https://jikaoti.com/ti/5sajFFFM
0

最新回复(0)