Tamamı bir fork()
mmap'e kullanılarak uygulanır / yazma üzerine kopyalayın.
Bu sadece öbekleri değil aynı zamanda paylaşılan kütüphaneleri, yığınları, BSS alanlarını da etkiler.
Bu, tesadüfen, ortaya çıkan 2 işlem (ebeveyn ve çocuk) gerçekte bellek aralıklarına yazmaya başlayana kadar çatalın son derece hafif bir işlem olduğu anlamına gelir. Bu özellik çatal bombalarının ölümcüllüğüne önemli bir katkıda bulunur - çekirdeğin sayfa çoğaltması ve farklılaşmasıyla aşırı yüklenmeden önce çok fazla işlemle karşılaşıyorsunuz.
Modern bir işletim sisteminde çekirdeğin basılı kopya gerçekleştirdiği bir işlem örneği bulmak için zorlanacaksınız (aygıt sürücüleri istisnadır) - VM işlevini kullanmak çok daha kolay, çok daha kolay ve daha verimlidir.
Hatta execve()
aslında "lütfen / ld.so / whatnot, ardından çalıştır 'komutunu kullanın" - ve VM, işlemin RAM ve yürütme işlemine gerçek yüklemesini gerçekleştirir. Yerel başlatılmamış değişkenler bir sıfır sayfadan - sıfırları içeren özel salt okunur kopyala-yazdır sayfasından mmapedlenir, yerel başlatılmış değişkenler ikili dosyadan tekrar mmaplanır (tekrar yazılır kopyala), vb.