Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка elf в память, объясните плиз 
:(
    Опции темы
slater
Дата 10.6.2010, 20:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



всем привет!

расскажите плиз как происходит загрузка elf в память(или в какую сторону копать), какой модуль подгружает исполняемый файл в память?

например, если я в bash просто запускаю обычно скомпилированную программу "Hello, world!" - что происходит?

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

спасибо 
PM MAIL   Вверх
MAKCim
Дата 10.6.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



кратко
создается процесс через fork()/vfork(), в новом процессе вызывается execve()
управление передается загрузчику ядра (fs/binfmt_elf.c -> load_elf_binary()), который отображет бинарник и динамический загрузчик (ld.so)
далее управление передается из ядра на entry-точку бинарника или динамического загрузчика
в случае последнего после передачи управления он отображает остальные либы


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
slater
Дата 11.6.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



MAKCim, очередной раз очень благодарен вам за ответ

т.е. в итоге сам исполняемый файл загружается в оперативную память

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

Это сообщение отредактировал(а) slater - 11.6.2010, 17:58
PM MAIL   Вверх
xvr
Дата 11.6.2010, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(slater @  11.6.2010,  17:56 Найти цитируемый пост)
вот, а кто его туда копирует? 
Ядро. И не копирует, а отображает через мэпирования файла в память (a-la mmap)

Цитата(slater @  11.6.2010,  17:56 Найти цитируемый пост)
по какому адресу копируются данные, по какому адресу копируются локальные перенные?
По адресам, указанным в таблице секций (точнее program header) в самом elf файле. Читайте доки по структуре elf файла


PM MAIL   Вверх
EvilsInterrupt
Дата 11.6.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



PM MAIL WWW ICQ Jabber   Вверх
slater
Дата 11.6.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



спасибо вам ребята большое

посоветуйте что еще почитать пожалуйста про это, про то как и куда загружаются блоки исполняемого файла
PM MAIL   Вверх
nanoo
Дата 20.6.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



в спеках elf всё есть.
PM MAIL   Вверх
xvr
Дата 20.6.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



http://www.skyfree.org/linux/references/ELF_Format.pdf
так же рекомендую утилиты objdump и readelf для изучения реальных elf файлов - изучение примеров гораздо эффективнее голого чтения документации

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.