Что такое начальная загрузка? - PullRequest
594 голосов
/ 10 августа 2009

Я продолжаю видеть "начальную загрузку", упомянутую в обсуждениях разработки приложений.Это кажется широко распространенным и важным, но мне еще не приходилось сталкиваться даже с плохим объяснением того, что собой представляет самозагрузка;скорее кажется, что все просто должны знать, что это значит.Я не, хотя.Насколько я понимаю, это как-то связано с задачами инициализации, которые требуются приложению при запуске, но я могу быть совершенно неправ в этом.Может ли кто-нибудь помочь мне понять эту идею?

Ответы [ 13 ]

291 голосов
/ 10 августа 2009

«Самозагрузка» происходит от термина «подтяни себя своими собственными самозагрузками». Сколько вы можете получить из Википедии .

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

«Начальная загрузка» также используется в качестве термина для построения системы, использующей себя - или, вернее, версию предшественника. Например, ANTLR версия 3 написана с использованием синтаксического анализатора, разработанного в ANTLR версии 2.

227 голосов
/ 10 августа 2009

Пример начальной загрузки есть в некоторых веб-фреймворках. Вы вызываете index.php (загрузчик), а затем он загружает вспомогательные средства, модели, конфигурацию, а затем загружает контроллер и передает ему управление.

Как видите, это простой файл, который запускает большой процесс.

51 голосов
/ 10 августа 2009

См. Статью в Википедии о начальной загрузке .

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

Вот некоторые цитаты, но для более глубокого объяснения и альтернативных значений обратитесь к ссылкам выше.

«... это метод, с помощью которого простая компьютерная программа активирует более сложную систему программ».

"Другое использование термина начальной загрузки состоит в том, чтобы использовать компилятор для компиляции, сначала написав небольшую часть компилятора нового языка программирования на существующем языке, чтобы скомпилировать больше программ нового компилятора, написанных на новом языке. язык. "

31 голосов
/ 18 декабря 2017

Термин «самозагрузка» обычно применяется к ситуации, когда система зависит от самого себя при запуске, что-то вроде проблемы с курицей и яйцом.

Например:

  • Как вы компилируете компилятор C, написанный на C?
  • Как запустить процесс инициализации ОС, если у вас еще не запущена ОС?
  • Как запустить распределенную (одноранговую) систему, где клиенты зависят от своих в настоящее время известных одноранговых узлов, чтобы узнать о новых одноранговых узлах в системе?

В этом случае начальная загрузка относится к способу разрушения циклической зависимости, обычно с помощью внешней сущности, например

  • Вы можете использовать другой компилятор C для компиляции (начальной загрузки) вашего собственного компилятора, а затем вы можете использовать его для перекомпиляции самого себя
  • Вы используете отдельный фрагмент кода, который устанавливает начальный процесс, не завися от каких-либо функций, предоставляемых ОС
  • Вы используете жестко закодированный список начальных пиров или жестко запрограммированный URL-адрес трекера, который предоставляет список пиров

и т.д.

22 голосов
/ 10 августа 2009

В контексте разработки приложений «самозагрузка» обычно возникает, когда речь идет о модульном и / или автоматически обновляемом программном обеспечении.

Вместо того, чтобы загружать все приложение целиком, включая ненужные ему функции, а также повторно загружать и обновлять его вручную всякий раз, когда происходит обновление, пользователь загружает и запускает только небольшой исполняемый файл «начальной загрузки», который, в свою очередь, загружает его. и устанавливает те части приложения, которые нужны пользователю. Кроме того, компонент начальной загрузки может искать обновления и устанавливать их при каждом запуске.

14 голосов
/ 10 августа 2009

Алекс, это почти то, что делает твой компьютер при загрузке. («Загрузка» компьютера происходит от слова «начальной загрузки»)

Сначала запускается небольшая программа в вашем BIOS. В нем достаточно машинного кода для загрузки и запуска более крупной и сложной программы.

Эта вторая программа, вероятно, похожа на NTLDR (в Windows) или LILO (в Linux), которая затем запускается и может загрузить, а затем запустить остальную часть операционной системы.

14 голосов
/ 10 августа 2009

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

4 голосов
/ 08 сентября 2015

Загрузка словаря означает запуск с минимальными ресурсами.В контексте ОС ОС должна быть способна быстро загружаться после того, как самотестирование при включении питания (POST) определит, что безопасно разбудить процессор.Код загрузочного ремешка будет запущен из BIOS.BIOS - это небольшой размер ПЗУ.Обычно это инструкция перехода к набору инструкций, которая загружает операционную систему в ОЗУ.Пункт назначения перехода - это загрузочный сектор на жестком диске.После того, как программа bios проверит, это допустимый загрузочный сектор, который содержит начальный адрес сохраненной ОС, т. Е. Является ли это действительной MBR (Master Boot Record) или нет.Если это действительный MBR, ОС будет скопирована в память (ОЗУ) оттуда в ОС, заботится об управлении памятью и процессами.

2 голосов
/ 31 декабря 2015

ИМХО, нет лучшего объяснения, чем факт о Как был написан первый компилятор?

В наши дни загрузка операционной системы является наиболее распространенным процессом, называемым начальной загрузкой

1 голос
/ 31 января 2018

Bootstrapping имеет еще одно значение в контексте обучения с подкреплением , которое может быть полезно знать разработчикам, помимо его использования в разработке программного обеспечения (большинство ответов здесь, например, kdgregory ) и его использование в статистике, как обсуждено Dirk Eddelbuettel .

С Саттон и Барто :

Уидроу, Гупта и Майтра (1973) изменили метод наименьшего среднего квадрата (LMS) Алгоритм Widrow и Hoff (1960) для получения подкрепления правило обучения, которое может учиться на сигналах успеха и неудач вместо тренировочных примеров. Они назвали эту форму обучения « выборочная адаптация к начальной загрузке » и описал его как «обучение с критик »вместо« учиться с учителем ». Они проанализировали это правило и показал, как можно научиться играть в блэкджек. Это был изолированный набег на подкрепление обучения Widrow, чей вклад в контролируемое обучение было гораздо более влиятельным.

В книге описаны различные алгоритмы подкрепления, в которых целевое значение основано на предыдущем приближении в качестве методов начальной загрузки:

Наконец, отметим последнее специальное свойство методов DP [Dynamic Programming]. Все они обновляют оценки значений состояний на основе оценок значений преемника состояния. То есть они обновляют оценки на основе других По оценкам. Мы называем эту общую идею bootstrapping . Много подкрепления методы обучения выполняют самозагрузку, даже те, которые не требуют, как DP требует, полной и точной модели окружающая среда.

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

...