ユーザースペース

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

最新のコンピュータオペレーティングシステムは通常、仮想メモリカーネル空間ユーザー空間に分離します[a]主に、この分離は、悪意のあるまたは誤ったソフトウェア動作からの メモリ保護とハードウェア保護を提供するのに役立ちます。

カーネルスペースは、特権オペレーティングシステムカーネル、カーネル拡張、およびほとんどのデバイスドライバー を実行するために厳密に予約されています。対照的に、ユーザースペースは、アプリケーションソフトウェアと一部のドライバーが実行されるメモリ領域です。

概要

ユーザーランド(またはユーザースペース)という用語は、オペレーティングシステムのカーネルの外部で実行されるすべてのコードを指します。[1]ユーザーランドとは、通常、オペレーティングシステムがカーネルと対話するために使用するさまざまなプログラムやライブラリを指します。入出力を実行するソフトウェア、ファイルシステムオブジェクトを操作するソフトウェア、アプリケーションソフトウェアなど です。

各ユーザースペースプロセスは通常、独自の仮想メモリスペースで実行され、明示的に許可されていない限り、他のプロセスのメモリにアクセスすることはできません。これは、今日の主流のオペレーティングシステムにおけるメモリ保護の基礎であり、特権分離の構成要素です。別のユーザーモードを使用して、効率的な仮想マシンを構築することもできます。PopekおよびGoldbergの仮想化要件を参照してください。十分な権限があれば、デバッガーの場合と同様に、プロセスはカーネルに別のプロセスのメモリスペースの一部を独自のプロセスにマップするように要求できますプログラムは共有メモリを要求することもできますプロセス間通信を可能にするために他の技術も利用可能ですが、他のプロセスを持つ領域

Linux内のさまざまなレイヤー、ユーザーランドカーネルスペースの分離も示しています
ユーザーモード ユーザーアプリケーション bashLibreOfficeGIMPBlender0 ADMozilla Firefox、..。
システムコンポーネント initデーモン
OpenRCrunitsystemd ..。
システムデーモン
polkitdsmbdsshdudevd ..。
ウィンドウマネージャー
X11WaylandSurfaceFlinger(Android)
グラフィック
MesaAMD Catalyst、..。
その他のライブラリ:
GTKQtEFLSDLSFMLFLTKGNUstep、..。
C標準ライブラリ fopen、、、、、、 ...(最大2000サブルーチンglibcは高速であり、execvmuslおよびuClibc組み込みシステムを対象としbionicはAndroid用に作成されています。すべてPOSIX / SUS互換を目指しています。 mallocmemcpylocaltimepthread_create
カーネルモード Linuxカーネル stat、、、、、、、、、、など約380のシステムコール)spliceLinuxカーネルのシステムコールインターフェイス(SCI 、POSIX / SUS互換目指しています[ 2]dupreadopenioctlwritemmapcloseexit
プロセススケジューリング
サブシステム
IPC
サブシステム
メモリ管理
サブシステム
仮想ファイル
サブシステム
ネットワーク
サブシステム
その他のコンポーネント:ALSADRIevdevklibcLVMデバイスマッパーLinuxネットワークスケジューラNetfilter
LinuxセキュリティモジュールSELinuxTOMOYOAppArmorSmack
ハードウェア(CPUメインメモリデータストレージデバイスなど)

実装

カーネルモードとは別にユーザーモードを実装する最も一般的な方法は、オペレーティングシステムの保護リングです。次に、保護リングはCPUモードを使用して実装されます。通常、カーネルスペースプログラムは、スーパーバイザーモードとも呼ばれるカーネルモードで実行されます。ユーザースペースの通常のアプリケーションは、ユーザーモードで実行されます。

多くのオペレーティングシステムは単一のアドレス空間のオペレーティングシステムであり、すべてのユーザーモードコードに対して単一のアドレス空間があります。(カーネルモードコードは、同じアドレススペースにある場合もあれば、2番目のアドレススペースにある場合もあります)。他の多くのオペレーティングシステムには、プロセスごとのアドレススペースがあり、ユーザーモードプロセスごとに個別のアドレススペースがあります。

実験的なオペレーティングシステムで採用されている別のアプローチは、すべてのソフトウェアに単一のアドレススペースを用意し、プログラミング言語のセマンティクスに依存して、任意のメモリにアクセスできないようにすることです。アプリケーションは、許可されていないオブジェクトへの参照を取得できません。アクセス。[3] [4]このアプローチは、JXOS、Unununium、およびMicrosoftのSingularity研究プロジェクトで実装されています。

も参照してください

メモ

  1. ^ DOSWindows3.1xなどの古いオペレーティングシステムは、このアーキテクチャを使用していません。

参考文献

  1. ^ 「ユーザーランド、n。」 ジャーゴンファイルエリックS.レイモンド2016年8月14日取得
  2. ^ 「管理ガイドREADME」git.kernel.org
  3. ^ 「Unununiumシステムの紹介」2001年12月15日にオリジナルからアーカイブされまし2016年8月14日取得
  4. ^ "uuu / docs / system_introduction /uuu_intro.tex"UUUシステム紹介ガイド2001-06-01 2016年8月14日取得

外部リンク