[LINUX:26512] Re: Kill yapamamak....

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Murat Koc (murat.koc@frontsite.de)
Date: Sat 24 Mar 2001 - 17:04:51 EET


-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

Merhaba,

3 u de eksik aslinda. Ama sizin soylediginiz en fazla yaklasan olmus.

zombie process, child process in olmesi ile olur parent in degil.

Burada onemli olan parent process de wait in cagrilmasidir. En kaba tabiri
ile child process exit yaptigi zaman parent process eger o sirada
henuz wait i cagirmamissa bu durumda kernel olen child process in
kullandigi butun kaynaklari serbest birakir fakat sadece exit status unu
tutar taa ki parent process i wait i cagirana kadar. Bu process e de
zombie process denir.

Izninizle biraz daha detayli anlatmak istiyorum.

Simdi oncelikle wait system call indan baslayalim.

Bir process sonlanmak icin olusturdugu child process in bitmesini wait
ile bekleyebilir. wait() ile donen deger ise sonlanmis olan child process
in Process ID sidir. wait su sekildedir

int wait(int *status);

eger child process oldugunde exit tarafindan dondurdugu deger NULL degilse
bu deger wait tarafindan status ta tutulur. 3 tane durum vardir donus
degeri olarak PID in dondugu.

1-) child process exit() cagirmissa
2-) child process bir signal tarafindan sonlandirilmissa
3-) child process sonlandirilmissa ama yani trace edilip sonlandirilmissa
    debugger olayinda oldugu gibi.

eger child process exit oldugunda parent process wait i cagirmissa sorun
yok parent process onun son buldugunu anliyor ne gerekiyorsa yapiyor.

eger child process exit oldugunda parent process wait i cagirmamissa iste
o zaman child process zombie oluyor.

Aslinda problem olan sey ise bu degil. Peki ya child process olmeden once
parent process olurse? problem olan sey bu oluyor iste.

Merak edecek olur diye bunu da kisaca anlatayim.

O zaman bir kere child process in PPID (parent process Id) aynen gecersiz
oluyor cunku parent yok artik. Bu durumda kernel bu processleri buluyor ve
onlarin (artik onlara orphan process deniyor) parent process id lerini 1
(yani init) yapiyor boylece bu child process ler parent larinin
sonlandigini anlamiyorlar.

SIGCHLD e gelince bu signal i ignore etmek zombie olusmasini engellemek
icin bir yontem. Bu signal in amaci parent processin wait i cagirarak
child processinin exit status unu almasina izin vermek. siz bu signal i
ignore ederseniz yani banane child lardan derseniz onlar islerini yapar
bitirir ve siz (tabii yani parent:))) bu signal i ignore ederseniz
kernel sizin bununla ilgilenmediginizi anlar ve o process i zombie process
haline donusturmez.

artik daha ayrintili bilgi icin

man wait
man signal
/usr/src/linux

gibi secenekler var.

Benim bildigim kadari ile durum boyle umarim zombie konusunda bir miktar
aydinlatici olmusumdur. Daha fazlasi da cok ayrintiya girecek onun icin
burada kesiyorum.

> Bence ilk tan?m daha do?ru. Bildi?im kadar?yla ?ocuk prosesin g?revi bitip
> ?lece?i zaman anne prosese bir sinyal g?nderir(SIGCHLD). E?er anne proses bu
> sinyali al?p i?lemez (veya almaz tam olarak bilemiyorum) ise ?ocuk proses
> zombie durumuna ge?er.
>
> ?ocuk proses ile anne proses aras?ndaki ba?? kald?ran sistem ?a?r?lar?
> mevcut ve sunucu g?revi yapan programlar bir ?ekilde bu ?a?r?lar?
> kullan?yorlar. Bir sunucu ?al??t?r?ld???nda arka plana ge?mek i?in
> ?al??t?r?lan as?l proses bir ?ocuk proses yarat?r. Gerekli sistem ?a?r?lar?
> yap?ld?ktan sonra anne proses ?l?r ve ?ocuk proses arka planda ?al???r.
> (Buraya nas?l geldik anlamad?m ama neyse..)
>
> -----Original Message-----
> From: linux@listweb.bilkent.edu.tr [mailto:linux@listweb.bilkent.edu.tr]On
> Behalf Of Ilker Gokhan
> Sent: 23 Mart 2001 Cuma 20:03
> To: Multiple recipients of list LINUX
> Subject: [LINUX:26486] Re: Kill yapamamak....
>
>
> Tanimi tam anlamadigim icin bir de ben yapmak istedim. Benim bilfdigim
> kadariyla zombie child in sonuclanmasi ile degil tam tersi parent in
> sonlanmasindan kaynaklanir. Aksi halde parent process kapatildiginda zombie
> olurdu. Bence parent/child/zombie ilsikisi su sekilde olur. Unix de fork ile
> yaratilan child process parent a bagimli olarak calisir. Parent process
> istenmemis bir sekilde oldugunde yada durdugunda, child process de olur,
> olmelidir. Olmedigi noktada -ki cok fazla gerceklesmez- zombie olusur.
> Zombie process amacsiz calisan bir processtir CPU yemez ama dahili process
> tablolarinda bos yere alan kaplar. *Mumkunse* sistem zombielerden reboot ile
> kurtarilir.
> Saygilarimla,
> Ilker G.
> > Kimden: Oguz Kutlu Asik [mailto:oguz@k2net.com.tr]
> > Bir child process sonuclandiginda, parent process i onun
> > sonuclandigini
> > ilan edene kadar zombie statusune konur. Parent process bazi
> > durumlarda
> > bu ilani yapamadan sonuclanir ve child process zombie olarak
> > kalir. Zombie
> > process zaten calismayan bir process oldugu icin kill edemezsiniz. Yok
> > etmenin tek yolu reboot etmektir. Zombie process ler resource yemezler
> > durmasinin da bir sakincasi yoktur.

IYI CALISMALAR

                                                                MURAT KOC
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iQIXAwUBOry2nr6uWt8ry/OwFANs8Af/TmSfqmuJWIYoenHW/gbY20hkHqtGId/P
VFMVOmXXNHRg1beDBa55FwnpXbuldWRblO5hxjlgkedv3xLt4joYQIRdpPmq/iv2
cz76EbFqHY61FeUrzBO/LJwF/yDs2MMxhrWgOwmSCpjaLy6UpCaUAnav3+l7+/1o
RpMeBNRpdCaPlWzeeRE035cENK332VlsVMsJT3Uo1vmEy2bczS+WIv5lTanzxLFh
TU+sFpdHzFmjjnb7uwHm8Qp2ZQJ29Kkc9NTzJWXCFaca0l1/js8Evl2NlXrDEJbe
ayL49zPMzaI0Ax+c9soz257DsMaQLUmj+P2QrD69lWmSoK3Q7hoKcAf/Z8xevGLZ
U2IVIAcEP43vIcchH3pQHPFHMRDTUC+GHlU1tS06GjyZ9UHCn2Ut0n27sV3mllun
7a/wVnOWD1oT6LCJqbKPww7ccfOYr4RQycE3yVIRzPvo5I9PI16/yJO2LU8t5Fcy
uUkx91HDNnKZA6bbHQhHwsfIX+cXaR2TS9+I3AMkzVp5Do6CMR0dz/LKD5+Rllgk
wqfVZsaZge3jlbKUzVc+4Cz6rxeLdpUd02WfggZ49HFrD4GOCQCqVIs1twKJP5Mu
9D4x7J3uqICQEmMdJ+F5fJDF+lK6DnXvtAXZkc+KWke6x/Y6lfnywlnaSZJMkhgJ
2+mHXWHrHwwN8g==
=SNyA
-----END PGP SIGNATURE-----

 
 Listeden cikmak icin:
          unsub linux
 mesajini listeci@bilkent.edu.tr adresine gonderiniz.
   Lutfen Listeci icin MIME / HTML / Turkce Aksan kullanmayin.
 Listeci arayuzu: http://listweb.bilkent.edu.tr/yardim/bilkent/linux.html
 Liste arsivinin adresi: http://listweb.bilkent.edu.tr/


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.