Идея состоит в том, чтобы разделить сегмент в одном и том же виртуальном адресе в разных процессах, чтобы они могли использовать простые указатели (а не смещения) для адресации элементов в общей памяти. Общий сценарий для одного «главного» процесса - сопоставить память по предоставленному ядром адресу (второй аргумент ноль), а затем передать этот адрес «рабочим» процессам через некоторый внеполосный канал (например, аргумент команды с помощью fork / exec, сокета UNIX, FIFO и т. д.), а затем «рабочие» пытаются сопоставить сегмент по этому адресу. Опять же, идея заключается в том, что, если ядро могло отображать совместно используемую память на данном виртуальном устройстве для «главного», тот же адрес должен подойти для «рабочих» процессов.
У меня нет «разумного» примера для указания. Вы можете посмотреть, как Postgres работает с общей памятью. Хотя это немного запутанно.