システムコール中にプロセスを終了できますか?

システムコール中にプロセスを終了できますか?

現在、ユーザースペースプロセスのコンテキストでカーネルモードで実行されている非常に時間がかかるシステムコールがあるとします。これらのシステムコールが実行されている間、システムコールはユーザープロセスSIGKILLに送信されます。この場合、何が起こりますか?プロセスはすぐに終了するか、システムコールが終了するのを待ちますか?プロセスが即座に終了すると、割り込みハンドラの実行中にユーザースペースプロセスが終了した場合にも同じように適用されます(割り込みハンドラは任意のユーザースペースプロセスのコンテキストで実行される可能性があるため)奇妙に聞こえますが、非常に重要です。割り込みハンドラの操作が中断される可能性があります。

ベストアンサー1

一部のシステムコールは中断されることがあります(例を参照siginterrupt(3))。それ以外の場合は、呼び出しがユーザーモードに戻ったときにのみ信号が転送されます。

おすすめ記事