問題描述:
某高校計算機系開設有網絡課並安排了上機實習,假設機房共有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