~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ BA5369BDD65DA7C1933FF9CFAB25FF20__1714527060 ✰
Заголовок документа оригинал.:
✰ Loader (computing) - Wikipedia ✰
Заголовок документа перевод.:
✰ Загрузчик (вычислительный) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Load_time ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ba/20/ba5369bdd65da7c1933ff9cfab25ff20.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ba/20/ba5369bdd65da7c1933ff9cfab25ff20__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 12:44:38 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 1 May 2024, at 04:31 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Загрузчик (вычислительный) — Википедия Jump to content

Загрузчик (вычислительный)

Из Википедии, бесплатной энциклопедии
(Перенаправлено с Время загрузки )

В компьютерных системах загрузчик , — часть операционной системы отвечающая за загрузку программ и библиотек . Это один из важнейших этапов процесса запуска программы, поскольку он помещает программы в память и подготавливает их к выполнению. Загрузка программы включает в себя либо отображение памяти , либо копирование содержимого исполняемого файла , содержащего инструкции программы, в память, а затем выполнение других необходимых подготовительных задач для подготовки исполняемого файла к запуску. После завершения загрузки операционная система запускает программу, передавая управление загруженному программному коду.

Все операционные системы, поддерживающие загрузку программ, имеют загрузчики, за исключением узкоспециализированных компьютерных систем, которые имеют только фиксированный набор специализированных программ. Встроенные системы обычно не имеют загрузчиков, вместо этого код выполняется непосредственно из ПЗУ или чего-то подобного. Для загрузки самой операционной системы в рамках загрузки специализированный загрузчик используется . Во многих операционных системах загрузчик постоянно находится в памяти, хотя некоторые операционные системы, поддерживающие виртуальную память , могут разрешать размещение загрузчика в области памяти, доступной для страниц .

В случае операционных систем, поддерживающих виртуальную память, загрузчик может фактически не копировать содержимое исполняемых файлов в память, а может просто объявить подсистеме виртуальной памяти, что существует сопоставление между областью памяти, выделенной для содержания выполняемых операций. код программы и содержимое связанного исполняемого файла. (См. файл, отображаемый в памяти .) Затем подсистема виртуальной памяти информируется о том, что страницы с этой областью памяти должны быть заполнены по требованию, если и когда выполнение программы действительно попадает в эти области незаполненной памяти. Это может означать, что части программного кода фактически не копируются в память до тех пор, пока они не будут фактически использованы, а неиспользуемый код вообще никогда не будет загружен в память.

Обязанности [ править ]

В Unix загрузчик является обработчиком системного вызова. execve(). [1] В задачи загрузчика Unix входят:

  1. проверка (разрешения, требования к памяти и т. д.);
  2. отображение памяти исполняемого объекта с диска в основную память ;
  3. копирование аргументов командной строки в виртуальную память;
  4. инициализация регистров (например, указателя стека);
  5. переход к точке входа в программу ( _start).

В Microsoft Windows 7 и более поздних версиях загрузчиком является LdrInitializeThunk функция, содержащаяся в ntdll.dll , которая делает следующее:

  1. инициализация структур в самой DLL (т.е. критических секций , списков модулей);
  2. проверка исполняемого файла для загрузки;
  3. создание кучи ( через функцию RtlCreateHeap);
  4. выделение блока переменных среды и блока PATH;
  5. добавление исполняемого файла и NTDLL в список модулей ( двусвязный список );
  6. загрузка KERNEL32.DLL для получения нескольких важных функций, например BaseThreadInitThunk;
  7. загрузка импорта исполняемого файла (т.е. динамической библиотеки ) рекурсивно (проверьте импорт импорта, его импорт и т.д.);
  8. в режиме отладки подъем точки останова системы;
  9. инициализация DLL;
  10. вывоз мусора;
  11. звоню NtContinue в параметре контекста, переданном функции загрузчика (т.е. переход к RtlUserThreadStart, это запустит исполняемый файл)

Перенос погрузчиков [ править ]

Некоторым операционным системам требуется перемещение загрузчиков , которые корректируют адреса (указатели) в исполняемом файле, чтобы компенсировать изменения адреса, с которого начинается загрузка. программы Операционные системы, в которых требуется перемещение загрузчиков, — это те, в которых программа не всегда загружается в одно и то же место в (виртуальном) адресном пространстве и в которых указатели представляют собой абсолютные адреса, а не смещения от базового адреса . Некоторыми хорошо известными примерами являются OS/360 от IBM для мэйнфреймов System/360 и ее потомки, включая z/OS для мэйнфреймов z/Architecture .

OS/360 и производные [ править ]

В OS/360 и дочерних системах (привилегированная) возможность операционной системы называется IEWFETCH. [2] и является внутренним компонентом OS Supervisor, тогда как (непривилегированное) приложение LOADER может выполнять многие из тех же функций, а также функции редактора связей, и является полностью внешним по отношению к OS Supervisor (хотя оно, безусловно, использует многие службы Supervisor). ).

IEWFETCH использует узкоспециализированные канальные программы , и теоретически возможно загрузить и переместить весь исполняемый файл за один оборот носителя DASD (максимум около 16,6 мс, в среднем 8,3 мс на «устаревших» дисках со скоростью 3600 об/мин). Для загрузочных модулей, размер которых превышает дорожку, также можно загрузить и переместить весь модуль без потери оборота носителя.

IEWFETCH также включает средства для так называемых оверлейных структур, которые облегчают запуск потенциально очень больших исполняемых файлов в минимальной модели памяти (всего 44 КБ в некоторых версиях ОС, но чаще встречаются 88 КБ и 128 КБ).

ОС Ядро (постоянно резидентная часть Supervisor) само по себе отформатировано таким образом, чтобы оно было совместимо с урезанной версией IEWFETCH. В отличие от обычных исполняемых файлов, ядро ​​ОС «загружается разбросом»: части ядра загружаются в разные части памяти; в частности, некоторые системные таблицы должны занимать размер ниже первоначальных 64 КБ, тогда как другие таблицы и код могут располагаться в другом месте.

Системное приложение Linkage Editor называется IEWL. [3] Основная функция IEWL — связывать загрузочные модули (исполняемые программы) и объектные модули (выходные данные, скажем, ассемблеров и компиляторов), включая «автоматические вызовы» библиотек (встроенные функции языка высокого уровня) в формат. который может быть наиболее эффективно загружен с помощью IEWFETCH. Существует большое количество опций редактирования, но в обычном приложении обычно используются лишь некоторые из них.

Формат модуля загрузки включает в себя начальную «текстовую запись», за которой сразу следует «запись перемещения и/или управляющая запись» для этой текстовой записи, за которой следуют дополнительные экземпляры парных текстовых записей и записей перемещения и/или управляющих записей до конца модуль.

Текстовые записи обычно очень большие; записи перемещения и/или управления малы, поскольку три буфера записей перемещения и/или управления IEWFETCH имеют фиксированный размер в 260 байт (конечно, возможны меньшие записи перемещения и/или управления, но 260 байтов являются максимально возможными, и IEWL гарантирует, что это ограничение соблюдается путем вставки дополнительных записей о перемещении, при необходимости, перед следующей текстовой записью, при необходимости в этом особом случае последовательность записей может быть следующей: ..., текстовая запись, запись о перемещении, ..., контрольная запись; , текстовая запись, ...).

Специальный байт в буфере записи перемещения и/или управления используется как область связи «запрещенного вращения битов» и инициализируется уникальным значением. При чтении CCW для этой записи перемещения и/или управления установлен бит прерывания, управляемого программой. Таким образом, процессор уведомляется, когда канал получает доступ к CCW через специальный IOS выход . В этот момент процессор входит в цикл «запрещенного вращения битов» (иногда называемый «самым коротким циклом в мире»). Как только этот байт изменяется по сравнению со своим инициализированным значением, ЦП выходит из цикла вращения битов, и происходит перемещение во время «промежутка» внутри носителя между записью перемещения и/или управления и следующей текстовой записью. Если перемещение завершено до следующей записи, NOP CCW после чтения будет изменен на TIC, а загрузка и перемещение продолжатся с использованием следующего буфера; если нет, то канал остановится на NOP CCW, пока он не будет перезапущен IEWFETCH через другой специальный выход IOS. Три буфера находятся в непрерывной циклической очереди, каждый из которых указывает на следующий, а последний — на первый, и три буфера постоянно используются повторно по мере загрузки и перемещения.

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

Динамические компоновщики [ править ]

Загрузчики с динамическим связыванием — это еще один тип загрузчиков, которые загружают и связывают общие библиотеки (например, файлы .so , файлы .dll или файлы .dylib) с уже загруженными запущенными программами.

Если такие общие библиотеки могут совместно использоваться несколькими процессами, причем только одна копия общего кода может появляться по другому (виртуальному) адресу в адресном пространстве каждого процесса, код в общей библиотеке должен быть перемещаемым, т. е. библиотека должны использовать только внутренние адреса относительно себя или сегмента кода. Некоторые процессоры имеют инструкции, которые могут использовать для облегчения этого относительные ссылки на код.

См. также [ править ]

Ссылки [ править ]

  1. ^ "исполнительный" . Базовые спецификации открытой группы, выпуск 6, IEEE Std 1003.1, издание 2004 г. Открытая группа . Проверено 23 июня 2008 г.
  2. ^ Корпорация IBM (1972). IBM OS MVT Supervisor (PDF) .
  3. ^ Корпорация IBM (1972). Редактор и загрузчик IBM OS Linkage (PDF) .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: BA5369BDD65DA7C1933FF9CFAB25FF20__1714527060
URL1:https://en.wikipedia.org/wiki/Load_time
Заголовок, (Title) документа по адресу, URL1:
Loader (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)