• Bağış
  • İş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.

    Benzer Yazılar:

    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 739 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.


    Category: C/C++, işletim sistemleri

    Leave a Reply