Saya tertarik dengan perbedaan antara Highmem dan Lowmem:
- Mengapa ada perbedaan seperti itu?
- Apa yang kita peroleh dengan melakukannya?
- Fitur apa yang dimiliki masing-masing?
Jawaban yang Diterima:
Pada arsitektur 32-bit, rentang ruang alamat untuk menangani RAM adalah:
0x00000000 - 0xffffffff
atau 4'294'967'295
(4 GB).
Kernel linux membaginya menjadi 3/1 (bisa juga 2/2, atau 1/3 ) masing-masing menjadi ruang pengguna (memori tinggi) dan ruang kernel (memori rendah).
Rentang ruang pengguna:
0x00000000 - 0xbfffffff
Setiap proses pengguna yang baru melahirkan mendapatkan alamat (rentang) di dalam area ini. Proses pengguna umumnya tidak dipercaya dan oleh karena itu dilarang untuk mengakses ruang kernel. Selanjutnya, mereka dianggap tidak mendesak, sebagai aturan umum, kernel mencoba untuk menunda alokasi memori untuk proses tersebut.
Rentang ruang kernel:
0xc0000000 - 0xffffffff
Proses kernel mendapatkan alamatnya (rentang) di sini. Kernel dapat langsung mengakses alamat 1 GB ini (well, bukan 1 GB penuh, ada 128 MB yang dicadangkan untuk akses memori tinggi).
Proses yang muncul di ruang kernel tepercaya, mendesak, dan dianggap bebas kesalahan, permintaan memori diproses secara instan.
Setiap proses kernel juga dapat mengakses rentang ruang pengguna jika diinginkan. Dan untuk mencapai ini, kernel memetakan alamat dari ruang pengguna (memori tinggi) ke ruang kernelnya (memori rendah), 128 MB yang disebutkan di atas secara khusus disediakan untuk ini.
Apakah pembagiannya 3/1, 2/2, atau 1/3 dikendalikan oleh CONFIG_VMSPLIT_...
pilihan; Anda mungkin dapat memeriksa di bawah /boot/config*
untuk melihat opsi mana yang dipilih untuk kernel Anda.