Я просто спросил об этом сам и несколько часов болел мозг. До сих пор не нашел ничего, что действительно имеет значение. Все, кто что-то пишет в теме, не могут «научить». Если вы хотите научить кого-то, используйте самый простой язык, который понимает человек, поэтому ему не нужно заботиться о других темах при работе с темой. Поэтому я пришел к выводу, что, похоже, хорошо вписывается во весь этот хаос.
На языке программирования C каждая программа начинается с main()
функции. Другие языки могут определять другие функции, с которых начинается программа. Но процессор не знает main()
. Процессор знает только предопределенные команды, представленные комбинациями 0
и 1
.
В микропроцессорном программировании, не имеющем базовой операционной системы (Microsoft Windows, Linux, MacOS, ..), вам нужно явно указать процессору, с чего начать, установив ProgramCounter
(ПК), который выполняет итерации и скачки (циклы, вызовы функций) в пределах Команды, известные процессору. Вы должны знать, насколько большой объем ОЗУ, вам нужно установить положение стека программы (локальные переменные), а также положение кучи (динамические переменные) и расположение глобальных переменных (я думаю, это называлось SSA). ?) в оперативной памяти. Один процессор может одновременно выполнять только одну программу.
Вот тут и приходит операционная система. Сама операционная система - это программа, которая работает на процессоре. Программа, которая позволяет выполнять пользовательский код. Выполняет несколько программ одновременно, переключаясь между кодами выполнения программ (которые загружаются в ОЗУ). Но операционная система - это программа, каждая программа написана по-своему. Простое помещение кода вашей пользовательской программы в оперативную память не приведет к ее запуску, операционная система не знает этого. Вам необходимо вызвать функции в операционной системе, которая регистрирует вашу программу, сообщить операционной системе, сколько памяти требуется программе, где находится точка входа в программу (main()
функция в случае с). И это то, что, как мне кажется, находится в Runtime Library, и объясняет, почему вам нужна специальная библиотека для каждой операционной системы, потому что это всего лишь сами программы и имеют разные функции для выполнения этих задач.
Это также объясняет, почему он НЕ динамически связан во время выполнения с .dll
файлами, даже если он называется библиотекой RUNTIME. Библиотека времени выполнения должна быть связана статически, потому что она необходима при запуске вашей программы. Runtime Library внедряет / подключает вашу пользовательскую программу в / к другой программе (операционной системе) в RUNTIME. Это действительно вызывает некоторый мозг ...
Вывод: RUNTIME Library - сбой в именовании. Возможно, не было .dll
(связывание во время выполнения) в ранние времена, и проблема понимания разницы просто не существовала. Но даже если это правда, имя выбрано неправильно.
Лучшими именами для библиотеки времени выполнения могут быть: StartupLibrary / OSEntryLibrary / SystemConnectLibrary / OSConnectLibrary
Надеюсь, я понял это правильно, для коррекции / расширения. веселит.