ランタイムシステム
ランタイムシステムは、ライブラリ記述時に意図されていた言語の実行モデルとは異なる実行モデルを実装する。通常のライブラリのコードを読むには、ライブラリが書かれた言語に関する知識でライブラリの振る舞いを理解することができる。しかし、ランタイムシステムを呼び出すAPIのコードを読むには、API呼び出しが書かれた言語に関する知識だけではAPI呼び出しの振る舞いを理解することはできない。ある時点である仕組みを介して、実行モデルは、その呼び出しが書かれた言語の実行モデルであることを止め、ランタイムシステムによって実装された実行モデルへと切り替わる。たとえば、トラップ命令は実行モデルを切り替える方法の1つである。この違いは、POSIXスレッド等、APIで呼び出される実行モデルと通常のソフトウェアライブラリとを区別するものである。POSIXスレッドの呼び出しとソフトウェアライブラリの呼び出しはどちらもAPIを介するが、POSIXスレッドの振る舞いは呼び出した言語の観点から理解することができない。正確に言うと、POSIXスレッドの呼び出しは、POSIXスレッドランタイムシステムによって実装される外部の実行モデル (この実行システムはOSカーネルであることが多い) を持ち込むものである。
この手法により、言語の実装作業と様々なマシンへの移植が大幅に単純化され、しかもリフレクション等の洗練された言語機能の効率が向上する。さらに、同一のプログラムを明示的に再コンパイルをせずに任意のマシンで実行するという、ワールドワイドウェブの普及以来非常に重要になっている機能が可能になる。実行を高速化するため、ランタイムシステムの中には機械語への実行時コンパイルを実装しているものもある。
もう1つの極端な例では、物理CPU自体を特定のアセンブリ言語のランタイムシステムの実装と見なすことができる。この考え方では、実行モデルは物理CPUシステムとメモリシステムによって実装される。たとえて言うと、高級言語のシステムはそれ自体が別の言語で実装される。こうしてCPU自体 (実際にはプログラムカウンターの増加や命令のスケジューリングを決定するCPU内部のデジタル回路構造) が最下層のランタイムシステムの役目を負った、ランタイムシステムの階層構造が生み出される。
ランタイムシステムの現代的側面は、Pthreadsのミューテックス構造やOpenMPの並列セクション構造等の並列実行の振る舞いである。そのような並列実行の振る舞いを持つランタイムシステムは、proto-runtime手法に従ってモジュール化される場合がある。