Solo pregunté esto y me lastimé el cerebro durante algunas horas. Todavía no encontré nada que realmente haga un punto. Todos los que escriben algo sobre un tema no pueden realmente "enseñar". Si desea enseñar a alguien, tome el lenguaje más básico que una persona entienda, para que no tenga que preocuparse por otros temas cuando maneje un tema. Así que llegué a una conclusión que parece encajar bien en todo este caos.
En el lenguaje de programación C, cada programa comienza con la main()
función. Otros idiomas pueden definir otras funciones donde se inicia el programa. Pero un procesador no conoce el main()
. Un procesador solo conoce comandos predefinidos, representados por combinaciones de 0
y 1
.
En la programación de microprocesadores, al no tener un sistema operativo subyacente (Microsoft Windows, Linux, MacOS, ..), debe decirle explícitamente al procesador dónde comenzar configurando la ProgramCounter
(PC) que itera y salta (bucles, llamadas de función) dentro del comandos conocidos por el procesador. Debe saber qué tan grande es la RAM, debe establecer la posición de la pila del programa (variables locales), así como la posición del montón (variables dinámicas) y la ubicación de las variables globales (supongo que se llamaba SSA ?) dentro de la RAM. Un único procesador solo puede ejecutar un programa a la vez.
Ahí es donde entra el sistema operativo. El sistema operativo en sí es un programa que se ejecuta en el procesador. Un programa que permite la ejecución de código personalizado. Ejecuta múltiples programas a la vez cambiando entre los códigos de ejecución de los programas (que se cargan en la RAM). Pero el sistema operativo ES UN PROGRAMA, cada programa está escrito de manera diferente. Simplemente poner el código de su programa personalizado en la RAM no lo ejecutará, el sistema operativo no lo sabe. Debe llamar a las funciones del sistema operativo que registra su programa, decirle al sistema operativo cuánta memoria necesita el programa, dónde se encuentra el punto de entrada al programa (elmain()
función en caso de C). Y esto es lo que supongo que se encuentra dentro de Runtime Library, y explica por qué necesita una biblioteca especial para cada sistema operativo, porque estos son solo programas en sí mismos y tienen diferentes funciones para hacer estas cosas.
Esto también explica por qué NO está vinculado dinámicamente en tiempo de ejecución como .dll
están los archivos, incluso si se llama Biblioteca RUNTIME. La biblioteca de tiempo de ejecución debe estar vinculada estáticamente, porque se necesita al inicio de su programa. Runtime Library inyecta / conecta su programa personalizado en / a otro programa (el sistema operativo) en tiempo de ejecución. Esto realmente causa algo de cerebro ...
Conclusión: la biblioteca RUNTIME es un error al nombrar. Puede que no haya habido un.dll
(enlace en tiempo de ejecución) en los primeros tiempos y el problema de comprender la diferencia simplemente no existía. Pero incluso si esto es cierto, el nombre está mal elegido.
Los mejores nombres para Runtime Library podrían ser: StartupLibrary / OSEntryLibrary / SystemConnectLibrary / OSConnectLibrary
Espero haberlo hecho bien, para corrección / expansión. salud.