Межпроцессное взаимодействие (IPC)

Процессам часто бывает необходимо взаимодействовать между собой.
Например, в конвейере ядра выходные данные первого процесса должны передаваться второму процессы и т.д. по цепочке. Поэтому необходимо правильно организовать взаимодействие между процессами, по возможности не используя прерываний. Рассмотрим некоторые аспекты межпроцессного взаимодействия (IPC, interprocess communication).

Проблема разбивается на три пункта=

  1. Первый мы уже упомянули: передача информации от одного процесса другому.
  2. Второй связан с контролем над деятельностью процессов: как гарантировать, что два процесса не пересекутся в критических ситуациях (например, оба процесса пытаются завладеть последним мегабайтом памяти).
  3. Третий касается согласования действий процессов: если процесс А должен поставлять данные, а процесс В выводить их на экран, то процесс В должен подождать и не начинать печатать, пока не поступят данные от процесса А.

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