Langsung ke konten

Arsip

Fork

3 artikel
Linux 23 Sep 2026 3 min read

MADV_WIPEONFORK Mengganti Memori Private yang Diwariskan dengan Nol

MADV_WIPEONFORK Mengganti Memori Private yang Diwariskan dengan Nol fork() normal memberikan child mapping yang berasal dari address space parent, dengan page private yang writable umumnya ditangani melalui copy-on-write. MADV_WIPEONFORK mengubah aturan pewarisan itu untuk range anonymous private tertentu: mapping tetap ada pada child, tetapi isinya menjadi zero-filled. Parent tetap menyimpan byte yang sudah ada. Operasi ini mengubah memori yang terlihat oleh child pada batas pembuatan proses, bukan menghapus range milik parent.

Linux 23 Sep 2026 4 min read

MADV_DONTFORK Mengecualikan Range Memori dari Address Space Child

MADV_DONTFORK mengubah satu bagian spesifik dari pembuatan proses di Linux: mapping yang ditandai dengan advice ini tidak dibuat tersedia pada child hasil fork(). Parent tetap memiliki mapping tersebut. Child dimulai tanpa range address itu, sehingga address yang valid pada parent tidak otomatis valid pada child. Ini adalah kontrol semantik terhadap pewarisan mapping, bukan sekadar petunjuk cache. Operasi ini termasuk extension madvise() khusus Linux yang dapat mengubah perilaku memori yang terlihat oleh program.

Teknologi 23 Sep 2026 5 min read

fork Linux Memakai Copy-on-Write untuk Menunda Salinan Page Privat

fork() membuat proses baru dengan virtual address space yang berasal dari proses pemanggil, tetapi Linux tidak perlu menggandakan setiap physical page privat ketika syscall selesai. Untuk mapping privat yang writable, kernel dapat mengatur page table parent dan child agar keduanya pada awalnya merujuk physical memory yang sama, sementara operasi write dibatasi oleh state copy-on-write. Desain ini membuat biaya pembuatan proses lebih bergantung pada page table dan bookkeeping kernel daripada seluruh ukuran data privat yang resident. Penyalinan fisik ditunda sampai sebuah write membuat kedua address space harus berbeda.