5

私はこのOSのことは初めてです。カーネルは他のすべてのプログラムの実行とそれらが必要とするリソースを制御するため、それも CPU によって実行されるべきだと思います。もしそうなら、どこで実行されますか? そして、どのCPUが実行されるべきかがカーネルによって制御されていると思う場合、CPUがカーネル自体を実行している場合、カーネルはどのようにCPUを制御します!!!..

私にとってはパラドックスのように思えます...説明してください...ちなみに、これらのCPUモードをまったく取得できませんでした...カーネルがすべてのプロセスを制御している場合...なぜこれらのCPUモードなのですか? それらが存在する場合、それらはソフトウェア(OS)またはハードウェア自体によって実装されていますか??

ありがとう...

4

2 に答える 2

5

簡単な答え。x86 などのプラットフォームでは、カーネルが CPU の割り込みおよびコンテキスト切り替え機能を完全に制御します。そのため、カーネルはほとんどの場合実行されていませんが、CPU が切り替えるプログラムを決定し、そのプログラムの実行を許可する機会が頻繁にあります。カーネルのこの部分は、スケジューラと呼ばれます。それ以外では、カーネルは、プログラムがシステムコール (ディスクドライブなどのハードウェアへのアクセス要求など) を行うたびに実行する機会を得ます。

PSカーネルが実行中のプログラムを停止し、CPUの制御を奪い、別のプログラムをスケジュールできるという事実は、プリエンプティブマルチタスキングと呼ばれます

更新: CPU モードについては、x86 スタイルのリングのことだと思いますか? これらは、現在実行中のコードに対する CPU の許可レベルであり、CPU は、現在実行中のプログラムが「カーネル」であり、必要なことを実行できるかどうか、または許可レベルが低いプログラムで実行できないかどうかを判断できます。特定のもの(コンテキストスイッチの強制や仮想メモリのいじりなど)

于 2012-08-10T13:08:22.607 に答える
2

パラドックスはありません。

カーネルは、制御するマシン上で実行される「プログラム」です。これは、マシンの起動時にブート ローダーによって読み込まれます。

そのタスクは、アプリケーションにサービスを提供し、アプリケーションを制御することです。そのためには、実行中のマシンを制御する必要があります。

詳細については、こちらをお読みください: http://en.wikipedia.org/wiki/Operating_System

于 2012-08-10T13:08:13.910 に答える