Komunikacja między procesami - przegląd
Komunikacja międzyprocesowa (IPC) to mechanizm, który obejmuje komunikację jednego procesu z innym procesem. Zwykle ma to miejsce tylko w jednym systemie.
Komunikacja może być dwojakiego rodzaju -
Pomiędzy powiązanymi procesami inicjowanymi tylko z jednego procesu, na przykład procesów nadrzędnych i potomnych.
Pomiędzy niepowiązanymi procesami lub dwoma lub więcej różnymi procesami.
Poniżej znajduje się kilka ważnych terminów, które musimy znać, zanim przejdziemy dalej do tego tematu.
Pipes- Komunikacja między dwoma powiązanymi procesami. Mechanizm jest półdupleksowy, co oznacza, że pierwszy proces komunikuje się z drugim procesem. Aby osiągnąć pełny dupleks, tj. Aby drugi proces mógł komunikować się z pierwszym procesem, wymagany jest inny potok.
FIFO- Komunikacja między dwoma niepowiązanymi procesami. FIFO to pełny dupleks, co oznacza, że pierwszy proces może komunikować się z drugim procesem i odwrotnie w tym samym czasie.
Message Queues- Komunikacja między dwoma lub więcej procesami w trybie pełnego dupleksu. Procesy będą się ze sobą komunikować, wysyłając wiadomość i pobierając ją z kolejki. Po pobraniu wiadomość nie jest już dostępna w kolejce.
Shared Memory- Komunikację między dwoma lub więcej procesami uzyskuje się poprzez część pamięci współdzielonej przez wszystkie procesy. Pamięć współdzielona musi być chroniona przed sobą poprzez synchronizację dostępu do wszystkich procesów.
Semaphores- Semafory służą do synchronizacji dostępu do wielu procesów. Kiedy jeden proces chce uzyskać dostęp do pamięci (do odczytu lub zapisu), musi zostać zablokowana (lub chroniona) i zwolniona, gdy dostęp zostanie usunięty. Należy to powtórzyć we wszystkich procesach w celu zabezpieczenia danych.
Signals- Sygnał jest mechanizmem komunikacji między wieloma procesami za pomocą sygnalizacji. Oznacza to, że proces źródłowy wyśle sygnał (rozpoznawany przez numer), a proces docelowy odpowiednio go obsłuży.
Note - Prawie wszystkie programy w tym samouczku są oparte na wywołaniach systemowych w systemie operacyjnym Linux (wykonywane w systemie Ubuntu).