问题描述:
某高校计算机系开设有网络课并安排了上机实习,假设机房共有2m台机器,有2n名学生选修该课,规定:
(1)每两个学生组成一组,各占一台机器,协同完成上机实习。(2)只有一组的两个学生到齐,并且此时机房有空闲机器时,该组学生才能进入机房。
(3)上机实习由一名教师检查,检查完毕,一组学生同时离开机房。
试用P、V操作模拟上机实习过程。
问题思路:
在本题中,为了保证系统的控制流程,增加了Monitor进程,用于控制学生的进入和计算机分配。从题目本身来看,虽然没有明确写出这一进程,但实际上这一进程是存在的。因此,在解决这类问题时,需要对题目认真加以分析,找出其隐蔽的控制机制。
代码如下:
BEGIN
student, computer, enter, finish, check:semaphore;
student:=0;
computer:=Bm;
enter:=0;
finish:=0;
check:=0;
COBEGIN
Process Procedure Student;
begin
V(student); {表示有学生到达}
P(computer); {获取一台计算机}
P(enter); {等待允许进入}
DO it with partner;
V(finish); {表示实习完成}
P(check); {等待教师检查}
V(computer); {释放计算机资源}
end
Process Procedure Teacher;
begin
LA: P(finished); {等待学生实习完成}
P(finished); {等待另一学生实习完成}
check the work;
V(check); {表示检查完成}
V(check); {表示检查完成}
goto LA;
end
Process Procedure Monitor
begin
LB: P(student); {等待学生到达}
P(student); {等待另一学生到达}
V(enter); {允许学生进入}
V(enter); {允许学生进入}
goto LB;
end