3

私には、多くの疑問を引き起こしている 3 つの質問があります。

  1. プログラム内の 1 つのスレッドが を呼び出すfork()場合、新しいプロセスはすべてのスレッドを複製しますか、それとも新しいプロセスはシングルスレッドですか?

  2. スレッドが を呼び出した場合exec()、パラメータで指定されたプログラムは、exec()すべてのスレッドを含むプロセス全体を置き換えますか?

  3. システムコールはプリエンプティブですか? たとえば、システム コールの途中でプロセスをスケジュールできるかどうか。

4

2 に答える 2

4

execからman execve: _

呼び出しスレッド以外のすべてのスレッドは、execve().

からman fork:

子プロセスは、単一のスレッド ( を呼び出したスレッド) で作成されfork()ます。

于 2012-05-05T18:27:44.040 に答える
1

書き込み #3: はい、直接的または間接的に別のスレッドを実行可能にするシステム コールを呼び出すことができます。そして、そのスレッドの優先度が現在のスレッドよりも高く、システムがその時点でそれをスケジュールするように設計されている場合は、そうすることができます。

于 2012-05-05T18:37:56.317 に答える