Unixのランレベルは、保護リングと直交しています(「無関係」、「独立」という意味で、コメントを参照)。
ランレベルは、基本的にはオペレーティングシステム全体のランタイム構成/状態であり、SSHアクセス、MTA、ファイルサーバー、GUIなどの(「ユーザー」が)利用できるサービスを記述します。
リングはハードウェア支援の概念であり、ハードウェアをよりきめ細かく制御できます(リンク先のウィキペディアのページに記載されています)。たとえば、上位のリングで実行されているコードは、一部のCPU命令を実行できない場合があります。
X86アーキテクチャ上のLinuxは、通常、カーネル(デバイスドライバーを含む)にRing0を使用し、ユーザースペースアプリケーション(rootまたは別の一般ユーザーまたは特権ユーザーのどちらで実行されているかに関係なく)にRing3を使用します。
したがって、ランレベルが特定のリングで実行されているとは本当に言えません-常にあります1 Ring3およびカーネル(Ring0)で実行されているユーザー空間アプリケーション(少なくともPID 1-init
)。
1いつものように、Ring0で「通常の」プログラムを実行できるため、「常に」は実際には「ほぼ常に」を意味しますが、実際にはそれを確認することはほとんどありません(HPCで作業している場合を除く)。
2つの概念は完全に無関係です。システム実行レベルとは、GUIデスクトップ環境が実行されているかどうかなど、システムで実行されている一連のサービスを指します。リングレベルは、コードを異なる特権レベルに分離するIntel x86プロセッサのハードウェア保護メカニズムです。 Linuxは、カーネルモードコードとユーザーモードコードにそれぞれリング0とリング3のみを使用します。したがって、システムが任意の実行レベルにあるときに実行されるすべてのユーザーモードプロセスは、CPUをリング0に移行するカーネルコードを呼び出すまで、リング3で実行されます。