LINUX.ORG.RU

so библиотеки и загрузка в реальную память

 ,


2

1

Пытаюсь прояснить для себя работу динамических библиотек.
Сейчас мучаюсь над результатами следующего мысленного эксперемента.

Стартует приложение, слинкованное с so-библиотеками общим объемом 2 Гб. На машине есть хардварно 512 Мб ОЗУ и бесконечно большой swap (но он нам в конкретно этой задаче все равно не понадобится).

Код и const-данные из библиотек могут быть практически моментально выдавленны из физической ОЗУ в «swap». Т.к. они уже и так есть на диске в so-файлах, на самом деле в swap они помещаться не будут, страницы физической ОЗУ просто будут помечанны как свободные, а при необходимости код и данные из so-файла буду снова загружены в физическое ОЗУ. (или я тут где-то ошибаюсь?)

А теперь внимание, вопрос:
ОС (пусть для конкретики это будет linux) будет прогонять все эти код/данные через физическое ОЗУ -> «swap» или просто определит для себя, в каких страницах виртуальной памяти будет находится тот или иной код/данные и загрузит его в физическое ОЗУ при необходимости что-либо с этими код/даннные сделать?

В идеале ответ можно подкрепить ссылками на документацию или код загрузчика динамических библиотек.

★★★★★

ОС (пусть для конкретики это будет linux) будет прогонять все эти код/данные через физическое ОЗУ -> «swap»

Нет. Любая ОС с on-demand paging так не делает (если это нет NT с флагом RUN_FROM_SWAP).

или просто определит для себя, в каких страницах виртуальной памяти будет находится тот или иной код/данные и загрузит его в физическое ОЗУ при необходимости что-либо с этими код/даннные сделать?

Да.

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

или просто определит для себя, в каких страницах виртуальной памяти будет находится тот или иной код/данные и загрузит его в физическое ОЗУ при необходимости что-либо с этими код/даннные сделать?

Да.

В идеале ответ можно подкрепить ссылками на документацию или код загрузчика динамических библиотек.

После прочтение Э.Танненбаума у меня в голове тоже возникла верная картинка, но хотелось бы весомых и локаничных пруфов для демонстрации их оппонентам.

trex6 ★★★★★
() автор топика
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от trex6

Фраза «demand loading» из README ядра подойдет? :) Если нет, то только курение исходников динамического линковщика - там везде mmap.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.