「カーネルモード」と「ユーザーモード」はハードウェア特性かソフトウェア特性ですか?

「カーネルモード」と「ユーザーモード」はハードウェア特性かソフトウェア特性ですか?

プロセスの実行を処理するには、「カーネルモード」と「ユーザーモード」という2つのモードがあることを読みました。 (Linuxカーネルについて学ぶ、第3版)これはLinux(カーネル/ユーザー)が制御するハードウェアスイッチですか、それともLinuxカーネルが提供するソフトウェア機能ですか?

ベストアンサー1

カーネルモードとユーザーモードはハードウェア機能、特にプロセッサ機能です。中級および高度なシステム(PC、フィーチャーフォン、スマートフォン、最も単純なネットワークデバイスを除くすべてのデバイス)用に設計されたプロセッサには、この機能が含まれています。カーネルモードは、管理モード、特権モードなど、さまざまな名前を持つことができます。 x86(PCのプロセッサタイプ)では「リング0」と呼ばれ、ユーザーモードは「リング3」と呼ばれます。

プロセッサのレジスタは、カーネルモードかユーザモードかを示す記憶ビットを有する。 (これらのモードが2つ以上のプロセッサでは1ビット以上になることがあります。)特定の操作はカーネルモードでのみ実行できます。特に制御レジスタのレジスタを変更して仮想メモリ構成を変更します。メモリ管理ユニット。さらに、ユーザーモードからカーネルモードに切り替える方法はほとんどなく、すべてカーネルコードによって制御されるアドレスにジャンプする必要があります。これにより、カーネルモードで実行されるコードがユーザーモードで実行されているコードがアクセスできるメモリを制御できます。

Unixファミリーオペレーティングシステム(およびプロセス分離機能を備えた他のほとんどのオペレーティングシステム)は2つの部分に分けられます。

  • カーネルはカーネルモードで実行されます。カーネルはすべてを行うことができます。
  • プロセスはユーザーモードで実行されます。プロセスはハードウェアにアクセスできず、明示的に共有されていない限り、他のプロセスのメモリにアクセスすることはできません。

したがって、オペレーティングシステムはハードウェア機能(特権モード、MMU)を利用してプロセス間の分離を実行します。

マイクロカーネルオペレーティングシステムに基づくアーキテクチャは、カーネルモードで実行されるコードが少なく、さらに細分化されています。

ユーザーモードコードはシステムコール:カーネルコードから事前定義された位置にジャンプします。

ハードウェアペリフェラルがCPUの注意を要求する必要がある場合は、CPUをカーネルモードに切り替えて、カーネルコードから事前定義された場所にジャンプします。これは…邪魔する

追加読書

おすすめ記事