Dzień dobry!

Do 30.01. muszę oddać to zadanie, a nie za bardzo radzę sobie z UNIXEM, proszę o pomoc.
Opracować zestaw programów typu producent-konsument realizujący następujący schemat synchronicznej komunikacji międzyprocesowej:

  • Proces 1: Czyta wprowadzone dane (z pliku/klawiatury) i przekazuje je w niezmienionej formie do procseu 2 poprzez mechanizm komunikacyjny K1.
  • Proces 2: Pobiera dane przesłane przez proces 1. Zliacza liczbę przesłanych znaków i przekazuje ją do procesu 3 poprzez mechanizm komunikacyjny K2.
  • Proces 3: Pobiera dane wyprodukowane przez proces 2 i wypisuje je na standardowym strumieniu diagnostycznym,

Wszystkie trzy procesy powinny być powoływane automatycznie z jednego procesu inicjującego. Po powołaniu procesów potomnych proces inicjujący wstrzymuje pracę. Proces inicjujący wznawia pracę w momencie kończenia pracy programu (o czym niżej), jego zadaniem jest "posprzątać" po programie przed zakończeniem działania.

Ponadto należy zaimplementować mechanizm asynchronicznego przekazywania informacji pomiędzy operatorem, a procesami oraz pomiędzy procesami. Wykorzystać do tego dostęonym mechanizm sygnałów. Operator może wysłać do dowolnego procesu sygnał zakończenia działania (s1), sygnał wsztrymania działania (s2) i sygnał wznowienia działania (S3). Sygnał S2 powoduje wstrzymanie synchronicznej wymiany danych pomiędzy procesami. Sygnał S3 powoduje wznowienie tej wymiany. Sygnał S1 powoduje zakończenie działania oraz zwolenienie wszystkich wykorzystywanych przez procesy zasobów (zasoby zwalnia proces macierzysty). każdy z sygnałów przekazywany jest przez operatora tylko do jednego, dowolnego, procesu. O tym, do którego procesu wysłać sygnał, decyduje operator, a nie programista. Każdy z sygnałów operator może wysłać do innego procesu. Mimo, że operator kieruje sygnał do jednego procesu, to pożądane przez operatora działanie musi zostać zrealizowane przez wszystkie trzy procesy. W związku z tym, proces odbierający sygnał od operatora musi powiadomić o przyjętym żądaniu pozostałe dwa procesy. W związku z tym, proces odbierający sygnał od operatora musi powiadomić o przyjętym żądaniu pozostałe dwa procesy. Powinien wobec tego przekazać do nich odpowieni sygnał informując, o tym jakiego działania wymaga operator. Procesy odbierające sygnał, powinny zachować się adekwatnie do otrzymanego sygnału. Wszystkie trzy procesy powinny zareagować zgodnie z żądaniem operatora.

Sygnały oznaczone w opisie zadania symbolami S1, S2, S3 należy wybrać samodzienie spośród dostęnych w systemie.

W przygotowanym rozwiązaniu należy dodatkowo wykorzystać mechanizm synchronizacji (jeśli mechanizmy komunikacji tego wymagają)

dla parametru K1- mechanizm: pamięć współdzielona
dla parametru K2- mechanizm: pamięć współdzielona