Переменные не распределяются между программами, никогда. (Хотя специально выделенная разделяемая память может использоваться совместно, это «объект», а не «переменная» в терминологии C.) Вы смущены тем, что на диске поддержка - это то, что совместно используется процессы, и это то же самое, будь то основная программа (статическая или динамическая связь) или файл общей библиотеки. Реализация виртуальной памяти операционной системы заботится об использовании одной и той же страницы физической памяти для нескольких процессов, когда содержимое не отличается от содержимого на диске, и создании физических дубликатов страниц во время выполнения, если они записаны. Все это прозрачно для вашего приложения, которое видит линейное 32- или 64-битное адресное пространство, состоящее только из собственного кода и данных.
На практике система динамической компоновки выполняет ряд оптимизаций хранилища, которые изолируют данные, которые будут изменены для каждого процесса, до нескольких страниц, что позволяет разделить подавляющее большинство страниц между процессами, использующими один и тот же исполняемый файл или одни и те же библиотеки.