Ćwiczenie nr 4: Synchronizacja zadań w środowisku RT.

Zad.1.
Przykładowy program demonstruje zasadę działania podstawowego mechanizmu synchronizacji jakim jest semafor. Pierwsze zadanie dodaje mniej zasobu niż chce pobrać drugie zadanie co powoduje blokadę i czekanie na zwiększenie liczby zasobu.
a. Zmodyfikuj program tak, żeby rozwiązywał klasyczny problem producent - konsument. Do ochrony regionu krytycznego zastosuj kolejny semafor (binarny).
b. Semafor chroniący sekcję krytyczną zastąp muteksem.
c. (dodatkowe) Spróbuj rozwiązać ten sam problem za pomocą muteksów i zmiennych warunkowych.

Zad.2.
Inwersja priorytetów jest zjawiskiem występującym, gdy zadanie o wyższym priorytecie musi czekać na zakończenie wykonywania się zadania o niższym priorytecie.
a. Napisz program z trzema zadaniami o różnych priorytetach demonstrujący opisaną sytuację, wykorzystując binarny semafor jako zajmowany zasób.
b. Znajdź sposób by zapobiec inwersji priorytetów. Czym różni się binarny semafor od muteksa?