Загружаются ли общие объекты отдельно для каждого процесса или один общий объект является общим для них? Например, предположим, что какая-то программа использует libc.so. Затем запускаются два процесса этой программы. Будет ли этот общий объект загружаться ДВА раза для каждого процесса в их области памяти ИЛИ он будет загружаться где-то в памяти ОДИН РАЗ и отображаться в памяти двух процессов?
Совместное использование общего объекта между несколькими процессами
comment
Общие объекты называются общими не просто так.
- person n. 1.8e9-where's-my-share m.   schedule 23.07.2012
Ответы (2)
Общие объекты загружаются через mmap()
с флагом MAP_PRIVATE
. Это означает, что это сопоставления копирования при записи, они изначально указывают на одну и ту же память, но как только любое из них изменяется, оно копируется и «не используется совместно» перед модификацией.
person
ninjalj
schedule
23.07.2012
Проверьте этот поток. Теоретически каждый процесс имеет собственное адресное пространство, и для этой цели должны использоваться потоки, но это вопрос реализации системы.
person
Dominik G
schedule
23.07.2012