Пытаюсь прояснить для себя работу динамических библиотек.
Сейчас мучаюсь над результатами следующего мысленного эксперемента.
Стартует приложение, слинкованное с so-библиотеками общим объемом 2 Гб. На машине есть хардварно 512 Мб ОЗУ и бесконечно большой swap (но он нам в конкретно этой задаче все равно не понадобится).
Код и const-данные из библиотек могут быть практически моментально выдавленны из физической ОЗУ в «swap». Т.к. они уже и так есть на диске в so-файлах, на самом деле в swap они помещаться не будут, страницы физической ОЗУ просто будут помечанны как свободные, а при необходимости код и данные из so-файла буду снова загружены в физическое ОЗУ. (или я тут где-то ошибаюсь?)
А теперь внимание, вопрос:
ОС (пусть для конкретики это будет linux) будет прогонять все эти код/данные через физическое ОЗУ -> «swap» или просто определит для себя, в каких страницах виртуальной памяти будет находится тот или иной код/данные и загрузит его в физическое ОЗУ при необходимости что-либо с этими код/даннные сделать?
В идеале ответ можно подкрепить ссылками на документацию или код загрузчика динамических библиотек.