fork, pid, Zombie Process

Kategori: Parallel Programming , 18 Ekim 2019 , JanFranco


fork fonksiyonu, bir işlemin kopyalanmasını sağlar. Örneğin process1.exe adında bir işlemimiz var. fork() fonskiyonunu kullanırsak aynı işlemden bir tane daha olur. İki işlem de aynı kodu çalıştırır ve bu işlemler arasında parent - child ilişkisi olur.

pid, process id anlamına gelen bir kısaltmadır. İşletim sistemi fark etmeksizin, her işlemin bir pid numarası olur ve bu eşsizdir. Aşağıda pid numaralarını ve fork fonksiyonunu kullanarak bir pseudo kod yazılmıştır. Bu kod pid -1 olursa, 1 olursa ve diğer durumlarda olmak üzere 3 kısma ayrılmıştır. Process id nin -1 olma durumu hata durumudur. İşletim sisteminden kaynaklanabilir. Çok sık rastlanmasa da kodda belirtmek de fayda vardır. Process id nin 0 olma durumu, child process durumudur. fork() fonksiyonunu kullanarak bir child process oluşturduğumuzda, oluşan process default olarak 0 numarasını alır. Diğer durumlardan kasıt process id numarasının sıfırdan büyük olma durumudur ve bu da parent process'i ifade eder. Böylelikle iki farklı program, process aynı kodu çalıştırır, fakat ikisinin de process id'leri farklı olduğundan, kodun farklı kısımlarını çalıştırmış olurlar:


pid_t pid = fork();
if(pid == -1){
	...
}
else if(pid == 0){
	...
}
else{
	...
}
Parent process sonlandırılırken önce child process'in sonlanmasını bekler. Çünkü parent process sonlanır ve child process sonlanmazsa, child process, zombie process'e dönüşür. Biz göremeyiz ve bilgisayar kaynaklarını tüketmeye devam eder.


Sonraki Yazı: fork()
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın