|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Ricky Berejnoy 2:5020/1604.7 15 May 2000 17:46:24 To : All Subject : Hикто не прокомментирует ? --------------------------------------------------------------------------------
http://www.hackzone.ru/articles/lcme.html
Также возможно, что кто-нть станет бросать в меня кирпичи, утверждая,
что статическая линковка де увеличивает необходимые ресурсы, и что якобы
разделяемые библиотеки разделяют сегмент кода между всеми
процессами, использующими их. Я тоже так думал, более того, то же самое
утверждают большинство виденных мною учебников по Unix, но это не так.
Самое простое доказательство - посмотрите атрибуты сегментов памяти,
занимаемых разделяемыми библиотеками (файл maps в файловой системе
/proc). Вы почти никогда не увидите атрибута s(hared). Почему ? Короткий
ответ звучит так - из-за ELF. Дело в том, что при загрузке ELF файла
происходит настройка его перемещаемых адресов - relocations. При этом
сегменту памяти (даже если это сегмент кода) присваиваются атрибуты
Read/Write, и если он при этом разделялся несколькими процессами,
происходит копирование памяти при записи. Таким образом, разделение
сегментов кода между процессами возможно только между родителем и
его потомками (как результат функции fork). За подробностями обращайтесь
к исходникам kernalа. Кстати, эти же аргументы применимы и к
утверждению, что якобы "упаковка кода программы приводит к увеличению
ресурсов, необходимых для запуска такой программы". Как видите,
господа-слюниксоиды, как минимум в управлении виртуальной памятью
Linux ничем не лучше поделок от M$
> Ricky
--- Ricky's Psychedelic Space
* Origin: It must have /bin/love (2:5020/1604.7)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/392339204771.html, оценка из 5, голосов 10
|