スタンドアロン プログラムは、フリースタンディング プログラムとも呼ばれ、外部モジュールやライブラリ関数、プログラムをロードせず、対象プロセッサの起動手順で起動するように設計されているコンピュータ プログラム、つまりベアメタルで実行されます。 ENIACのようなOSの概念がない初期のコンピュータでは、スタンドアロンプログラムがコンピュータを動かす唯一の手段であった。 スタンドアロン・プログラムは通常、特定のハードウェア用のアセンブリ言語で書かれるか、またはコンパイルされます。
後半のスタンドアロン・プログラムは通常、ディスク・フォーマットなどのユーティリティ機能向けに提供されました。 また、メモリが非常に限られているコンピュータでは、1950 年代半ばまでのほとんどのコンピュータ、およびそれ以降の組み込みプロセッサでスタンドアロン プログラムが使用されていました。 極端なケースでは、すべての可能な入力とエラーのセットをテストし、したがってすべての潜在的な出力を知る必要があります。完全に独立しながらも完全に並列のシステム状態監視、または攻撃表面を最小限に抑える必要がある場合、オペレーティング システムは受け入れがたい複雑さと不確実性を追加します (例: 産業オペレータ安全停止、民間航空、医療機器、弾道ミサイル発射制御、民生機器のリチウム電池充電制御装置など)。 これは、クロック周波数が低いこと、ピンの間隔、大きなデータ・バス(例:DDR4 RAMモジュール)がないこと、トランジスタの数が限られていることなどにより、設計マージンが広くなり、回路レイアウトや材料の選択において、より堅牢な電気および物理特性を実現できる可能性があるためです
マイクロコントローラは、OSにとってより強力なハードウエアよりも多様な環境条件に対してより寛容であるべきです。