プロセスが状態に設定されている場合、TASK_INTERRUPTIBLE
他のカーネルコンポーネントはそれを先取りできますか?これが真であれば、プロセスがwake条件を確認できず、wakeする機会を逃した可能性があると思います。
答え1
ステータスは、TASK_INTERRUPTIBLE
スケジューラを呼び出すときにジョブがスリープモードに移行する方法に関連しています。その名前は「中断可能な省電力モード」の略です。プリエンプションを制御しません(実際、LinuxはTASK_INTERRUPTIBLE
(オプションで)プリエンプトされる前に制御します)。
プリエンプションはスリープモードではありません。 CPU で開始された実行ジョブは、休止状態ではなく実行可能です。
ジョブのスリープ状態が別のスリープタイプに設定されている間にジョブがプリエンプトされると、TASK_INTERRUPTIBLE
完全な混乱につながる可能性があります。
2003年に、誰かがあなたが疑ったのと同じことを疑って、LKMLメーリングリストに投稿しました。
http://lkml.org/lkml/2003/4/14/262
カーネル開発者であるRob Loveのフォローアップとその他の議論をご覧ください。
ジョブはTASK_INTERRUPTIBLE
プリエンプティブ実行キューに残る必要があります。これを達成するためのハッキング(2003年以降)が上記のスレッドで議論されました。