Одновременно обрабатываемые операционной системой пользовательские процессы должны иметь возможность коммуникации друг с другом. Такая коммуникация реализуется в операционных системах двумя способами – с помощью общей памяти и с помощью передачи сообщений. Обе схемы коммуникации процессов изображены на рис. 6.4.
Рис. 6.4. Коммуникация процессов с помощью передачи сообщений и с помощью общей области памяти.
При первом способе, процесс A для передачи сообщения M процессу B выполняет системный вызов - например, send (B, M),- т.е. фактически передает это сообщение ядру ОС. Процесс B, в свою очередь, выполняет системный вызов для получения сообщения – например, M = receive (B)– т.е. фактически получает сообщение M от ядра ОС, подобно какому-либо ресурсу системы.
При втором способе, оба процесса взаимодействуют через общую область памяти, адрес которой известен им обоим. Такой способ может оказаться более быстрым, но необходимо учесть, что в данном случае процессы должны позаботиться о синхронизации(см. "Архитектура ОС. Управление процессами: Основные понятия. Семафоры и мониторы "), так как общая область памяти – это общий ресурс, при обращении к которому может возникнуть race condition.