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