Я просто запитав це про себе і болів мозок кілька годин. Досі не знайшли нічого, що реально робить сенс. Усі, хто щось пише в тему, не в змозі насправді "навчити". Якщо ви хочете когось навчити, візьміть найосновнішу мову, яку людина розуміє, тому йому не потрібно дбати про інші теми при обробці теми. Тому я прийшов до висновку для себе, який, здається, добре вписується у весь цей хаос.
У мові програмування C кожна програма починається з функції main (). Інші мови можуть визначати інші функції, де програма запускається. Але процесор не знає main (). Процесор знає лише заздалегідь задані команди, представлені комбінаціями "0" і "1".
У програмуванні мікропроцесорів, що не мають базової операційної системи (Microsoft Windows, Linux, MacOS, ..), потрібно чітко сказати процесору, з чого почати, встановивши ProgrammCounter (ПК), який ітераціює і стрибає (циклі, виклики функцій) в межах команди, відомі процесору. Вам потрібно знати, наскільки велика оперативна пам’ять, вам потрібно встановити положення стеку програми (локальні змінні), а також позицію купи (динамічні змінні) та розташування глобальних змінних (я здогадуюсь, це називалося SSA ?) в оперативній пам'яті. Одночасний процесор одночасно може виконувати лише одну програму.
Ось, де надходить операційна система. Сама операційна система - це програма, яка працює на процесорі. Програма, яка дозволяє виконувати користувацький код. Запускає кілька програм одночасно, перемикаючись між кодами виконання програм (які завантажуються в ОЗУ). Але операційна система - ПРОГРАМА, кожна програма написана по-різному. Просто введення коду вашої користувальницької програми в оперативну пам'ять не запустить її, операційна система цього не знає. Вам потрібно викликати функції в операційній системі, яка реєструє вашу програму, сказати операційній системі, скільки пам’яті потрібно програмі, де знаходиться точка входу в програму (головна () функція у випадку С). І саме це, напевно, розташоване в RuntimeLibrary і пояснює, чому вам потрібна спеціальна бібліотека для кожної операційної системи,
Це також пояснює, чому він НЕ динамічно пов'язаний під час виконання, оскільки файли .dll є, навіть якщо він називається RUNTIMELibrary. Бібліотеку RuntimeLibrary потрібно пов’язати статично, тому що вона потрібна при запуску вашої програми. RuntimeLibrary вводить / підключає вашу власну програму до / до іншої програми (операційної системи) в RUNTIME. Це дійсно викликає певний мозок ...
Висновок: RUNTIMELбібліотека - це помилка в іменуванні. Можливо, там ще не було .dll (посилання на час виконання) в ранні часи, і питання розуміння різниці просто не існувало. Але навіть якщо це правда, ім’я погано вибране.
Кращими іменами RuntimeLibrary можуть бути: StartupLibrary / OSEntryLibrary / SystemConnectLibrary / OSConnectLibrary
сподіваюсь, що я зрозумів це правильно, для корекції / розширення ура.