LINUX.ORG.RU

Как размещаются библиотеки в памяти?


0

0

Допустим, есть некоторая динамическая библиотека и есть две разные проги, которые используют эту библиотеку. Вопрос, запустилась первая прога, соответственно и функции из библиотека должны подгрузиться в память; запустилась вторая прога, и вот что тут происходит? для второй проги подгружаются функции в ее память или используются уже подгруженные функции? Тут даже больше нужен не ответ, а ссылки на документацию по данному вопросу, есть пробелы в знаниях, которые нужно заполнить.

anonymous

Подгружается в память к памяти прог не подргужается, обе проги могут использовать одни ите же функции в одной области памяти. Какая еще документация?

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

В общем нужно описание, каким образом в линукс работают динамические библиотеки, как они размещаются в памяти, где, в юзер-спейсе или в кернел-спейсе (или как кернел разреливает работу с либами), как лучше реализовывать эти библиотеки, чтоб в многозадачных приложениях не потерлись данные. Поясню суть вопроса на примере. Допустим, вот висит где-то в памяти прога и какая-то либа, используемая этой прогой. Процессор выполняет командочки и натыкается на вызов некоторой функции в нашей либе. Что тут происходит, процессор определяет адрес нужной функции в либе и начинает выполнять команды с данного адреса или копирует команды с данного адреса в память нашей проги, которая вызвала функцию, и выполняет подгруженные команды и после их выполнения опять переходит к выполнению команд проги. Дальше, внутри функций либы могут инициироваться какие-то внутренние переменные (куча), каким образом эти переменные не затираются в многозадачных приложения на SMP=системах? Может, я не совсем верно описываю работу процессора, но думаю суть понятна. Я так понимаю, тут нужно смотреть в сторону защищенного режима работа процессора и ассемблера в целом?

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

и еще вопрос, можно ли загрузить либу в память, просто саму по себе, чтоб, когда запустятся проги, использующие эту либу, она уже была в памяти?

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

> и еще вопрос, можно ли загрузить либу в память, просто саму по себе, чтоб, когда запустятся проги, использующие эту либу, она уже была в памяти?

man readahead

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

Вернее это не совсем для библиотек а для любых файлов. Специально для библиотек можно написать прогу, динамически слинкованую с ней, которая будет просто висеть в памяти и ничего не делать. Так всякие quickstarter-ы (типа опенофисовского) работают.

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