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

admin2013-07-12  42

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

选项

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

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

最新回复(0)