Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 904 Bytes

2019-CS-02.md

File metadata and controls

32 lines (23 loc) · 904 Bytes

Условие

Всеки от процесите $P$, $Q$ и $R$ изпълнява поредица от две инструкции:

$P$ $Q$ $R$
$p_1$ $q_1$ $r_1$
$p_2$ $q_2$ $r_2$

Осигурете чрез три семафора синхронизация на $P$, $Q$ и $R$ така, че отделните инструкции да се изпълнят в следния времеви ред: $p_1$, $q_1$, $r_1$, $p_2$, $q_2$, $r_2$.

Решение

Initialize
Semaphore s,t,r
s.init(0)
t.init(0)
r.init(0)
$P$ $Q$ $R$
s.wait() t.wait()
$p_1$ $q_1$ $r_1$
s.signal() t.signal() r.signal()
r.wait() s.wait() t.wait()
$p_2$ $q_2$ $r_2$
s.signal() t.signal()