Доброго времени суток!
Давеча в очередной раз завалил собеседование в Каспера, теперь не дает покоя, да и вообще нужно знать те вещи, которые спрашивали.
Вопросы касались виртуальной памяти в ОС Linux и динамических библиотек. Сформулировано было так:
Устройство виртуальной памяти в целом, что происходит в момент загрузки .so в память, в какой момент и как виртуальный адрес транслируется в физический,
как устроен механизм, связывающий исполняемый файл с библиотекой (что находится в исполняемом файле и каким образом это позволяет вызывать нужные процедуры из библиотеки).
Я вроде бы написал много библиотек, но разобраться с этими вопросами руки не доходили.
Хочется почитать "обязательную" в таких случаях литературу. И еще один вопрос касательно механизма вызова процедуры:
Я представлял его таким образом, что caller сохраняет в стек caller-save регистры, аргументы, делает call, потом calle сохраняет calle-save регистры, и начинает работать (это если не учитывать остальные манипуляции с указателями).
Мне было сказано, что я вообще неправ и так не делается и регистры сохраняются вообще по-другому. Можно и про это хорошую книжку тоже.