私が理解したのは、システムコールは例外や割り込みを介して実行されるカーネルコードのセットです。システムコールがプロセスかどうかを知る必要がありますか?
答え1
プロセスはシステムコールを行うことができます。もともとx86システムでは、どの呼び出しが必要かを示すためにレジスタをロードしてから "int 0x80"コマンドを実行することが含まれていました。このソフトウェア割り込み命令は x86 プロセッサがカーネルに切り替わり、レジスタの値を確認し、オープン、リード、ライト、クローズ、ナビゲーション、または必要なシステムコールを実行します。
システムコールがプロセスであるかどうかを尋ねることは、「鳥が旅行計画ですか?」と尋ねるのと同じです。正解はいいえ。鳥を見るために旅行を計画することもできます。有用なタスクを実行するために、プロセスはシステムコールを実行します(理論的には、他のプロセスは共有メモリを監視したりptraceを使用したりできるため、プロセスはシステムコールを実行する必要はなく、100%応答はありません)。同じ種類のものではありません。
答え2
プロセスはいくつかのコードの実行中のインスタンスです。バイナリ/bin/bashを例にしてみましょう。コードがディスクに存在します。 /bin/bashが実行されるたびに新しいプロセスが作成されます。
与えられた瞬間に、各CPUはユーザーモードまたはカーネルモードで実行されます。ユーザモードはユーザ空間コードの実行を示し、カーネルモードはカーネルコードの実行を示す。
システムコールは、一部のユーザーコードがカーネルモードに入る手段です。システムコールはプロセスコンテキスト内で行われます。システムコールが実行されると、同じプロセスがカーネルモードに入ります。このシステムコールを実行するための新しいプロセスは作成されません。