1
do_fork()はプリエンプションから安全ですか?つまり、新しいタスク構造体をレディキューに挿入する前に、親プロセスが新しいタスク構造体を割り当ててから先取りすることができますか?カーネル:do_fork()の実行中にプリエンプションが発生する可能性はありますか?
do_fork()はプリエンプションから安全ですか?つまり、新しいタスク構造体をレディキューに挿入する前に、親プロセスが新しいタスク構造体を割り当ててから先取りすることができますか?カーネル:do_fork()の実行中にプリエンプションが発生する可能性はありますか?
プリエンプションでは安全ではありません。
do_fork
は、sched_fork
を呼び出して、タスクを初期化します。その後、do_fork
は実行キューに入れるためにwake_up_new_task
を呼び出します。
これは、スケジュールされる前にプロセスを強制終了または終了できるように分離されています。
sched_fork
は、プリエンプションを無効にしますが、作業の完了後に有効にして、wake_up_new_task
を呼び出して実行キューに入れる前にカーネルがプリエンプトできるようにします。
これは私の2.6カーネルに関する知識に基づいています。