Куда загружаются глобальные переменные файла динамической библиотеки? - PullRequest
0 голосов
/ 22 сентября 2019

В идеале каждая разделяемая библиотека загружается в физическую память только один раз для экономии памяти.Но объединены ли раздел данных и раздел bss в файле so с данными исполняемого файла во время компиляции?Или весь кадр, содержащий раздел данных и раздел bss, подлежит копированию при записи каждый раз, когда пользовательская программа изменяет значение?

1 Ответ

0 голосов
/ 22 сентября 2019

Ответ не делает ничего такого, когда глобальные переменные лежат в общей библиотеке по сравнению с основной программой;оба разделены точно так же.Они являются записываемой MAP_PRIVATE картой образа программы на диске (или MAP_ANON страниц для bss), которые обычно реализуются как ссылки «копировать при записи» (COW) на соответствующую страницу файла (или универсальный ноль).страница для bss).

...