Как общая библиотека Libc загружается в память и распределяется между процессами? - PullRequest
5 голосов
/ 21 апреля 2011

Я хочу понять, как разделяемая библиотека Libc загружается в память и распределяется между процессами?Существует ли один экземпляр libc, загруженный в память и совместно используемый всеми процессами, или это каждый экземпляр libc в памяти для каждого процесса.Мне неясно, как libc распределяется между процессами.

Спасибо Aditya

1 Ответ

5 голосов
/ 22 апреля 2011

Один экземпляр libc используется всеми процессами. См. «Внутренняя история об общих библиотеках и динамической загрузке» article:

В частности, поскольку библиотеки в основном состоят из исполняемых инструкций, и этот код, как правило, не является самоизменяющимся, операционная система может организовать размещение кода библиотеки в областях памяти только для чтения, общих для процессов (с использованием совместного использования страниц и других методов виртуальной памяти ). Таким образом, если запущены сотни программ, и каждая из них содержит одну и ту же библиотеку, операционная система может загрузить одну общую копию инструкций библиотеки в физическую память. Это уменьшает использование памяти и повышает производительность системы.

См. Также "Разделение разделяемых библиотек" статья.

...