web-dev-qa-db-ja.com

ゾンビプロセスはメモリ不足を引き起こしますか?最終的にinitプロセスによって強制終了されますか?

私はゾンビプロセスの問題を抱えており、初めて会ったのです。したがって、この問題と概念を解決する方法がわかりません。 1年前に投稿された記事を読んで( link )、次のように言った:

それらの多くが存在しない限り、そのようなプロセスを許可しても害はありません。ゾンビは最終的に(wait(2)を呼び出すことにより)その親によって刈り取られます。元の親が自身の終了前にそれを刈り取っていない場合、initプロセス(pid == 1)は後でそれを行います。

しかし、この時点で、私は理解できず、2つの質問があります。 Plzはこれを知っている人を助けます。

  1. つまり、最終的にゾンビプロセスのエントリがプロセステーブルから削除され、initプロセス(Pid = 1)によって正常に強制終了されるということですか??
  2. ゾンビプロセスは、割り当てられたメモリスペースを返さないため、メモリ不足の問題を引き起こすと思います。

私は正しいですか??

2
Kim Hyung-seok
  1. ゾンビプロセスはシステムリソースを使い果たしません。 (実際には、それぞれがプロセス記述子を保存するために非常に少ない量のシステムメモリを使用します。)ただし、各ゾンビプロセスはプロセスID(PID)を保持します

  2. Linuxシステムには、有限数のプロセスIDがあります(32ビットシステムではデフォルトで32767)。ゾンビが非常に速い速度で蓄積している場合-たとえば、不適切にプログラムされたサーバーソフトウェアが負荷のかかったゾンビプロセスを作成している場合-使用可能なPIDのプール全体が最終的にゾンビプロセスに割り当てられ、他のプロセスが起動できなくなります。

  3. ゾンビプロセスを取り除く

    kill -s SIGCHLD pid
    

クレジットは次のとおりです: HTG

2
rɑːdʒɑ