Langsung ke konten

Arsip

Madvise

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.

Linux 19 Sep 2026 4 min read

MADV_FREE Menandai Page Anonim untuk Reclaim Tertunda

MADV_FREE tidak langsung mengganti private anonymous page dengan nol. Operasi ini menandai page yang memenuhi syarat sebagai data yang boleh dibuang, lalu Linux dapat me-reclaim-nya kemudian. Sebelum reclaim benar-benar terjadi, byte lama masih dapat terlihat. Penulisan sebelum reclaim membatalkan status tersebut pada page yang ditulis. Karakteristik waktu ini membedakan MADV_FREE dari advice yang langsung mengubah keadaan range yang terlihat oleh proses. Kontraknya adalah reclamation tertunda: aplikasi menyatakan bahwa isi lama tidak lagi diperlukan, sedangkan kernel menentukan kapan memori fisik diambil kembali.