![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
slater |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
всем привет!
расскажите плиз как происходит загрузка elf в память(или в какую сторону копать), какой модуль подгружает исполняемый файл в память? например, если я в bash просто запускаю обычно скомпилированную программу "Hello, world!" - что происходит? может быть некорректно поставлен вопрос, прошу прощения, заранее блангодарен за любую помощь спасибо |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
кратко
создается процесс через fork()/vfork(), в новом процессе вызывается execve() управление передается загрузчику ядра (fs/binfmt_elf.c -> load_elf_binary()), который отображет бинарник и динамический загрузчик (ld.so) далее управление передается из ядра на entry-точку бинарника или динамического загрузчика в случае последнего после передачи управления он отображает остальные либы -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
slater |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
MAKCim, очередной раз очень благодарен вам за ответ
т.е. в итоге сам исполняемый файл загружается в оперативную память вот, а кто его туда копирует? и где можно хорошо и более глубоко прочесть по какому адресу копируются данные, по какому адресу копируются локальные перенные и т.д. т.е. те различные области кода и данных, которые расписаны в заголовке самого исполняемого файла в формате elf? может посоветуете литературу где про это расписано? желательно на английском Это сообщение отредактировал(а) slater - 11.6.2010, 17:58 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Ядро. И не копирует, а отображает через мэпирования файла в память (a-la mmap)
|
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: нет Всего: 9 |
||||
|
||||
slater |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 20.11.2009 Репутация: -2 Всего: -4 |
спасибо вам ребята большое
посоветуйте что еще почитать пожалуйста про это, про то как и куда загружаются блоки исполняемого файла |
|||
|
||||
nanoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2007 Репутация: нет Всего: нет |
в спеках elf всё есть.
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
http://www.skyfree.org/linux/references/ELF_Format.pdf
так же рекомендую утилиты objdump и readelf для изучения реальных elf файлов - изучение примеров гораздо эффективнее голого чтения документации |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |