Tavsiye, 2024

Editörün Seçimi

Fork () ve vfork () Arasındaki Fark

Hem fork () hem de vfork (), fork () veya vfork () yöntemini çağıran işlemle aynı olan yeni bir işlem oluşturan sistem çağrılarıdır . Fork () kullanmak, ebeveyn ve çocuk işlemlerinin aynı anda yürütülmesini sağlar. Diğer şekilde, 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ı 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 tablosunun yardımıyla fork () ve vfork () arasındaki bazı farkları bulalım.

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ığı bir alternatif olarak yazma üzerine kopya kullanır.vfork (), yazı üzerine kopya kullanmaz.

Fork'un tanımı ()

Fork () yeni bir süreç oluşturmak için kullanılan bir sistem çağrısıdır. 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. Çocuk sürecinin oluşturulmasından sonra hem süreç hem de ebeveyn ve çocuk süreci çatal () işleminden sonraki ifadeden yürütmeye başlar ve her iki süreç de aynı anda yürütülür.

Ana süreç ve alt süreç ayrı adres alanına sahiptir . 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. Diyelim ki alt işlem kodu değiştirirse, üst işlemi etkilemeyecektir.

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

Yazma kopyası, ebeveyn ve çocuğun aynı adres alanını paylaşmasını sağlar. İş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ı ayrıca yeni bir işlem oluşturmak için kullanılır. Çatal () '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. Burada alt işlem, her iki işlem de aynı adres alanını kullandığından, işlem tamamlanıncaya kadar ana işlemin yürütülmesini askıya alır .

Alt ve üst süreç aynı adres alanını paylaştığı için. İş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şlevinin kullanılması alt ve üst işlemler için ayrı adres alanları oluşturmaz. Bu nedenle, alt sürecin oluşturulmasından hemen sonra exec () olarak çağırıldığı yerde uygulanmalıdır . Dolayısıyla, adres alanı için hiçbir israf olmayacak ve bu bir süreç yaratmanın etkili bir yoludur. vfork yazı üzerine kopya kullanmaz.

Fork () ve vfork () Arasındaki Temel Farklar

  1. Çatal ve çatal arasındaki temel fark, çatal tarafından oluşturulan alt sürecin ana işlemden ayrı bir hafıza alanına sahip olmasıdır. Ancak, vfork sistemi çağrısı tarafından oluşturulan alt işlem, üst işleminin aynı adres alanını paylaşır.
  2. Çatal kullanılarak yaratılan alt işlem ana işlemle aynı anda yürütülür . Öte yandan, vfork kullanılarak yaratılan alt süreç, üst sürecin yürütülmesini tamamlanıncaya kadar askıya alır.
  3. Ebeveyn ve alt sürecin hafıza alanı olduğundan işlemlerin herhangi biri tarafından yapılan ayrı değişiklikler diğer sayfalara etki etmez. Bununla birlikte, üst ve alt işlem paylaşıldıkça, herhangi bir işlem tarafından yapılan aynı hafıza adres değişikliği adres alanına yansır.
  4. Sistem çağrısı çatalı (), alternatif olarak çocuk ve ebeveyn işlemlerinin herhangi biri sayfaları değiştirinceye kadar aynı adres alanını paylaşmasına izin veren alternatif olarak yazma üzerine kullanır. Öte yandan, vfork yazma üzerine kopya kullanmaz.

Sonuç:

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

Top