-1

カーネルはデーモンですか? (INT 命令による) トラップを発生させることが、カーネルと通信する唯一の方法ですか? カーネル サブルーチンを呼び出すすべてのシステム コールで INT トラップが発生しますか? ユーザー アプリはカーネル デーモンとは異なるプロセスで実行されますか? ユーザー プロセスはカーネル デーモンによって生成されますか?

4

3 に答える 3

1

カーネルはデーモンですか?

いいえ。

(INT 命令による) トラップを発生させることが、カーネルと通信する唯一の方法ですか?

はい、カーネルとユーザー空間アプリケーションはリングと呼ばれる異なる特権レベルにあるためです。カーネルはリング 0 と呼ばれるスーパーバイザー モードで実行され、ユーザー アプリケーションはユーザー モードと呼ばれるリング 3 で実行されます。

カーネル サブルーチンを呼び出すすべてのシステム コールで INT トラップが発生しますか?

はい、彼らがやります。

ユーザー アプリはカーネル デーモンとは異なるプロセスで実行されますか? ユーザー プロセスはカーネル デーモンによって生成されますか?

これはよくわかりません、詳しく教えてください。

于 2013-10-31T17:01:00.743 に答える
0

(INT 命令による) トラップを発生させることが、カーネルと通信する唯一の方法ですか?

いいえ。まず、INTトラップの古いメカニズムです。現在、ほとんどの OS はSYSENTERx86 および x86_64 プラットフォームで使用されています。他のアーキテクチャには、さまざまな種類のソフトウェア割り込み/トラップ命令があります。

また、カーネルと通信する方法はトラップだけではありません。カーネルは、ユーザー モード プロセスに割り当てられたメモリを含め、任意のメモリにアクセスできるため、共有メモリは非常に有効です。

カーネル サブルーチンを呼び出すすべてのシステム コールで INT トラップが発生しますか?

カーネルルーチンを「呼び出す」方法は、トラップ ( SYSENTER) を使用することです。カーネルが処理する共有メモリキューデータなどの他のメカニズムですが、それがサブルーチン呼び出しであるとは言えません。

于 2013-10-31T17:06:47.583 に答える
0

プロセス、デーモンなどの概念全体は、カーネルによって作成された抽象化です。CPU レベルでは、分割のレベルは 2 つだけです。コードを並行して実行するプロセッサ コアと、使用できる命令を決定する特権リングがあります。

カーネルはリング 0 で実行されます (一部のドライバーはリング 1 と 2 に存在する場合もあります)。ユーザー空間コードは ring3 で実行されます。ring3 コード (ユーザー空間プロセス) から ring0 コード (カーネル) に制御を移すには、割り込みや sysenter 命令などの特別なプロセッサ メカニズムが必要です。

于 2013-10-31T17:09:56.777 に答える