Linuxモジュール/ドライバはカーネルスペースに属していますか、それともユーザースペースに属していますか?

Linuxモジュール/ドライバはカーネルスペースに属していますか、それともユーザースペースに属していますか?

一部の記事では、モジュール/ドライバがカーネル形成に参加しているため、カーネル空間に属していると言います(参照:http://www.freesoftwaremagazine.com/articles/drivers_linux)

他の人は、ハードウェアと直接対話するRing0だけがカーネルスペースと呼ぶことができると言います(モジュール/ドライバはRing2にあるので除く)。 (引用する:http://jaseywang.me/2011/01/04/vfs-kernel-space-user-space-2/)

どのような見方が正しいかを教えてくれる人はいますか?

答え1

AMD64とそのクローン、ix86では、Linuxはリング0と3のみを使用します。とにかく、他の一般的なアーキテクチャには「リング」がないので、それを完全に使用することは完全に移植性がありません。さらに、Linuxはモノリシックです。リング全体のアイデアは、マイクロカーネルをリング0で実行でき、サービスプロセスがより高いリングで実行され、マイクロカーネルが混乱しないようにし、最後にユーザースペースが最も高いリングで実行されるようにすることです。できません。ダメージがすごいです。

答え2

参考資料を提供できますか?私はあなたが(私が知っている限り)リング0(カーネル)と3(ユーザー)だけを使用しているLinuxについて話しているとします。

編集する:

オペレーティングシステムの設計によって異なると思います。マイクロカーネルアーキテクチャでは、内部ループを使用できます。特定のシステム(例:Linux)についてお問い合わせください。この質問は、特定のオペレーティングシステムでのみ回答できると思います。ただし、ほとんどの場合、x86 ベースのオペレーティングシステムは「カーネル」(0) と「ユーザー」(3) のみを使用します。

答え3

仮想化状態で実行されていない既存のオペレーティングシステムの場合、カーネルスペースとring0は権限の観点から同義語です。ただし、違いと共通点を強調するために別々に説明する必要があります。

Kernel space- オペレーティングシステムには通常、カーネルスペースとユーザースペースという2つの実行モードがあります。カーネルスペースは、オペレーティングシステムの特権コード(スケジューラ、デバイスドライバなど)が存在する場所です。その使命は、システム全体を管理し、安定した動作を保証することです。ユーザ空間には、カーネル空間が提供する機能を利用するウェブブラウザなどの処理が含まれる。

Rings- Intelプロセッサには4つのレベルの操作権限があります。これをリングといいます。リング 0 は最高の権限を持ち、リング 3 は最も低い権限を持ちます。コンピュータメモリのすべての領域にこれらのレベルが表示されることがあります。リング0によってアクセス用にマークされたメモリ領域はリング0のコードのみにアクセスできますが、リング3によってアクセス用にマークされたメモリ領域はすべてのリングでアクセスできます。これは、低い特権レベル(高リング)で低信頼性コードを実行し、より高い特権レベル(低リング)で高信頼性コードを実行すると、前者が後者に影響を及ぼすことがないようにするメカニズムを提供します。どのコードがどのリングで実行されるかをプログラムで設定できます(権限レベル)。

設計を簡素化し、コードの移植性を高めるために(ARMなどの非Intel CPUには4リングアーキテクチャはありません)、ほとんどのオペレーティングシステムは4つのリングのうち2つだけを使用します。これらは通常ring0とring3です。カーネルはring0で実行され、カーネルスペースを設定します(明日オペレーティングシステムの開発者がカーネルをring0ではなくring1で実行できるようにすると、ring1はカーネルスペースを設定します)。アプリケーションはring3で実行され、ユーザースペースを構成します。

これはほとんどのオペレーティングシステムで従うルールです。しかし、私がオペレーティングシステムの開発者であれば、好きな方法でリングアーキテクチャを自由に使用できます。次のシナリオを検討してください
。 (カンザス=カーネルスペース、私たち=ユーザースペース、DD=デバイスドライバまたはカーネルモジュール、RX=リングX)

  1. カンザスr0では、私たちr3から - 最も一般的に使用されます。例えば。 Linux、Windowsなど
  2. カンザスr1では、私たちr3 - 仮想化設定では、ハイパーバイザーはRing0で実行されます。
  3. カンザスr0では、DDr1では、私たちr3 - 一部の研究プロジェクトでは、障害のあるデバイスドライバからカーネルを保護するためにこの設定を使用します。
  4. カンザスr0では、DDr3では、私たちr3では、マイクロカーネルはこの設定を使用します。
  5. カンザスr0では、私たちr0では、すべてが同じリングにあります。一部の研究オペレーティングシステム(MicrosoftのSingularityなど)はこの設定を使用します。米国からKSを保護するには、他のメカニズムを使用してください。 (MS DOS、Windows 98などの以前のオペレーティングシステムではこの機能を使用しています。KSは米国で保護されていないため、オペレーティングシステムの競合が頻繁に発生します。)
  6. カンザスr3では、私たちr0で - 言うことはできません。米国にさらに特権を付与すると、米国はKSを腐敗させる可能性があります。そのような構成を見たことはありませんが、そのようなオペレーティングシステムを作成したい場合は何もブロックできません。

注:x86アーキテクチャIntel CPUを呼び出すなど、作成時にいくつかの単純化を行いました。今、複雑なことを心配しないでください。

関連情報