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

問題描述:

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


發佈了45 篇原創文章 · 獲贊 89 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章