Un programa autónomo , también conocido como programa independiente , es un programa informático que no carga ningún módulo externo, función de biblioteca o programa y que está diseñado para arrancar con el procedimiento de arranque del procesador de destino: se ejecuta en hardware físico . En las primeras computadoras, como la ENIAC , sin el concepto de un sistema operativo , los programas autónomos eran la única forma de ejecutar una computadora. Los programas autónomos suelen estar escritos en lenguaje ensamblador para un hardware específico.
Más tarde, se proporcionaron programas independientes para funciones de utilidad, como formatear discos . Además, las computadoras con memoria muy limitada podían usar programas independientes, es decir, la mayoría de las computadoras hasta mediados de la década de 1950 y más tarde, aún con procesadores integrados .
Los programas independientes se limitan ahora principalmente a los SoC o microcontroladores (donde la duración de la batería, el precio y el espacio de datos son primordiales) [1] y a los sistemas críticos . En casos extremos, se deben probar todos los conjuntos posibles de entradas y errores y, por lo tanto, conocer cada salida potencial; monitoreo del estado del sistema completamente independiente [proveedores físicos separados y equipos de programación] pero completamente paralelo; [2] [3] [4] o donde se debe minimizar la superficie de ataque ; un sistema operativo agregaría una complejidad e incertidumbre inaceptables (los ejemplos incluyen interrupciones de seguridad del operador industrial, [4] aerolíneas comerciales, [2] [3] dispositivos médicos, controles de lanzamiento de misiles balísticos y controladores de carga de batería de litio en dispositivos de consumo [riesgo de incendio y costo del chip de aproximadamente 10 centavos]). Los microcontroladores con recursos limitados también se pueden hacer más tolerantes a diversas condiciones ambientales que el hardware más poderoso necesario para un sistema operativo; Esto es posible debido a la frecuencia de reloj mucho más baja, el espaciado de pines, la falta de buses de datos grandes (por ejemplo, módulos RAM DDR4) y la cantidad limitada de transistores permitida para márgenes de diseño más amplios y, por lo tanto, el potencial para propiedades eléctricas y físicas más robustas tanto en el diseño del circuito como en la elección de materiales.