В системах на основе Unix (включая Linux) сегмент кода (.text) может совместно использоваться несколькими процессами, поскольку он неизменен.Вы упомянули это перекрытие?
По сути, каждая общая библиотека, которая содержит статические данные (например, глобальные переменные), имеет глобальную таблицу смещений (GOT) .В разделяемых библиотеках все ссылки на статические данные (например, глобальные переменные) происходят через GOT (они косвенные).Таким образом, даже если сегмент кода совместно используется несколькими процессами, каждый процесс имеет свое исключительное отображение других сегментов совместно используемой библиотеки, включая соответствующий GOT, чьи записи перемещаются соответствующим образом.
Короче, только код распределяется между процессами, а не данными .Однако я думаю, что константы могут быть исключением в зависимости от флагов компиляции.
Я также рекомендую главу 10, Динамическое связывание и загрузка , из следующей книги: Компоновщики и загрузчики .