• unix sistemlerde bir process'in kendi address space'ini payla$an yeni bir process yaratmasini saglayan system call.. bir i$e yaradigi $aibelidir..

    ayrica (bkz: copy on write)
  • solaris 2 ve birkac unix versiyonunda bulunan bir system call. copy on write kullanmaz, child process calistirildiginda parent process devre disi kalacaktir, ve child parentin alanini kullanir, dolayisiyla parent processin kullandigi page'ler de degismis olacaktir, bu yuzden dikkatli kullanilmasi ve childin parentin alanina degisiklik yapmayacagindan emin olunmasi gerekir. kopyalama olmadigindan process baslatilmasinda daha verimlidir, unix command line shell implementation bunu kullanir bazen.
  • linux sistem çağrısı* implementasyonunda, clone sistem fonksiyonunun bir varyantı olarak düşünülebilir. normal şartlarda fork ile yaratılan child process'e, çağrıyı gerçekleştiren ilgili parent process'den birtakım attribute'lar*** kopyalanır. sanal bellek* kullanımı bağlamında, parent process'in sanal adres alanı da benzer şekilde child process için aynen kopyalanır. lakin copy on write mekanizması aktif olduğundan, child process işbu read-only olarak işaretlenmiş bellek bölgelerine (sayfalara)* yazmaya kalktığında page fault oluşur ve işletim sistemi çekirdeği* ilgili sayfanın yazılabilir/okunabilir nitelikteki bir kopyasını çıkararak çocuğun* gönlünü alır, iki tarafa da çaktırmadan bellek izolasyonunu tatlıya bağlar. fakat görüldüğü üzere bütün bu işlemler sisteme ek bir maliyet bindirmektedir. işte, vfork sistem fonksiyonu tam bu noktada imdadımıza yetişmektedir.*

    vfork sistem fonksiyonu ile child process yaratılırken, parent process'e ait sayfa tablosu* kopyalanmaz (copy on write aktif değildir). dolayısıyla yukarıda söz edilen aşamalardan da geçilmez. bu durumda child process, ilgili sanal hafıza alanında herhangi bir değişiklik yaptığında bu durum aynen parent için de geçerlidir (adres uzayı ortaktır). e peki ne anladık o zaman bu işten? şunu anladık: performans. zira fork çağrısı sonrasında doğrudan exec işleminin yürütüleceği durumlarda (fork+exec) gereksiz yere sayfa tablosu kopyalama işlemleri ile zaman kaybetmek yerine, vfork ile child process yaratılarak exec çağrısının gerçekleştirilmesi daha hızlıdır ve bellek kullanımı bağlamında daha verimlidir. öte yandan fork mekanizması (sanal bellek kullanımı ve izolasyon bağlamında), memory management unit barındırmayan mikroişlemci mimarili sistemlerde doğrudan implement edilemezken, vfork ile mümkündür. uzun lafın kısası, bir işe yaramaktadır kendileri.
hesabın var mı? giriş yap