LINUX.ORG.RU
ФорумTalks

Файл формата ELF при запуске загружается сразу весь в оперативную память? Или по секциям в процессе выполнения?

 , , , ,


0

6

Файл формата ELF при запуске загружается сразу весь в оперативную память? Или по секциям в процессе выполнения?

Интересует вопрос в плане запуска программы с сетевого каталога. Программа быстро запуститься? Или перед запуском прежде будет скачан весь двоичный файл?

☆☆☆

Последнее исправление: Klymedy (всего исправлений: 1)

Ответ на: комментарий от smilessss

разделом ошибся

А в какой подобную тему надо?

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Без минимального английского в индустрии разработки ПО делать нечего.

Deleted
()
Ответ на: комментарий от Kaschenko

И этот человек рассуждал о начальниках, менеджерах и зарплатах.

Одно дело понимать простой текст, а другое дело когда в тексте написано о том что ответом не является, тайный смысл читать умею слабо.

ММАП () создает новое отображение в виртуальном адресном пространстве Call-
       ING процесс. Начальный адрес для нового отображения задается в
       АДРЕС. Аргумент длина задает длину преобразования.

       Если адрес NULL, то ядро ​​выбирает адрес для создания
       отображение; это самый портативный способ создания нового Map-
       пинг. Если адрес не NULL, то ядро ​​принимает это как намек о
       где разместить отображение; на Linux, отображение будет создано
       рядом граница страницы. Адрес нового отображения возвращается в
       результат вызова.

       Содержимое файла отображения (в отличие от анонимного отображения; см
       MAP_ANONYMOUS ниже), инициализируются с помощью байта длины, начиная с
       смещение смещение в файле (или другого объекта) называют файлом
       Дескриптор ФО. смещение должно быть кратно размеру страницы, как вернулся
       по sysconf (_SC_PAGE_SIZE).

       Аргумент прот описывает желаемый режим защиты памяти Карта-
       пинг (и не должны вступать в противоречие с режимом открытия файла). Здесь
       либо PROT_NONE или побитовым ИЛИ одного или более из следующих
       Флаги:

Это никак не отвечает на мой вопрос.

При чём здесь смещения и отображения? Меня интересует не как адресное пространство устроено, а как в него двоичные данные загружает ядро при запуске программы.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Harald

почитай исходники ядра, там точно написано это :)

Это слишком на долго, воздержусь.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Отображение тут при том, что это отображение, даже я, не программист, пьяный и с мобильника смог это понять. В случае с либой это будет полное отображение.

Kaschenko
()
Последнее исправление: Kaschenko (всего исправлений: 1)
Ответ на: комментарий от Kaschenko

Отображение тут при том, что это отображение, даже я, не программист, пьяный и с мобильника смог это понять. В случае с либой это будет полное отображение.

Отсыпьте и в мою трубку из своей шкатулки волшебной травы.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Объяснить почему файл грузится целиком я тебе могу за деньги, если ты из мана не понял. А веществами не торгую, извини.

Kaschenko
()
Последнее исправление: Kaschenko (всего исправлений: 1)
Ответ на: комментарий от rezedent12

При чём здесь смещения и отображения? Меня интересует не как адресное пространство устроено, а как в него двоичные данные загружает ядро при запуске программы.

Срочно, 2 главы Таненбаума внутривенно!

Очень грубо говоря, ядро делает mmap исполняемого файла в память. При чтении/записи/исполнении в этой памяти, если требуемый кусок (обычно размером в страницу) ещё не в памяти, то он подгружается из файла.

Собственно, вот: http://lxr.free-electrons.com/source/fs/binfmt_elf.c#L664

Самое интересное начинается отсюда: http://lxr.free-electrons.com/source/fs/binfmt_elf.c#L862

Kosyak ★★★★
()
Последнее исправление: Kosyak (всего исправлений: 1)
Ответ на: комментарий от Kosyak

Я не совсем понял что этот код означает. Спрошу у знакомого.

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

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Процессор не может напрямую исполнять код/адресовать с диска. Весь рукописный код во всех стандартных бинарях находится в одной секции .text. Какой смысл загружать не целеком, чтобы тормозило?

nvidia
()
Ответ на: комментарий от nvidia

Процессор не может напрямую исполнять код/адресовать с диска.

Зависит от диска. Какие-нибудь встраеваемые NAND-чипы вполне могут в exexute-in-place.

hateyoufeel ★★★★★
()
Ответ на: комментарий от nvidia

Какой смысл загружать не целеком, чтобы тормозило?

Ядро Linux соответствует этому смыслу или нет?

rezedent12 ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.