[BSD] zombie process

Zahemszky Gábor Gabor at zahemszky.hu
2003. Jún. 20., P, 18:05:35 CEST


On Fri, Jun 20, 2003 at 02:33:14PM +0200, Adam Szilveszter wrote:
> Keresztes Ákos wrote:
> 
> >zombi kilövése:
> >root at signal2096 ~ # kill -9 40149
> >40149: No such process
> 
> Ja es a zombi definicioja szerint nem reagal mar a szignalokra. Ezert 
> "elohalott". Csak akkor terhet vegre "nyugovora", ha akad egy folyamat, 
> amelyik hajlando uj szuloje lenni, mert azert kerult ebbe a 
> szerencsetlen allapotba, mert a szulo folyamata eltunt folule, meg 
> mielott o befejezodhetett volna. A gyakorlatban ez a "vallalkozo" uj 
> szulo az init nevu folyamat lesz, es az vegre be fogja tudni onagysagat.

Sziasztok!

Csak mert szeretek tudálékos lenni, javítanék néhány hibát, és (talán)
megvilágítanék néhány (fél)információt.

Nem feltétlenül azért zombi, mert szüleje elhalt: a zombi állapot egy
processz életének _teljesen normális_ állapota.  Akkor kerül a processz
ilyen állapotba, amikor meghívja az exit(2) rendszerhívást, de a szülő
processz még nem vette el a rendszertől a (zombi) státuszkódját.  (Lásd
wait(2), wait3(2), waitpid(2) és hasonló nevű syscall-okat.)  Ezt teheti azért
(a szülő), mert elhalt, de ilyenkor normálisan a szülő elhalásakor az init
örökli a (későbbi) zombit, azaz mire zombi lenne, már van neki (mostoha)
szülője.  Illetve előállhat ez azért, mert a szülő processz trehányul van
leprogramozva.  Azaz ez nem _szerencsétlen_, hanem normális állapot.  Az a
szerencsétlenség, ha programozói hiba folytán te a zombit (huzamosabb)
ideig látod.

Természetesen mivel (a zombi) már túl van az exit(2)-en, tulajdonképp már
nincs, ezért persze már nem kapja meg a szignálokat.

És ha valakit a dolog precízebben érdekel, itt van néhány utalás:

Maurice Bach: The Design of the UNIX Operating System
(Prentice Hall, 1986. részletesebben: 6. fejezet, 147, 148. oldal)

vagy:

Samuel  Leffler, at all: The Design and Implementation of the 4.3BSD UNIX O. S.
(Addison-Wesley, 1989. 4. fejezet, 73-74. oldal)

vagy

M. Kirk McKusick, at all: The Design and Implementation of the 4.4BSD O. S.
(Addison-Wesley, 1996, 4. fejezet 80-85. oldal)

Természetesen millió egyéb könyvben van ez leírva, sőt valószínűleg máshol
is megtalálható a dolog (Net, Handbook?, mittudomén)

Zahy < Gabor at Zahemszky dot HU >

-- 
#!/bin/ksh
Z='21N16I25C25E30, 40M30E33E25T15U!' ;IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ ';set $Z ;for i { [[ $i = ? ]]&&print $i&&break;[[ $i = ??? ]]&&j=$i&&i=${i%?};typeset -i40 i=8#$i;print -n ${i#???};[[ "$j" = ??? ]]&&print -n "${j#??} "&&j=;typeset +i i;};IFS=' 0123456789 ';set $Z;for i { [[ $i = , ]]&&i=2;[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l i;};print "$j"




További információk a(z) BSD levelezőlistáról