Що таке завантаження?


636

Я продовжую бачити "завантажувальну роботу", про яку говорилося в розробці додатків. Це здається і широко поширеним, і важливим, але я ще не стикався з навіть поганим поясненням того, що насправді завантажувальний процес; швидше, здається, ніби кожен просто повинен знати, що це означає. Я не хочу. Як я можу зрозуміти, це має щось спільне з завданнями ініціалізації, необхідними для програми після запуску, але я можу з цим абсолютно помилитися. Хтось може допомогти мені зрозуміти цю ідею?


8
За даними Вікіпедії, існує чотири вживання слова "завантажувальна програма" стосовно обчислень - en.wikipedia.org/wiki/Bootstrapping#Computing
Томас Оуенс

1
Я щойно оновив пост цього HeDinges. Я шукав дещо роз’яснення щодо того, на яку форму завантажувального погляду Алекс дивився.
Томас Оуенс

Під розробкою ПЗ йдеться про розробку послідовно більш складних, швидших середовищ програмування.
Lucky

У розробці програмного забезпечення .NET я розумію, що це стосується налаштування середовища, в якому буде працювати програма, наприклад, будь-які сервіси, які потрібно зареєструвати або завантажити.
Нео

Відповіді:


318

"Запуск завантаження" походить від терміна "підтягування себе власними завантажувальними програмами". Стільки можна отримати від Вікіпедії .

Під час обчислень завантажувач завантажувального пристрою - це перший фрагмент коду, який працює при запуску машини і відповідає за завантаження решти операційної системи. У сучасних комп’ютерах він зберігається в ПЗУ, але я згадую процес завантаження на PDP-11, де ви бите біти за допомогою перемикачів на передній панелі, щоб завантажити певний сегмент диска в пам'ять, а потім запустити його. Потрібно сказати, що завантажувач завантажувача зазвичай досить малий.

"Запуск завантаження" також використовується як термін для побудови системи, використовуючи саму - або, правильніше, попередницьку версію. Наприклад, ANTLR версії 3 записується за допомогою аналізатора, розробленого у ANTLR версії 2.


8
Нічого собі, я майже забув про вимикачі передньої панелі на PDP. Дякую за спогади!!
Джефф Хорнбі

7
Виправте мене, якщо я помиляюся. Хоча ця відповідь пояснює технічні деталі того, яким може бути завантажувальний процес, він ніколи не відповідав на початкове запитання в контексті запитання.
jayscript

5
@jayscript - Як би ви вирішили відповісти на це запитання? Це ідіоматичне вираження, і ідіоми, як правило, добре зрозумілі соціальній групі, яка їх використовує, і незрозумілою поза нею. Я спробував відповісти на прикладі, що, на мою думку, є одним із небагатьох способів спроби перекласти ідіому.

3
@kdgregory Я не зміг би відповісти на це запитання, оскільки прийшов сюди шукати відповіді. Я припускаю, що слово завантажувальне слово саме по собі є метафорою для декількох технічних понять, які пов'язані між собою, що може стати джерелом плутанини.
jayscript

2
PDP 11 ?! Я не здогадувався, що у нас тут є старі люди. : P
John Red

255

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

Як бачите, це простий файл, який запускає великий процес.


50
Щодо веб-розробки (що було контекстом початкового питання), я думаю, що це найкраща відповідь.
cartbeforehorse

Здається, це дуже пов’язано з Ларавелем, але Laravel ще не був там у 2009 році.
LppEdd

@ Вайдан Алі Ні, це не має бути прийнятою відповіддю. Це мікроскопічне уявлення про нове використання терміна завантажувального завантаження, яке, на думку деяких, є фактично неправомірним вживанням набагато більш раннього терміна. "Завантажувати завантаження" означає підтягування себе за допомогою завантажувальних тренажерів, тобто використовувати силу чогось, щоб скористатися собою. Саме походження терміна "завантажувати комп'ютер". Поточне використання попсу у веб-розробці - не єдине (або оригінальне) використання цього слова. Багато інших відповідей вирішують це відповідним чином.
Калласте

3
@Kallaste, добре, але це відповідь, яку я шукав, і, виходячи з контексту оригінального питання ("розробка додатків"), здається, це найбільш відповідна відповідь, як уже вказувалося.
bynary

@ aaron.bynum, ні, наведена відповідь стосується рамок веб-розробки, і, безумовно, не для розробки додатків. Відповідь є оманливою та хибною, оскільки вона спирається на загальноприйняте нерозуміння того, що насправді є завантаженням і звідки воно з’явилося. Це просто поширення дезінформації. Якщо це те, що ви прийшли сюди шукати, то добре, але ТАК у цілому цінує правильну інформацію. Таким чином мій коментар.
Калласте

51

Дивіться у статті Вікіпедії про завантажувальну систему .

Є розділ та посилання, що пояснюють, що це означає в обчислювальній техніці . Він має чотири різні сфери використання.

Ось кілька цитат, але для більш глибокого пояснення та альтернативних значень перегляньте посилання вище.

"... це техніка, за допомогою якої проста комп'ютерна програма активує більш складну систему програм."

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


6
Чи можете ви надати цитату чи перефразовувати, щоб читачам не довелося переходити на кілька веб-сайтів, щоб отримати відповідь?
Курт В. Лейхт

5
"Програмна індустрія: унікальний бізнес з юридичного продажу нестандартних товарів та стягнення плати за їх оновлення".
Stein Åsmul

Я шукав відповідь Bootstrapping у Compiler . Це було корисно.
Сірай Алам

48

Термін "завантажувальний завантаження" зазвичай застосовується до ситуації, коли система сама залежить від запуску, як проблема з куркою та яйцями.

Наприклад:

  • Як скласти компілятор C, написаний на C?
  • Як запустити процес ініціалізації ОС, якщо у вас ще не запущена ОС?
  • Як запустити розподілену (однорангову) систему, де клієнти залежать від своїх відомих на даний момент однолітків, щоб дізнатися про нових однолітків у системі?

У цьому випадку завантажувальна програма означає спосіб розірвати кільцеву залежність, як правило, за допомогою зовнішньої сутності, наприклад

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

тощо.


4
Це дійсно стає в основі питання. Там, де інші два відповіді, пропустіть це повністю.
Артуро Ернандес

1
Я відчуваю, що це пояснення було найбільш актуальним для розробки програмного забезпечення взагалі. Дійсно приніс концепцію додому для мене
Vance Palacio

23

У контексті розробки додатків "завантажувальна програма" зазвичай виникає, коли йдеться про модульне та / або автоматичне оновлення програмного забезпечення.

Замість того, щоб користувач завантажував весь додаток, включаючи функції, які йому не потрібні, і повторно завантажував і оновлював його вручну, коли є оновлення, користувач лише завантажує та запускає невеликий виконуваний "завантажувальний" виконавець, який, у свою чергу, завантажує та встановлює ці частини програми, які потрібні користувачеві. Крім того, компонент завантажувального пристрою може шукати оновлення та встановлювати їх щоразу, коли він запускається.


4
Я ніколи не чув термін "завантажувальний завантаження", що вживається в цьому конкретному контексті.
Bombe

Зазвичай використовується для програм php (наприклад, використовуючи Composer для цього)
AturSams

15

Алекс, це майже все, що робить ваш комп’ютер, коли він завантажується. ("Завантаження" комп'ютера насправді походить від слова завантажувальна програма)

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

Ця друга програма - це, мабуть, щось на зразок NTLDR (в Windows) або LILO (в Linux), яке потім виконує і може завантажувати, а потім запускати решту операційної системи.


2
Хоча я прочитав усі відповіді (які добре розширили термін, і я проголосував трохи), це просте порівняння "завантаження", також "завантажувальне" порівняння, дало мені найкращу мотивацію прочитати всі інші, щоб підключити крапки. Srsly, це було як би пояснити складну тему для 5-річного віку, і вони її отримують. Дякую.
Chris22

14

Для повноти це також досить важливий (і відносно новий) метод у статистиці, який використовує перекомпонування / моделювання для висновку властивостей населення з вибірки. У ньому є своя тривала стаття у Вікіпедії про завантаження даних (статистика) .


1
Відносно новий? Це було частиною моєї освіти зі статистики щонайменше 15 років тому.
Toon Krijthe

6
Ось чому я сказав «відносно»: початкові статті Ефрона складаються з початку 1980-х років, на відміну від того, щоб сказати про початок літератури про надійність 1960-х років.
Дірк Еддельбуеттель

4

Завантажуючи прив'язку словника, це означає починати з мінімальних ресурсів. У контексті ОС ОС повинна бути спроможна швидко завантажуватись після того, як Power On Self Test (POST) визначить, що це безпечно для пробудження процесора. Код ремінця для завантаження буде запускатися з BIOS. BIOS - це невеликий розмір ПЗУ. Як правило, це інструкція стрибків до набору інструкцій, які завантажуватимуть Операційну систему в ОЗП. Місце переходу - сектор завантаження на жорсткому диску. Після того, як програма bios перевіряє, це дійсний завантажувальний сектор, який містить початкову адресу збереженої ОС, тобто чи дійсний MBR (Master Boot Record) чи ні. Якщо його дійсний MBR, операційна система буде скопійована в пам'ять (ОЗУ) звідти на ОС, вона береться за управління пам'яттю та процесами.


2

ІМХО немає кращого пояснення, ніж факт про те, як був написаний перший компілятор?

У наші дні завантаження операційної системи є найпоширенішим процесом, який називається завантаженням


Посилання, яке ви дали у своїй відповіді, було дуже корисним.
Сірай Алам

2

Бутстрапінг має ще одне значення в контексті вивчення підкріплення, яке може бути корисно знати розробникам, на додаток до його використання у розробці програмного забезпечення (більшість відповідей тут, наприклад, kdgregory ) та використання його у статистиці, про яку розповів Дірк Еддельбуеттель .

Від Саттона і Барто :

Widrow, Gupta та Maitra (1973) модифікували алгоритм «Найменшого середнього квадрату» (LMS) Widrow and Hoff (1960), щоб створити підсилювальне правило навчання, яке могло б навчитися на сигналах успіху та невдачі замість прикладів навчання. Вони назвали цю форму навчання " вибірковою адаптацією до завантажувальної програми " і описали її як "навчання з критиком", а не "навчання з викладачем". Вони проаналізували це правило і показали, як можна навчитися грати в блекджек. Це було ізольованим рухом у зміцненні навчання від Widrow, чий внесок у контрольоване навчання мав значно більший вплив.

У книзі описані різні алгоритми посилення, де цільове значення базується на попередньому наближенні як методи завантаження:

Нарешті, відзначимо одну останню особливу властивість методів DP [Динамічне програмування]. Усі вони оновлюють оцінки значень станів на основі оцінок значень держав-наступників. Тобто вони оновлюють оцінки на основі інших оцінок. Ми називаємо цю загальну ідею завантаженням . Багато методів навчання підкріплення виконують завантажувальний процес, навіть ті, що не вимагають, як вимагає DP, повної та точної моделі середовища.

Зауважте, що це відрізняється від агрегування завантажувального завантаження та вибуху розвідки, про який згадується на сторінці вікіпедії під час завантаження.


1

З точки зору цього, що стосується використання популярного Twitter Bootstrap, я відчуваю, що цей тип завантажувальної програми - це дія інтеграції модульного компонента у веб-додаток, без того, щоб веб-додаток навіть не визнавав, що модульний компонент існує, поки йому це не потрібно або посилається на нього .

Розробник може легко інтегрувати копію теми CSS Twitter Bootstrap за замовчуванням, просто завантаживши (посилаючись) на неї у веб-додаток. Вуола! Тоді вам може знадобитися змінити деякі з цих змін, але ви можете зробити це таким чином, що ресурс / компонент не буде торкатися і повністю використовувати багаторазово.

Ця сама концепція полягає в тому, як веб-розробники реалізують API jQuery тощо, але Devs насправді не виражається як завантажувальна програма. Завдяки цьому він покращує гнучкість та повторне використання, дозволяючи ізолювати різні компоненти / ресурси програми для вільного проживання або на одному сервері, або, можливо, на CDN.

ПРИМІТКА. Для обчислення завантажувальних операцій з MBR та в UNIX для цього потрібен спеціальний завантажувач або менеджер, який є невеликою програмою в ПЗУ, яка завантажує ОС в ОЗУ. Якщо ви думаєте про це, то ж саме відбувається в дії завантажувача завантаження перевірки MBR та завантаження ОС на основі цієї таблиці, яка відбувається, не маючи уявлення про те, що це відбувається.


0

Я належу до покоління, яке перевертало перемикачі, щоб увійти до програми завантаження. На початку 1980-х років я працював над мікрокомп'ютером під назвою Micro-78, розробленим Electronics Corporation of India Ltd (ECIL). Це був свого роду клон Altair 8800. Я чітко пам’ятаю, що відбувається, коли вводилася невелика програма завантаження за допомогою перемикачів та виконується натисканням кнопки. Програма зчитує другу завантажувальну програму, що міститься в 1-й доріжці дискети, і перезаписує її на себе таким чином, що друга завантажувальна програма починає виконувати завантаження дискової операційної системи. Я думаю, що термін "завантажувальна програма" відноситься до цього процесу зчитування першої завантажувальної програми та перезапису другої завантажувальної програми на себе, таким чином "підтягуючи себе" з додатковою функціональністю другої завантажувальної програми.


-3

Як покірний початківець у світі програмування, і переглядаючи всі відповіді тут, побачивши це слово багато вживаного в явно трохи різних способах у різних місцях, я знайшов, читаючи сторінку Вікіпедії на Bootstrapping (так! Я не думав про це це або спочатку) дуже інформативно для розуміння відмінностей у вживанні цього слова. Чи може це бути ...... в надзвичайно рідкісних випадках ...... У Вікіпедії можуть бути навіть кращі пояснення певних термінів, ніж .... (відредаговано)? Чи принесуть вони бали реп у Вікіпедії?

Мені здається, все значення має щось спільне: почніть з чогось максимально простого Thing1, зробіть щось трохи складніше з цим Thing2, і тепер ви можете використовувати Thing2, щоб робити якісь завдання ефективніше і швидше, ніж ви могли спочатку з Thing1. Потім повторіть від Thing2 до Thing 3 ad infinitum ...

Я бачу це як тісно пов'язане як з біологічною еволюцією, так і з "Шарами абстракції" (такі новачки, як я, бач, ах, Вікіпедія, кашель) - еволюція з комп'ютерів 1940 р. З перемикачами, машинним кодом, асамблеєю, C, Python, AI, які ви можете дати всілякі складні інструкції, як-от "зробіть вечерю% 4 ^% за моїми вимогами & ^ $% вимогами та очистіть підлогу, ви% $ £" @: ~ "в п'яному сленговому англійському або амазонському племінному діалекті, не збільшуючи їх виняток '(для новачків знову ... ви здогадалися) - пропущено безліч посилань через просте незнання.

Тоді в певних конкретних програмних значеннях: Значення1: Thing1 використовується для завантаження останньої версії Thing2 (оскільки, звичайно, Thing2 буде більше Thing1, так само як Thing3 буде більше Thing2).

Значення2: Thing1 - мова нижчого рівня (ближче до 1001011100 .... 011001, ніж print ("Привіт", ім'я користувача)), що використовується для написання трохи вищої мови Thing2, тоді ця маленька частина Thing2 є використовується для розширення самого Thing2 від рівня лексики для дітей до рівня лексики для дорослих (Thing2 починає оброблятися, або використовувати правильний технічний термін "складений", саме дитячою версією (це розумна дитина!), тоді як дитяча версія Thing2 сам звичайно міг би бути скомпільований лише Thing1, тому що він не може існувати до того, як він існує, правда! термін програмного забезпечення та термін метафори!) варто витратити достатньо часу, вирішивши прийняти його довгостроково,або відмовитися від них (не впевнений, звідки тут взяти аналогію).

Якщо так, то Thing2 має "завантаження" (можливо, кілька разів) від дитинства до дорослого життя: "дитина - батько людини" (Вордсворт, пропонуйте не намагатися шукати цитату чи автора на Stack Overflow) .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.