¹®¼ 5: ¹®Á¦ A.1, A.2ÀÇ ´ä¾ÈÁö (³»¿ë¾øÀ½)
¹®¼ 6: °úÁ¦ BÀÇ ¼³¸í°ú ´ä¾ÈÁö
¹®¼ 7: ¹®Á¦ C.1ÀÇ ´ä¾ÈÁö (³»¿ë¾øÀ½)
¹®¼ 8: ¹®Á¦ C.2ÀÇ ´ä¾ÈÁö (³»¿ë¾øÀ½)
ÀÀ´ä ÀýÂ÷
procedure Are_you_open?(Client,Semaphore) begin if State = S1 then State <- S2 Send("Open(Semaphore,Client)") else if State = S2 then Send("Closed(Semaphore,Client)") end procedure Ready(Server, Semaphore) begin State <- S1 end
ÀÀ´ä ÀýÂ÷
procedure C_Job(User,Client,Document) begin if State = SA then State <- SB Send("Are_you_open?(Client, SEMAPHORE(Semaphore_Index))") else if State = SB then Send("Try_later(Client,User, Client_is_busy)") else if State = SC then Send("Try_later(Client,User, All_Servers_are_busy)") end procedure Open(Semaphore,Client) begin if State = SB then State <- SC Send("S_Job(Client,Server, Document)") end procedure Closed(Semaphore,Client) begin Countdown <- Waiting_Period Send("Wait(Client,Client)") end procedure Wait(Client,Client) begin Countdown <- Countdown - 1 if Countdown > 0 then Send("Wait(Client,Client)") else Send("Are_you_open?(Client, SEMAPHORE(Semaphore_Index))") end procedure C_Ready(Server,Client) begin State <- SA end
¸Þ½ÃÁö Á¤º¸(i, j, k´Â ÀÚ¿¬¼ö)
¡¡
C_Job¿Í Wait ÇÔ¼ö¿¡¼ ¹Ù²ï ºÎºÐ¿¡ ¹ØÁÙÀ» ±×¾î ³õ¾Ò´Ù.
procedure C_Job(User,Client)
begin
if State = SA
then State <- SB
for Semaphore_Index <- 1 step 1 until Number_of_Servers
Send("Are_you_open?(Client,SEMAPHORE(Semaphore_Index))")
else
if State = SB
then Send("Try_later(Client,User,Client_is_busy)")
else
if State = SC
then Send(,Try_later(Client,User,All_Servers_are_busy)')
end
procedure Wait(Client,Client)
begin
if State = SB
then Countdown <- Countdown -1
if Countdown > 0
then Send("Wait(Client,Client)")
else
if Countdown < 0
then Countdown <- 0
else for Semaphore_Index <- 1 step 1 until Number_of_Servers
Send("Are_you_open?(Client,SEMAPHORE(Semaphore_Index))")
end
°úÁ¦ BÀÇ Á¤´äÀ¸·Î ¿Ã¹Ù¸¥ °ÍÀ» Ç¥±âÇ϶ó.
(a) CLIENT(1)ÀÇ ¹®¼°¡ SERVER(1)°ú SERVER(2)¿¡¼ ÀμâµÉ °ÍÀÌ´Ù.
CLIENT(2)ÀÇ ¹®¼´Â ÀμâµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
(b) CLIENT(1)ÀÇ ¹®¼°¡ SERVER(1)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
CLIENT(2)ÀÇ ¹®¼°¡ SERVER(2)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
(c) CLIENT(1)ÀÇ ¹®¼°¡ SERVER(1)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
CLIENT(2)ÀÇ ¹®¼°¡ SERVER(1)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
(d) CLIENT(1)ÀÇ ¹®¼°¡ SERVER(2)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
CLIENT(2)ÀÇ ¹®¼°¡ SERVER(2)¿¡¼ ÇÑ ¹ø ÀμâµÉ °ÍÀÌ´Ù.
(e) CLIENT(1)ÀÇ ¹®¼´Â ÀμâµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
CLIENT(2)ÀÇ ¹®¼°¡ SERVER(1)°ú SERVER(2)¿¡¼ ÀμâµÉ °ÍÀÌ´Ù.
¡¡
1 1 1 1 1 2 2 1 1 1 1 2 1 3 3 1 1 1 1 2 1 1 3 1 4 3 1 1 1 1 2 1 1 1 2 5 4 1 1 1 1 2 1 1 3 1 1 4 1 6 4 1 1 1 1 2 1 1 1 2 1 2 2 7 4 1 1 1 1 2 1 1 1 2 1 1 3 8 4 1 1 1 1 2 1 1 3 1 1 2 2 9 4 1 2 1 1 3 1 1 1 2 1 2 2 10 4 2 1 1 1 2 1 2 2 1 2 1 2 11 4 1 1 1 1 2 1 2 2 1 1 1 2 12 4 2 2 1 2 1 2 1 2 2 2 2 2