Çatal bıçaklama yaparken, ana işlemin tam ortamı kopyalanır. RAM'de rastgele bir alanda tahsis edilen alan mı yoksa ana ve alt işlemler sürekli RAM alanı alıyor mu (örneğin, dizi elemanları gibi)?
Çatal bıçaklama yaparken, ana işlemin tam ortamı kopyalanır. RAM'de rastgele bir alanda tahsis edilen alan mı yoksa ana ve alt işlemler sürekli RAM alanı alıyor mu (örneğin, dizi elemanları gibi)?
Yanıtlar:
Eğer kernel.org adresinden indirip çıkarırsanız (linux-3.13), linux-3.13 / kernel / fork.c dosyasında iyi belgelenmiş bir fonksiyon dizisi olduğunu görebilirsiniz. Birincisi, 'do_fork (...)' asıl çatalı yaptığını iddia ediyor. Burada bu işlev 'statik yapı task_struct * copy_process (...)', 1129 satırında çağırır. Aradığın yere yakın bir yerde olmalı.
Gördüğüm gibi tamam, selinux izinlerini kontrol ettikten sonra bu fonksiyon, 'alloc_task_struct_node (...)', 'alloc_thread_info_node (...)' ve 'arch_dup_task_struct (...)' olarak adlandırılan 'dup_task_struct (...)' işlevini çağırır. . 'Alloc_task_struct_node (...)' gerçeği göz önüne alındığında "kmem_cache_alloc_node (...) 'i çağırmaktan daha küçük bir şey yapar" ve bu işlevin bellekten bahseden linux-3.13 / mm / slab.c dosyasında bildirilmiş olması yönetimi ve birçok çekirdek iş parçacığının bellek yönetimi sorumluluklarına (sürekli yapı oluşturma ve silme) karşı çalışıyor olabileceği gerçeği, özellikle de Linux’un normal işlerden dolayı yan yana işlem veri yapıları yaratmadığını, özellikle de birçok iş parçacığını yaptığından çatal kullandığı aynı genel tahsisler .
Linux-3.13 / mm / slub.c dosyasını açarsanız, bunun bir slab hafızası ayırıcısı olduğunu söylemeye başlar. Bir İnternet Arama Motoru bu sonuç verir: wikipedia ... ve lwn .