Saya telah mencari-cari di Google dan menemukan kebanyakan orang menganjurkan penggunaan kmalloc
, karena Anda dijamin mendapatkan blok memori fisik yang berdekatan. Namun, tampaknya juga kmalloc
dapat gagal jika blok fisik yang berdekatan yang Anda inginkan tidak dapat ditemukan.
Apa keuntungan memiliki blok memori yang berdekatan? Secara khusus, mengapa saya perlu memiliki blok fisik memori yang berdekatan dalam panggilan sistem ? Apakah ada alasan mengapa saya tidak bisa begitu saja menggunakan vmalloc
?
Akhirnya, jika saya mengalokasikan memori selama penanganan panggilan sistem, haruskah saya menentukan GFP_ATOMIC
? Apakah panggilan sistem dijalankan dalam konteks atom?
GFP_ATOMIC
Alokasi ini berprioritas tinggi dan tidak tidur. Ini adalah bendera untuk digunakan pada penangan interupsi, bagian bawah dan situasi lain di mana Anda tidak bisa tidur.
GFP_KERNEL
Ini adalah alokasi normal dan mungkin memblokir. Ini adalah bendera untuk digunakan dalam kode konteks proses saat aman untuk tidur.
vmalloc
lebih cepat dengan Kernel 5.2 (Q2 2019)