Unix / Linuxでプログラムを実行すると、後で正確に何が起こりますか?
プロセスの作成を担当する人は誰ですか?
プロセス(私のプログラムのインスタンス)を開始するにはカーネルを呼び出す必要がありますか?この意味で、私のプログラムはカーネル呼び出しを実行するためにプロセッサで実行する必要があります。そうですか?それでは、最初のカーネル呼び出しはどのようにプロセスを開始しますか?行き詰まった路地に到達したのと同じですか?それでは、カーネルはどこに最初に現れますか?
申し訳ありません。これらすべてについて多くのドキュメントを読んでいますが、まだドットをリンクしたり、全体の写真を取得することはできません。誰かがこれについて簡単な用語で詳しく説明してもらえますか?
ベストアンサー1
デッドロックはまったく異なるものです。
プロセスの作成
伝統的に、Unixにはプロセスを作成する方法がありますfork
。
fork
システムコールです。既存のプロセスによって呼び出されます。これはカーネルへの呼び出しです。これにより、新しいプロセスが作成されます。新しいプロセスは以前のプロセスとほぼ同じで、両方のプロセスがfork
呼び出しから返されます。
プロセス間の主な違いは次のとおりです。の戻り値fork
。プロセスID。
exec
プロセスを区別するためにシステム/カーネル呼び出しも使用できます。別のプログラムを実行してください。
それでは、どのように始まったのですか?
プロセス1はカーネルに接続されています。両方とも同時にロードされます。カーネルがこのプロセスの実行を開始します。他のすべてはそこから来ます。プロセスは新しいプロセスを作成し、新しいプロセスは木の枝のように新しいプロセスを作成します(上記を参照)。