Fork () ve vfork () Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 2 Nisan 2021
Güncelleme Tarihi: 10 Mayıs Ayı 2024
Anonim
Bruteforce 32bit Stack Cookie. stack0: part 3 - bin 0x23
Video: Bruteforce 32bit Stack Cookie. stack0: part 3 - bin 0x23

İçerik


Her ikisi de çatal() ve vfork () onlar sistem çağrıları Bu, fork () veya vfork () işlevini çağıran işlemle aynı olan yeni bir işlem oluşturur. kullanma çatal() ebeveyn ve çocuk sürecinin aynı anda yürütülmesine izin verir. Diğer yol, vfork () alt işlemin yürütülmesini tamamlayana kadar ana işlemin yürütülmesini askıya alır. Fork () ve vfork () sistem çağrısı arasındaki temel fark, çatal kullanılarak oluşturulan alt sürecin, ana işleminkinden ayrı bir adres alanına sahip olmasıdır. Öte yandan, vfork kullanılarak yaratılan alt süreç, üst sürecinin adres alanını paylaşmak zorundadır.

Aşağıda gösterilen karşılaştırma çizelgesi yardımıyla fork () ve vfork () arasındaki bazı farkları bulalım.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

Karşılaştırma Tablosu

Karşılaştırma için temelçatal()vfork ()
TemelAlt süreç ve üst süreç ayrı adres alanlarına sahiptir.Alt süreç ve üst süreç aynı adres alanını paylaşır.
infazEbeveyn ve çocuk süreci aynı anda yürütülür.Ana süreç, alt işlem yürütmeyi tamamlayana kadar askıya alınır.
değişiklikAlt işlem, adres alanındaki herhangi bir sayfayı değiştirirse, adres alanı ayrı olduğundan üst işlem için görünmez.Alt işlem, adres alanındaki herhangi bir sayfayı değiştirirse, aynı işlem alanını paylaştığı için üst işlem tarafından görülebilir.
Kopya üzerinde yazmafork (), ebeveyn ve çocuğun paylaşılan sayfayı değiştirinceye kadar aynı sayfaları paylaştığı alternatif olarak yazma üzerine kopya kullanır.vfork (), yazı üzerine kopya kullanmaz.


Çatal tanımı ()

çatal() oluşturmak için bir sistem çağrısı kullanmaktır. yeni süreç. Fork () çağrısı tarafından oluşturulan yeni işlem, fork () çağrısı çağrısını yapan işlemin alt işlemidir. Alt sürecin kodu, üst sürecin koduyla aynıdır. Alt sürecin yaratılmasından sonra hem süreç hem de ebeveyn ve alt süreç çatal () işleminden sonraki ifadeden yürütmeye başlar ve her iki süreç de yürütülür. eşzamanlı.

Ana süreç ve alt süreç var ayrı adres alanı. Bu nedenle, herhangi bir işlem koddaki herhangi bir ifadeyi veya değişkeni değiştirdiğinde. Diğer işlem kodlarına yansıtılmaz. Alt işlem kodu değiştirirse, üst işlemi etkilemeyeceğini varsayalım.

Bazı çocuk süreçleri yaratıldıktan hemen sonra derhal çağırır. exec (). Exec () sistem çağrısı işlemin yerini alır parametresinde belirtilen programla. O zaman çocuk işleminin ayrı adres alanı kullanılamaz. Buradaki alternatiflerden biri yazmaya yazmadır.


copy-on-write ebeveynin ve çocuğun aynı adres alanını paylaşmasını sağlayın. İşlemlerden herhangi biri adres alanındaki sayfalara yazarsa, adres işleminin kopyası her iki işlemin de bağımsız çalışabilmesi için oluşturulur.

Vfork ()'un tanımı

Çatalın () değiştirilmiş hali vfork () şeklindedir. vfork () sistem çağrısı da yeni bir işlem oluşturmak için kullanılır. Fork () 'a benzer şekilde, burada da oluşturulan yeni süreç, vfork () yöntemini çağıran sürecin alt sürecidir. Alt işlem kodu, üst işlem koduyla da aynıdır. İşte, çocuk süreci idamın askıya alınması Her iki işlem de kullanmak için aynı adres alanını paylaştığı için ana işlemin yürütmesini tamamlayana kadar.

Çocuk ve ebeveyn sürecinin paylaştığı gibi aynı adres alanı. İşlemlerden herhangi biri kodu değiştirirse, aynı sayfaları paylaşan diğer işlem görülebilir. Ana işlemin kodu değiştirip değiştirmediğini varsayalım; Çocuk sürecinin koduna yansıyacaktır.

Vfork () işlevi, alt ve üst işlemler için ayrı adres alanları oluşturmaz. Dolayısıyla, olmalı uygulanan alt sürecin çağrıldığı yer exec () oluşturulmasından hemen sonra. Yani, adres alanı için hiçbir israf olmayacak ve bu verimli bir süreç yaratmanın yolu. vfork kullanmaz copy-on-write.

  1. Çatal ve vfork arasındaki en büyük fark, çatal bir ayrı hafıza alanı ebeveyn sürecinden. Ancak, tarafından oluşturulan çocuk süreci vfork sistem çağrısı paylaşır aynı adres alanı ebeveyn sürecinin
  2. Çatal kullanılarak oluşturulan çocuk süreci aynı anda yürütmek ebeveyn süreciyle birlikte. Öte yandan, vfork kullanılarak oluşturulan alt işlem askıya almak Yürütme tamamlanana kadar ana sürecin yürütülmesi.
  3. Ebeveyn ve çocuk işlemlerinin hafıza alanı ayrı olduğu için, işlemlerin herhangi biri tarafından yapılan değişiklik başkalarının sayfalarını etkilemez. Bununla birlikte, üst ve alt süreç aynı paylaşım adresi olduğundan, herhangi bir işlem tarafından yapılan aynı adres adres değişikliğini adres alanına yansıtır.
  4. Sistem çağrısı çatalı () kullanır copy-on-write Alternatif olarak, alt ve üst işlemlerin herhangi biri sayfaları değiştirinceye kadar aynı adres alanını paylaşmasına izin verir. Öte yandan, vfork yazma üzerine kopya kullanmaz.

Sonuç:

Vfork () sistem çağrısı, çocuk işlemi çağrısı çağrısı fork () kullanılarak oluşturulduktan hemen sonra exec () yapıldığında yapılmalıdır. Çocuk ve ebeveyn süreci için ayrı adres alanı burada kullanılmayacak.