Máquina desnuda


De Wikipedia, la enciclopedia libre
  (Redirigido desde Bare metal (informática) )
Saltar a navegación Saltar a búsqueda

En informática, máquina desnuda (o bare metal ) se refiere a una computadora que ejecuta instrucciones directamente en hardware lógico sin un sistema operativo que intervenga . Los sistemas operativos modernos evolucionaron a través de varias etapas, desde los más elementales hasta los actuales sistemas complejos y altamente sensibles que incorporan muchos servicios. Después del desarrollo de las computadoras programables (que no requirieron cambios físicos para ejecutar diferentes programas) pero antes del desarrollo de los sistemas operativos, las instrucciones secuenciales se ejecutaron en el hardware de la computadora directamente usando el lenguaje de la máquina.sin ninguna capa de software del sistema. Este enfoque se denomina el precursor de la "máquina desnuda" de los sistemas operativos modernos. Hoy en día, se aplica principalmente a sistemas integrados y firmware generalmente con requisitos de latencia críticos en el tiempo, mientras que los programas convencionales se ejecutan mediante un sistema de tiempo de ejecución superpuesto a un sistema operativo.

Ventajas

Para una aplicación determinada, en la mayoría de los casos, una implementación completa se ejecutará más rápido, usará menos memoria y, por lo tanto, será más eficiente en términos de energía. Esto se debe a que los sistemas operativos, como cualquier programa, necesitan algo de tiempo de ejecución y espacio de memoria para ejecutarse, y estos ya no son necesarios en bare-metal. Por ejemplo, cualquier característica de hardware que incluya entradas y salidas es directamente accesible en bare-metal, mientras que la misma característica que usa un sistema operativo debe enrutar la llamada a una subrutina, consumiendo tiempo de ejecución y memoria. [1]

Desventajas

Para una aplicación determinada, la programación bare-metal requiere más esfuerzo para funcionar correctamente y es más compleja porque los servicios proporcionados por el sistema operativo y utilizados por la aplicación deben volver a implementarse en función de las necesidades. Estos servicios pueden ser:

  • Arranque del sistema (obligatorio)
  • Gestión de la memoria: ubicación de almacenamiento del código y los datos relacionados con los recursos de hardware y periféricos (obligatorio)
  • Manejo de interrupciones (si las hubiera)
  • Programación de tareas, si la aplicación puede realizar más de una tarea
  • Gestión de periféricos (si los hay)
  • Gestión de errores, si se desea o se necesita

La depuración de un programa bare-metal es difícil ya que:

  • No hay notificaciones de errores de software ni gestión de fallas, a menos que se hayan implementado y validado.
  • No hay una salida estándar, a menos que se haya implementado y validado.
  • La máquina donde se escribe el programa no puede ser la misma donde se ejecuta el programa, por lo que el hardware de destino es un emulador / simulador o un dispositivo externo. Esto obliga a configurar una forma de cargar el programa bare-metal en el destino ( parpadeando ), iniciar la ejecución del programa y acceder a los recursos del destino.

La programación bare-metal generalmente se realiza utilizando un lenguaje cercano al hardware, como Rust, C ++, C, lenguaje ensamblador , o incluso para pequeñas cantidades de código o código de máquina de procesadores muy nuevos directamente. [2] Todos los problemas anteriores significan inevitablemente que los programas bare-metal rara vez son portátiles .

Ejemplos de

Primeros ordenadores

Las primeras computadoras, como la PDP-11 , permitían a los programadores cargar un programa, suministrado en código de máquina , en la RAM . La operación resultante del programa podría ser monitoreada por luces y la salida derivada de cinta magnética , dispositivos de impresión o almacenamiento .

Sistemas embebidos

La programación de máquinas desnudas sigue siendo una práctica común en los sistemas integrados , donde los microcontroladores o microprocesadores a menudo se inician directamente en software monolítico de un solo propósito, sin cargar un sistema operativo separado. Dicho software integrado puede variar en estructura, pero la forma más simple puede consistir en un bucle principal infinito , llamando a subrutinas responsables de verificar las entradas, realizar acciones y escribir salidas.

Desarrollo

El enfoque de usar máquinas desnudas allanó el camino para nuevas ideas que aceleraron la evolución del desarrollo del sistema operativo .

Este enfoque destacó la necesidad de lo siguiente:

  • Dispositivos de entrada / salida (E / S) para ingresar tanto el código como los datos de manera conveniente:
    • Se crearon dispositivos de entrada, como teclados . Estos eran necesarios, ya que las computadoras anteriores a menudo tenían dispositivos de entrada únicos, obtusos y complicados .

Por ejemplo, los programas se cargaron en el PDP-11 a mano, utilizando una serie de interruptores de palanca en el panel frontal del dispositivo. Los teclados son muy superiores a estos dispositivos de entrada antiguos, ya que sería mucho más rápido escribir código o datos que usar interruptores de palanca para ingresar esto en la máquina. Más tarde, los teclados se convertirían en estándar en casi todas las computadoras, independientemente de la marca o el precio.

    • Los dispositivos de salida, como los monitores de computadora, se utilizarían más tarde y todavía lo son hasta el día de hoy. Demostraron ser una gran conveniencia con respecto a los dispositivos de salida anteriores , como una serie de luces en el Altair 8800 , que indicaría el estado de la computadora.

Los monitores de computadora también pueden mostrar fácilmente la salida de un programa de una manera fácil de usar. Por ejemplo, uno tendría que tener un conocimiento profundo acerca de una computadora temprana específica y su sistema de visualización, que consiste en una serie de luces, para incluso comenzar a comprender el estado del hardware de la computadora. Por el contrario, cualquier persona que sepa leer debería poder comprender una interfaz de usuario bien diseñada en un sistema moderno, sin tener que saber nada sobre el hardware de la computadora en la que se ejecuta el programa.

  • Dispositivos de almacenamiento secundario más rápidos, económicos y de mayor disponibilidad para almacenar programas en una memoria no volátil . Esto era necesario, ya que era engorroso tener que escribir el código a mano para usar la computadora de una manera útil, que se perdería en cada reinicio debido a que el sistema lo guardaba en la memoria volátil .
  • El requisito de un lenguaje de alto nivel conveniente y un traductor para dicho lenguaje de alto nivel al código de máquina correspondiente.
  • Vinculadores para vincular módulos de biblioteca , que pueden estar escritos por el usuario o que ya están disponibles en el sistema.
  • Cargadores para cargar ejecutables en RAM desde el almacenamiento secundario .
  • Dispositivos de E / S adecuados , como impresoras, para producir una copia impresa de la salida generada por los programas.

Ver también

  • Computación de máquina desnuda
  • Computadora barebone
  • Programa independiente

Referencias

  1. ^ Gordon, Abel; Amit, Nadav; Har'El, Nadav; Ben-Yehuda, Muli; Landau, Alex; Schuster, Assaf; Tsafrir, Dan (2012). "ELI" . Avisos ACM SIGPLAN . 47 (4): 411–422. doi : 10.1145 / 2248487.2151020 .
  2. ^ https://arobenko.gitbooks.io/bare_metal_cpp/content/
  • Silberschatz, A .; Galvin, Peter; Gagne, Greg (2003). Conceptos del sistema operativo . ISBN 9780471250609.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Bare_machine&oldid=1043613167 "