c linux-kernel machine-code

¿Se puede ejecutar el software en una máquina de metal desnudo?



linux-kernel machine-code (8)

1º: Claro. Realmente no necesitas un sistema operativo solo para grabar algunos ciclos.

Es posible que necesite algún tipo de soporte del sistema operativo si desea cargar o almacenar archivos o datos, administrar entradas o salidas, pero esto también se puede hacer llamando directamente a funciones del BIOS: leer clave del teclado, escribir en pantalla o LED o interfaz serie. Solo cuando desee ejecutar múltiples programas o manejar interrupciones desde el exterior, recursos conflictivos o similares, entonces necesitará desesperadamente un sistema operativo.

2º: El kernel se compila en código máquina, que se ejecuta durante el arranque. No hay C involucrado cuando se ejecuta un kernel. C solo ayuda a escribir un kernel o cualquier programa que debería ejecutarse, si está en el kernel o "bare metal".

Esta pregunta ya tiene una respuesta aquí:

Solo me pregunto, ¿podemos ejecutar un programa en una máquina sin un sistema operativo?

Además, escuché que el kernel de Linux está escrito en lenguaje C y se ejecuta un kernel durante el arranque, entonces me pregunto cómo una computadora entiende el lenguaje sin primero compilarlo.


¿Qué es un sistema operativo si no es un software que se ejecuta en una máquina "descubierta"? ¿Vudú? XD


De la Wikipedia:

Cuando una computadora se enciende por primera vez, no tiene un sistema operativo en ROM o RAM. La computadora debe ejecutar inicialmente un pequeño programa almacenado en la ROM junto con el mínimo de datos necesarios para acceder a los dispositivos no volátiles desde los que se cargan los programas del sistema operativo y los datos en la memoria RAM. El pequeño programa que inicia esta secuencia de carga en la RAM se conoce como cargador de arranque, arranque o cargador de arranque. El único trabajo de este pequeño cargador de arranque es cargar otros datos y programas que luego se ejecutan desde la RAM.

La computadora puede entender el kernel de Linux porque ya se ha compilado y almacenado (normalmente) en el disco. El gestor de arranque le da a la computadora suficiente funcionalidad para cargar el kernel precompilado en la memoria.

No necesitaría cargar un sistema operativo completo para ejecutar un programa en una computadora, podría escribir un gestor de arranque para iniciar un programa que había compilado. No tendría acceso a ninguna de las llamadas al sistema operativo que hacen la vida más fácil para los programadores.


En resumen, sí.

Linux sigue siendo un programa de software, en código máquina, que se ejecuta en una máquina de metal desnudo. Si bien puede ejecutar un programa de software sin un sistema operativo, su programa deberá implementar TODO el código que se usa para hablar con varias piezas de hardware en una computadora en varios grados, por ejemplo, entregando datos a una pantalla, interpretando la entrada de un teclado / mouse / tarjeta de red, etc. (Algunas de las cosas de muy bajo nivel son implementadas por el firmware en los componentes de la computadora, pero el resto tendrá que implementarse en el programa). Esto hace que ocupe mucho tiempo y le resulte difícil escribir algo que funcione completamente sin un sistema operativo.


Sí, y hoy se hace para microcontroladores pequeños con algunos KB de memoria.

El programa generalmente se escribe en C y se compila en otra computadora (que se llama compilación cruzada ) y luego se carga como datos binarios en la memoria flash del controlador.


Simplemente mira cualquier consola de juegos antes de las de 32 bits. Casi todos carecían de código de arranque y simplemente se inicializaban directamente desde el cartucho insertado.


el kernel de Linux podría estar escrito en C. Aún está compilado en machinecode. Y es este código de máquina que se ejecuta durante el arranque

También puede escribir software que se ejecuta durante un arranque. De esta manera puede hacer su propio sistema operativo personalizado o crear su propio software personalizado que se puede ejecutar sin un sistema operativo directamente. Sin embargo, ten en cuenta que un sistema operativo te ofrece una gran cantidad de funcionalidades que tendrás que hacer tú mismo. Cosas como la compatibilidad con el controlador, las rutinas IO de disco, las conexiones en red, la multitarea y la gestión de memoria que deberá hacer usted mismo.

Finalmente: no creo que a las personas les guste tanto si tienen que reiniciar su máquina para poder ejecutar su software. Así que me gustaría escribir para un sistema operativo ... hace que sea más fácil para usted y para el usuario.


teóricamente, puede construir el gestor de arranque utilizando el editor hexadecimal en otra máquina.