Apakah manajemen memori di Linux Kernel dilakukan menggunakan paging atau segmentasi atau keduanya?
sumber
Apakah manajemen memori di Linux Kernel dilakukan menggunakan paging atau segmentasi atau keduanya?
Linux menggunakan keduanya. Ini menggunakan segmentasi untuk memetakan semua ruang alamat yang tersedia sambil memberikan hak akses yang berbeda: pada dasarnya tampilan kernel dan ruang pengguna. Anda dapat melihat kode sumber Linux untuk KERNEL_DS (segmen data kernel) untuk beberapa contoh.
Paging kemudian digunakan untuk mengimplementasikan memori virtual (Grep untuk "struct gdt_page" di kernel, untuk titik awal)
Manajemen memori di Linux bekerja secara eksklusif dengan paging.
Linux mendukung halaman "kecil" (biasanya 4kB) dan "besar" (2M). Yang pertama "hanya bekerja" tanpa Anda ketahui atau melakukan sesuatu yang istimewa, dan yang terakhir perlu perlakuan khusus (harus dipesan pada saat boot dan dipetakan melalui perangkat khusus).
Satu-satunya konteks di mana "segmen" muncul di Linux adalah brk () syscall yang digunakan untuk meningkatkan segmen data dari suatu proses (Anda biasanya tidak membutuhkan ini, malloc melakukannya tanpa Anda harus peduli). Namun demikian, memori datang dalam halaman dan dikelola dalam halaman, dan itu tidak ada hubungannya dengan segmentasi x86.