# SyK 13
# Zadanie 1
1 lub 2
Tak ma miejsce **sytuacja wyścigu**
# Zadanie 2
Min 50, max 100
# Zadanie 3

- Mutual Exclusion - spełniony
- Warunek progress - nie spełniony
Oba procesy ustawią:
flag[my_id] = true;
I w nieskończoność będą wykonywać:
while (flag[1 - my_id] == true);
(Oba procesy chcą wejść do sekcji krytycznej, a żaden do niej nie wejdzie)
- Bounded waiting - spełniony
Bo jeżeli drugi proces ma nie chce się wykonywać, to od razu ten pierwszy rozpocznie się wykonywać.
# Zadanie 4

1) Mutual exclusion
Proces A wchodzi do sekcji krytycznej wtedy i tylko wtedy, gdy flaga procesu B jest ustawiona na false lub gdy zmienna turn zawiera jego identyfikator. Może dojść do sytuacji, w której obydwa procesy
będą miały ustawioną flagę, ale zmienna turn może przyjąć tylko jedną wartość, więć tylko jeden proces wejdzie do sekcji krytycznej.
2) Załóżmy, że proces A chce wejść do sekcji krytycznej (flag[A]==true), a proces B nie (flag[B]==false). Zmienna turn będzie wskazywać na proces B, ale skoro flag[B]==false, to proces A będzie mógł wejść do sekcji krytycznej.
3) Instrukcja flag[id] = false z sekcji `unlock` gwarantuje, że proces będzie czekał na wejście do sekcji krytycznej tylko do momentu, gdy drugi z procesów zakończy swoją sekcję krytyczną i wykona sekcję wyjściową.
# Zadanie 5
| A | B |
| ------------------------------------------------------- | ----------------------------------------------------- |
| turn = A | |
| ... (proces A śpi) | turn = B |
| ... (proces A śpi) | flag[1] = true |
| ... (proces A śpi) | ? (flag[0] && ...) -> niespełnione, wejdzie do sekcji |
| flag[0] = true | |
| ? (... && turn == A) -> niespełnione, wejdzie do sekcji | |
| | |
Więc warunek Mutual Exclusion nie będzie spełniony
Warunek progress spełniony, bo działa identycznie jak w zwykłym algorytmie - a tam jak zostało pokazane warunek jest spełniony.
Analogicznie dla bounded waiting.
# Zadanie 6
Nic nie działa
# Zadanie 7
Wszystko działa. Jeżeli proces rozpoczyna wykonywanie sekcji krytycznej to flaga true drugiego procesu ustawiona jest na true.
# Zadanie 8

Nie jest spełnione bounded waiting
Progress jest spełniony
# Zadanie 9
Uczciwość zapełniona przez tablicę waiting