İşlem Çatallanması (Process Forking)
Yazan : Şadi Evren ŞEKER
Yazılan her program ilk başta tek bir işlem olarak çalışmaya başlar. Temel olarak derlendikten(compile) hemen sonra bağlanarak (link) hafızaya yüklenir (load).
Yüklenen programı, işletim sistemi (operating system) bir işlem (process) olarak çalıştırır. Ancak bazı işlemler yüklendikten ve çalışmaya başladıktan sonra yeni işlemler üretebilirler.
Aslında bu işlem üretme çalışan işlem üzerinde bir çatallanmaya sebep olmak demektir. Bu çatallanmayı destekleyen dillerde bu iş için özel fonksiyonlar bulunur. Örneğin C dilindeki fork() fonksiyonu bu amaçla geliştirilmiştir.
C dilinde yazdığımız bir programda daha önceden yazılmış ve işletim sisteminde bulunan (tercihen linux) “ls” komudunu çağıracağımızı düşünelim.
#include<stdio.h>
int main()
{
int pid;
pid=fork();
if(pid=-1)
{
printf("\n Çatallamada hata oldu");
exit(0);
}
if(pid==0)
{
printf("\n Çocuk işlem......");
execlp("/bin/ls","ls",NULL);
}
else
{
printf("\n Ata işlem");
wait(pid);
printf("Tamamlandı");
exit(0);
}
}
Yukarıdaki kodda önce bir fork fonksiyonu çağrılmış ardından if kontrolleri ile fork fonksiyonundan dönen integer değer kontrol edilmiştir. Bunun anlamı aslında çalışan işlemin (process) kopyalanmasıdır. Yani fork fonksiyonu çağrılınca aynı programdan iki kopya hafızada çalıştırılır. Arada tek fark fork fonksiyonundan dönen değerdir. Basitçe çocuk işlemde (child process) dönen değer 0 iken ata işlemde(parent process) dönen değer 1′dir.
Şayet fork işleminde bir hata olursa dönen değer -1 olur, bunu hata kontrolü için yukarıda da gösterildiği üzere kullanabiliriz.
« Birliktelik, Münasebet ve Oluşum (Association, Aggregation and Composition) | Kabuk Sıralama (Shell Sort) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'İşlem Çatallanması (Process Forking)' isimli yazı 20 Dec 2008 tarihinde, saat: 01:54 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 477 defa okunmuştur.
Benzer yazıları C/C++, işletim sistemleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
İşlem Çatallanması (Process Forking)
İşlemler arası iletişim (Inter process communication (IPC))
Stokastik Süreç (Stochastic Process)
Çok işlemlik (Multi processing)
Semafor (Semaphore, Flama, İşaret)
İçerik Değiştirme (Context Switching)
Yığın İş ( Batch Job, Batch Process )
Hafıza Yönetimi (Memory Management)
FTP (File Transfer Protocol)(Dosya Transferi Protokolü)
Kara Kutu Yaklaşımı (Black Box)
Priority Queue (Öncelik Sırası, Rüçhan Sırası)
Bağlantılar