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