
存在するこの回答ユーザーの提案
通常、中断のないスリープモードは長続きしませんが、Windowsでは、破損したドライバや破損したユーザースペースプログラム(execなしのvfork)のため、Dで永久にスリープモードになることがあります。
バグのないカーネルのDにユーザースペースプログラムが実際にどのようにロックされるのですか?ユーザーモードがわざとDに閉じ込められるのは小さなバグだと思います...
答え1
プロセスによって呼び出されると、親プロセスは、子プロセスがまだvfork
実行されていない限り(2つの認証された機能とその親戚など)、D状態のままになります。親プロセスは依然として呼び出しを実行しているため、状態 D にあります。_exit
execve
execve
execvp
vfork
子どもがこのようなことをすると(愚かだが効果がある)、親は状態Dに無期限に残り、子は状態Rに無期限に残ります。
if (!vfork()) while (1) {}