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

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

Спасибо, Адитья.


person Aditya Mertia    schedule 21.04.2011    source источник


Ответы (1)


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

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

См. также статью "Разделение общих библиотек".

person linuxbuild    schedule 21.04.2011