İş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

Kullanıcı girişi yaparak ya da zorunlu olan * alanlarını doldurarak yorum yapabilirsiniz.

İsminiz *

Email adresiniz *

Web siteniz

Mesajınızı buraya yazabilirsiniz:

Bu Yazı Hakkında

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
Yapılan Son Yorumlar
Yakın Yazılar
Bağlantılar