「execなしでvfork」を実行するプロセスは、どのように中断することなく長いスリープモードになりますか?

「execなしでvfork」を実行するプロセスは、どのように中断することなく長いスリープモードになりますか?

存在するこの回答ユーザーの提案

通常、中断のないスリープモードは長続きしませんが、Windowsでは、破損したドライバや破損したユーザースペースプログラム(execなしのvfork)のため、Dで永久にスリープモードになることがあります。

バグのないカーネルのDにユーザースペースプログラムが実際にどのようにロックされるのですか?ユーザーモードがわざとDに閉じ込められるのは小さなバグだと思います...

ベストアンサー1

プロセスによって呼び出されると、親プロセスは、子プロセスがまだvfork実行されていない限り(2つの認証された機能とその親戚など)、D状態のままになります。親プロセスは依然として呼び出しを実行しているため、状態 D にあります。_exitexecveexecveexecvpvfork

子どもがこのようなことをすると(愚かだが効果がある)、親は状態Dに無期限に残り、子は状態Rに無期限に残ります。

if (!vfork()) while (1) {}

おすすめ記事