Un programma autonomo, noto anche come programma freestanding, è un programma per computer che non carica alcun modulo esterno, funzione di libreria o programma e che è progettato per avviarsi con la procedura di bootstrap del processore di destinazione – funziona su metallo nudo. Nei primi computer come l’ENIAC senza il concetto di un sistema operativo, i programmi standalone erano l’unico modo per far funzionare un computer. I programmi standalone sono di solito scritti o compilati nel linguaggio assembly per l’hardware specifico.
In seguito i programmi standalone erano tipicamente forniti per funzioni di utilità come la formattazione del disco. Inoltre, i computer con una memoria molto limitata usavano programmi standalone, cioè la maggior parte dei computer fino alla metà degli anni ’50, e più tardi ancora i processori embedded.
I programmi standalone sono ora principalmente limitati ai SoC o ai microcontrollori (dove la durata della batteria, il prezzo e lo spazio dei dati sono a premio) e ai sistemi critici. In casi estremi ogni possibile serie di ingressi ed errori deve essere testata e quindi ogni potenziale uscita conosciuta; monitoraggio dello stato del sistema completamente indipendente ma completamente parallelo; o dove la superficie di attacco deve essere ridotta al minimo; un sistema operativo aggiungerebbe complessità e incertezza inaccettabili (esempi, interruzioni di sicurezza per operatori industriali, compagnie aeree commerciali, dispositivi medici e controlli di lancio di missili balistici, controllori di carica delle batterie al litio nei dispositivi di consumo). I microcontrollori a risorse limitate possono anche essere resi più tolleranti alle varie condizioni ambientali rispetto all’hardware più potente necessario per un sistema operativo; questo è possibile perché la frequenza di clock molto più bassa, la spaziatura dei pin, la mancanza di grandi bus di dati (ad esempio i moduli ram ddr4) e il numero limitato di transistor consentono margini di progettazione più ampi e quindi il potenziale per proprietà elettriche e fisiche più robuste sia nel layout del circuito che nelle scelte dei materiali.