システムコールはプロセスですか? [閉鎖]

システムコールはプロセスですか? [閉鎖]

私が理解したのは、システムコールは例外や割り込みを介して実行されるカーネルコードのセットです。システムコールがプロセスかどうかを知る必要がありますか?

答え1

プロセスはシステムコールを行うことができます。もともとx86システムでは、どの呼び出しが必要かを示すためにレジスタをロードしてから "int 0x80"コマンドを実行することが含まれていました。このソフトウェア割り込み命令は x86 プロセッサがカーネルに切り替わり、レジスタの値を確認し、オープン、リード、ライト、クローズ、ナビゲーション、または必要なシステムコールを実行します。

システムコールがプロセスであるかどうかを尋ねることは、「鳥が旅行計画ですか?」と尋ねるのと同じです。正解はいいえ。鳥を見るために旅行を計画することもできます。有用なタスクを実行するために、プロセスはシステムコールを実行します(理論的には、他のプロセスは共有メモリを監視したりptraceを使用したりできるため、プロセスはシステムコールを実行する必要はなく、100%応答はありません)。同じ種類のものではありません。

答え2

プロセスはいくつかのコードの実行中のインスタンスです。バイナリ/bin/bashを例にしてみましょう。コードがディスクに存在します。 /bin/bashが実行されるたびに新しいプロセスが作成されます。

与えられた瞬間に、各CPUはユーザーモードまたはカーネルモードで実行されます。ユーザモードはユーザ空間コードの実行を示し、カーネルモードはカーネルコードの実行を示す。

システムコールは、一部のユーザーコードがカーネルモードに入る手段です。システムコールはプロセスコンテキスト内で行われます。システムコールが実行されると、同じプロセスがカーネルモードに入ります。このシステムコールを実行するための新しいプロセスは作成されません。

関連情報