リングプロテクション
ユーザーモードのコードが何らかの特別な機能を使いたい場合、システムコールによってスーパーバイザモードに移行し、カーネル空間にあるOSの信頼されているコードで処理を行い、結果をユーザ空間に返す。DOS(少なくともEMM386のような386のメモリマネージャをロードしていない場合)や他の単純なOSと同様、多くの組み込みシステムは常にスーパーバイザモードで動作しており、デバイスドライバとユーザプログラムのプログラミングに差がない。
多くのプロセッサは少なくとも2種類のモードを持つ。x86プロセッサは4つのモードを持ち4層のリングプロテクションになっている。リング0で動作するプログラムはあらゆることができ、リング3で動作するコードで障害が発生してもシステムの他の部分に影響を与えない。リング1とリング2は滅多に使われないが、それぞれ異なるアクセスレベルを構成できる。
ユーザーモードからカーネルモードへの切り替えは、多くのシステムで非常に高くつく。基本的なシステムコールであるgetpidを実測してみると、多くのマシンで1000から1500サイクルかかる。そのうち約100サイクルが実際のモード切替(ユーザからカーネル空間へは70サイクル、戻るのに40サイクル)で、残りはいわゆる「カーネルオーバーヘッド」である。L3 microkernel では、このオーバーヘッドを最小化しており、全体のコストは約150サイクルとなっている。