当前位置: 代码迷 >> 综合 >> 【操作系统】进程(线程)间同步互斥问题——高校上机实习问题
  详细解决方案

【操作系统】进程(线程)间同步互斥问题——高校上机实习问题

热度:134   发布时间:2023-09-29 17:06:31.0

问题描述:

某高校计算机系开设有网络课并安排了上机实习,假设机房共有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


  相关解决方案