LINUX.ORG.RU

Загрузчик ELFов


0

0

Рассмотрим такую ситуацию. Запускаю я какую-нибудь прогу, скажем xterm. Система пару секунд крутит винт, подгружая библиотеки, потом программа запускается. Если сейчас запустить еще один xterm, то обращения к винту не будет, т.к. нужные файлы залезли в кэш. Теперь я запускаю другую программу, которая выделяет себе много-много памяти (так, что свободной почти не остается) и дохнет. От этого файловый кэш идет лесом. Если я теперь запущу xterm, то опять винт покрутится те же пару секунд. Спрашивается, какого? Ведь один xterm уже запущен, значит все нужные библиотеки загружены в память. Какого фигу тогда загрузчик тормозит?

anonymous
Ответ на: комментарий от jr_A

> Слово swap знакомо?

Это же произойдет и без swap'a - иногда лучше жевать.

birdie ★★★★★
()
Ответ на: комментарий от birdie

Хорошо. Допустим, кто xterm - неудачный пример. Возьмем вместо него простую программу на wxWidgets. Вставим в начало код типа такого:

int foo () {

printf("Working\n");

return 0;

}

int x = foo();

После запуска до появления на экране надписи проходит одна секунда. Однако в описанном эксперименте результаты те же. Более того, если перед вторым запуском выполнить такую команду:

sum /usr/lib/*.so* /usr/local/lib/*.so* /opt/gnome/lib/*.so*

то надпись появляется мгновенно. Это доказывает, что обращение к диску идет только по поводу библиотек. Так что загрузчик все-таки тормозит.

Да, все это действительно делается при отключенном свопе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.