Linuxはプロセスをどのように「殺す」のでしょうか?
私は数十年の間コンピューターで、10年の間Linuxで専門的に仕事をしてきましたが、実際には魔法とは違い、ほとんどのOSの機能をブラックボックスとして扱っていることに困惑させられます。 今日、私はこのkillコマンドについて考えましたが、1日に複数回(「通常」と-9フレーバーの両方で)使用している間、それが舞台裏でどのように機能するかはまったくわかりません。 私の観点からは、実行中のプロセスが「ハング」している場合、killそのPID を呼び出すと、突然実行されなくなります。魔法! そこで実際に何が起こるのでしょうか?マンページは「シグナル」について述べていますが、確かにそれは単なる抽象化です。kill -9プロセスへの送信は、プロセスの協力(シグナルの処理など)を必要とせず、単に終了させます。 LinuxはプロセスがCPU時間を占有し続けるのをどのように停止しますか? スケジューリングから削除されますか? 開いているファイルハンドルからプロセスを切断しますか? プロセスの仮想メモリはどのように解放されますか? Linuxがプロセスによって占有されるすべてのリソースへの参照を保持しているメモリ内のグローバルテーブルのようなものがあります。プロセスを「強制終了」すると、Linuxは単純にそのテーブルを通過してリソースを1つずつ解放しますか? 私は本当にすべてを知りたいです!