Сборка в момент загрузки

Оъектные модули и библиотеки содержат довольно инфы, чтоб собирать программку не только лишь заблаговременно, да и конкретно в момент загрузки. Этот метод, непременно, просит огромных издержек процессорного времени, чем загрузка заблаговременно собранного кода, но дает и некие достоинства.

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

Некие системы команд поддерживают динамически пересобираемые программки, у Сборка в момент загрузки каких вся настройка модуля вынесена в отдельную таблицу. В данном случае модуль может быть подключен сразу к нескольким программкам, использовать сразу различные копии сектора данных, и любая применяемая копия модуля при всем этом даже не будет подозревать о существовании других. Примером таковой архитектуры является Pascal- система Lilith, разработанная Н Сборка в момент загрузки.Виртом.

Сборка при загрузке замедляет процесс загрузки программки но упрощает, с одной стороны, разделение кода, а с другой стороны – разработку программ. Вправду, из традиционного цикла внесения конфигурации в программку: редактирование текста – перекомпиляция – пересборка – перезагрузка (программки, не непременно всей системы) выпадает целая фаза. В случае большой программки это может быть долгая Сборка в момент загрузки фаза. В случае Novell Netware решающим оказывается 1-ое преимущество, в случае систем реального времени идиентично важны оба.

В большинстве современных ОС, в реальности, сборка в момент загрузки происходит не из объектных модулей, а из за ранее собранных разделяемых библиотек. Такие библиотеки отличаются от обсуждавшихся, во-1-х, тем, что Сборка в момент загрузки из их нереально извлечь отдельный модуль: все межмодульные ссылки снутри таковой библиотеки разрешены, и ее нужно всегда загружать как целое; и, во-2-х, тем, что перечень знаков, экспортируемых таковой библиотекой, не является объединением списков экспорта составляющих ее объектных модулей. При сборке таковой библиотеки нужно указать, какие из знаков будут экспортироваться.

Динамические библиотеки

В Сборка в момент загрузки Windows и OS/2 употребляется конкретно таковой метод загрузки. Исполняемый модуль в этих системах содержит ссылки на другие модули, именуемые DLL (Dynamically Loadable Library, динамически загружаемая библиотека). Практически, каждый модуль в этих системах должен содержать хотя бы одну ссылку на DLL, так как интерфейс к системным вызовам в Сборка в момент загрузки этих ОС также peaлизован в виде DLL.

DLL представляют собой библиотеки в том смысле, что обычно они собираются из нескольких объектных модулей. Но, в отличие от архивных библиотек, из DLL нельзя извлечь отдельный модуль, при присоединении библиотеки к программке она присоединяется и загружается полностью.

Главное достоинство DLL заключается в том Сборка в момент загрузки, что модуль (как основной, так и библиотечный), по собственному желанию, может выбирать разные библиотеки, подгружая их уже после собственной своей загрузки. При всем этом нет даже серьезного ограничения на сопоставимость этих библиотек по вызовам (две библиотеки совместимы по вызовам, если они имеют однообразные точки входа с схожей семантикой): загрузчик предоставляет Сборка в момент загрузки возможность просмотреть перечень глобальных знаков, определенных в библиотеке, и получить указатель на каждый знак, обратившись к нему по имени.

В особенности комфортна возможность вызывать всякую функцию по имени при воззвании к наружным модулям из интерпретируемых языков.

Концепция разделяемых DLL более естественна в системах, где все задачки употребляют Сборка в момент загрузки единое адресное место – но при всем этом ошибка в хоть какой из программ может привести к порче данных либо кода другой задачки. Стандартный же метод борьбы с этой неувязкой — выделение каждому процессу собственного адресного места – существенно усложняет разделение кода. Другая неувязка, обусловленная широким внедрением разделяемого кода, состоит в слежении за версией Сборка в момент загрузки этого кода. Вправду, представим для себя актуальную ситуацию: в системе сразу загружены 30 программ, использующие библиотеку LIBC.DLL. При всем этом 10 из их разрабатывались и тестировались с версией 1.0 этой библиотеки, 5 – с версией 1.5 и пятнадцать – с версией 1.5а. Понятно, что рассчитывать на устойчивую работу всех 30 программ можно только при условии, что Сборка в момент загрузки все три версии библиотеки на сто процентов совместимы снизу ввысь не только лишь по набору вызовов и их характеристик, да и по четкой семантике каждого из этих вызовов. Последнее требование время от времени определяют как bug-for-bug compatibility (полная сопоставимость не только лишь по спецификациям, да и по Сборка в момент загрузки отклонениям от их).

Загрузка самой ОС

При загрузке самой ОС появляется специфичная неувязка: в пустой машине, вероятнее всего, нет программки, которая могла бы это сделать.

В системах, в каких программка находится в ПЗУ (либо другой энергонезависимой памяти) этой задачи не существует: при включении питания программка в памяти уже Сборка в момент загрузки есть и сходу начинает исполняться. При включении питания либо аппаратном сбросе микропроцессор исполняет команду, находящуюся по определенному адресу, к примеру, OxFFFFFFFA. Если там находится ПЗУ, а в нем записана программка, она и начинает исполняться.

При разработке программ для встраиваемых приложений нередко употребляются внутрисхемные имитаторы ПЗУ, доступные мотивированной системе как ПЗУ Сборка в момент загрузки, а системе разработчика – как ОЗУ либо особое наружное устройство.

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

На многих системах в ПЗУ бывает прошито нечто большее, чем первичный загрузчик. Это может быть целая контрольно-диагностическая система, именуемая консольным монитором. Таковой Сборка в момент загрузки монитор позволяет вам просматривать содержимое памяти по данному адресу, записывать туда данные, запускать какую-то область памяти как программку и почти все другое. Он же позволяет выбирать устройство, с которого будет выполняться предстоящая загрузка.


sbornik-normativno-pravovih-dokumentov-dlya-studentov-magistraturi-obuchayushihsya-ponapravleniyu-120700-zemleustrojstvo-i-kadastri-moskva-izdatelstvo-miigaik2013-stranica-10.html
sbornik-normativno-pravovih-dokumentov-dlya-studentov-magistraturi-obuchayushihsya-ponapravleniyu-120700-zemleustrojstvo-i-kadastri-moskva-izdatelstvo-miigaik2013-stranica-32.html
sbornik-pedagogicheskih-idej-2013.html