Termin przesłania rozwiązania przez moodle: 15.03.2013 23:59
Ocena 0-10 pkt. Za każde rozpoczęte 12 godzin opóźnienia odejmujemy jeden punkt.
W Promeli nie ma konstrukcji do modelowania upływu czasu - spróbujmy obejść to ogranicznenie. Założmy, że czas jest dyskretny, tzn. że jego upływ mierzymy liczbą tiknięć jakiegoś abstrakcyjnego globalnego zegara. Dodatkowo załóżmy, że szybkość wykonywania instrukcji Promeli jest dowolna, tzn. tiknięcia zegara nie wpływają na ich wykonanalność.
kto : {0 ... N} = 0;
(i = 1 .. N) proces P(i) {
powtarzaj
{
jeśli (kto == 0)
{
kto = i; /* zakładamy, że przypisanie zakończy się najpoźniej po T1 jednostkach czasu od wykonania testu ,,kto == 0'' */
sleep(T2);
jeśli (kto == i) {
critical_section
kto = 0;
}
}
}
}
Ostatnia modyfikacja: 05/03/2013