Process Sonlandırma
Artık bir işlem oluşturulduğunda neler olduğuna göre, artık ihtiyacımız olmadığında ne oluyor? Önceden uyarayım, bazen Linux biraz karanlık bir hal alabilir...
Bir işlem, _exit sistem çağrısını kullanarak çıkabilir, bu işlem kullanılan kaynakları yeniden tahsis için serbest bırakacaktır. Dolayısıyla bir işlem sonlandırılmaya hazır olduğunda, çekirdeğe sonlanma durumunu sonlandırma durumu adı verilen bir şeyle bildirir. En yaygın olarak 0 durumu, işlemin başarılı olduğu anlamına gelir. Ancak, bir işlemi tamamen sonlandırmak için bu yeterli değildir. Ana işlem, wait system call'u kullanarak çocuk işlemin sonlanmasını onaylamalıdır ve bu, çocuk işlemin sonlanma durumunu kontrol eder. Bunu düşünmek korkunç biliyorum, ancak wait çağrısı bir zorunluluktur, sonuçta hangi ebeveyn çocuğunun nasıl öldüğünü bilmek istemez?
Bir işlemi sonlandırmanın başka bir yolu da yakında tartışacağımız sinyallerdir.
Orphan Processes
Bir ana işlem bir çocuk işlemden önce ölürse, çekirdek bir wait çağrısı almayacağını bilir, bu nedenle bunun yerine bu işlemleri "öksüz" yapar ve onları init'in bakımına verir (tüm işlemlerin annesi olduğunu unutmayın). Init, sonunda bu öksüzler için wait system call'u gerçekleştirecek ve böylece ölebilirler.
Zombie Processes
Bir çocuk sonlandığında ve ana işlem henüz wait çağrısını yapmadığında ne olur? Yine de bir çocuk işleminin nasıl sonlandığını görmek istiyoruz, bu nedenle çocuk işlemi bitmiş olsa bile, çekirdek çocuk işlemini bir zombi işlemine dönüştürür. Çocuk işleminin kullandığı kaynaklar hala diğer işlemler için serbest bırakılır, ancak bu zombi için işlem tablosunda hala bir giriş vardır. Zombi işlemleri ayrıca teknik olarak "ölü" oldukları için öldürülemez, bu nedenle onları öldürmek için sinyaller kullanamazsınız. Sonunda, ana işlem wait system call'u çağırırsa, zombi yok olacak, bu "hasat etme" olarak bilinir. Ana işlem bir wait çağrısı yapmazsa, init zombiyi evlat edinir ve otomatik olarak wait gerçekleştirir ve zombiyi kaldırır. İşlem tablosunda yer kapladıkları için çok fazla zombi işleminin olması kötü bir şey olabilir, dolarsa diğer işlemlerin çalışmasını engeller.
Last updated