On Mon, Oct 01, 2012 at 09:24:58PM +0400, "Артём Н." wrote: > >> Или в Linux нет чего-то подобного kernel32.dll (т.е. всё только через libc > >> обёртки над системными вызовами, через прерывания, например)? > > Уточните вопрос. > Т.е., libc не "висит" в памяти, а загружается каждый раз заново для каждого > процесса (ну или загружается только часть libc, поскольку библиотека - архив, > а > как оно работает дальше, я не знаю)? > > Т.е., допустим, kernel32.dll всегда был доступен по определённому адресу у > разных винд. Но по фиксированному. Загрузчик знал адрес и при разрешении > импорта > просто подставлял адреса из таблицы экспорта kernel32 + её адрес загрузки > (грубо), насколько я понимаю. Вообще вы тут смешиваете разделение ядро-юзерспейс (иначе к чему про системные вызовы и прерывания) и системные-левые библиотеки. Да, системные библиотеки в Win32 имеют базовые адреса, позволяющие не переписывать ссылки на них, но kernel32.dll тут не отличается ничем от других стандартных библиотек, к тому же это можно делать и со своими библиотеками.
-- WBR, wRAR
signature.asc
Description: Digital signature