Межпроцессное взаимодействие - Обзор

Межпроцессное взаимодействие (IPC) - это механизм, который включает в себя взаимодействие одного процесса с другим процессом. Это обычно происходит только в одной системе.

Общение может быть двух типов -

  • Между связанными процессами, инициируемыми только одним процессом, таким как родительский и дочерний процессы.

  • Между несвязанными процессами или двумя или более различными процессами.

Ниже приведены некоторые важные термины, которые нам необходимо знать, прежде чем продолжить эту тему.

Трубы - связь между двумя взаимосвязанными процессами. Механизм является полудуплексным, что означает, что первый процесс связывается со вторым процессом. Для достижения полного дуплекса, т. Е. Для взаимодействия второго процесса с первым процессом требуется другой канал.

FIFO - Связь между двумя не связанными процессами. FIFO - это полный дуплекс, что означает, что первый процесс может взаимодействовать со вторым процессом и наоборот одновременно.

Очереди сообщений - связь между двумя или более процессами с полной дуплексной пропускной способностью. Процессы будут связываться друг с другом, отправляя сообщение и извлекая его из очереди. Полученное сообщение больше не доступно в очереди.

Общая память - связь между двумя или более процессами достигается через общую часть памяти между всеми процессами. Общая память должна быть защищена друг от друга путем синхронизации доступа ко всем процессам.

Семафоры - семафоры предназначены для синхронизации доступа к нескольким процессам. Когда один процесс хочет получить доступ к памяти (для чтения или записи), он должен быть заблокирован (или защищен) и освобожден при удалении доступа. Это должно быть повторено всеми процессами для защиты данных.

Сигналы - Сигнал - это механизм связи между несколькими процессами посредством сигнализации. Это означает, что исходный процесс отправит сигнал (распознанный по номеру), а целевой процесс обработает его соответствующим образом.

Примечание. Почти все программы в этом руководстве основаны на системных вызовах в операционной системе Linux (выполняется в Ubuntu).