Операционная система UNIX. Руководство программиста




Как разделяемые библиотеки экономят память? - часть 2


На рисунке ниже изображена структура выполняемых файлов, полученных с использованием обычной (архивной) и разделяемой библиотек языка C. Исходный текст программы выглядит так:

main () { . . . printf ("Как Вам нравится эта глава?\n"); . . . result = strcmp ("Весьма!", answer); . . . }

Обратите внимание, что версия с разделяемой библиотекой меньше. На следующем рисунке будет изображена структура памяти, занимаемой соответствующими процессами в ходе выполнения.

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




Содержание  Назад  Вперед