天天看點

【作業系統】程序(線程)間同步互斥問題——高校上機實習問題

問題描述:

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

繼續閱讀