Linux menggunakan sistem memori virtual di mana semua alamat adalah alamat virtual dan bukan alamat fisik. Alamat virtual ini dikonversi menjadi alamat fisik oleh prosesor.
Untuk mempermudah terjemahan ini, memori virtual dan fisik dibagi menjadi beberapa halaman. Masing-masing halaman ini diberi nomor unik; nomor bingkai halaman.
Beberapa ukuran halaman bisa 2 KB, 4 KB, dll. Tetapi bagaimana cara menentukan ukuran ukuran halaman ini? Apakah itu dipengaruhi oleh ukuran arsitektur? Misalnya, bus 32-bit akan memiliki ruang alamat 4 GB.
Perangkat keras (khususnya, MMU , yang merupakan bagian dari CPU) menentukan ukuran halaman apa yang mungkin. Tidak ada hubungan dengan ukuran register prosesor dan hanya hubungan tidak langsung dengan ukuran ruang alamat (dalam hal MMU menentukan keduanya).
Hampir semua arsitektur mendukung ukuran halaman 4kB. Beberapa arsitektur mendukung halaman yang lebih besar (dan beberapa juga mendukung halaman yang lebih kecil), tetapi 4kB adalah standar yang sangat luas.
Linux mendukung dua ukuran halaman:
CONFIG_HUGETLB_PAGE
diperlukan, danCONFIG_HUGETLBFS
juga untuk sebagian besar kegunaan). Ini sesuai dengan level terdalam kedua dari deskriptor MMU (apa yang disebut Linux PMD) (atau setidaknya biasanya, saya tidak tahu apakah ini berlaku pada semua arsitektur).Ukuran halaman adalah kompromi antara penggunaan memori, penggunaan memori dan kecepatan.
Keuntungan ukuran halaman yang lebih besar kecil untuk sebagian besar aplikasi, sedangkan biayanya sangat besar. Inilah sebabnya mengapa sebagian besar sistem hanya menggunakan halaman berukuran normal.
Anda dapat query (normal) ukuran halaman di sistem anda dengan
getconf
utilitas atau fungsi Csysconf
.Menggunakan halaman besar membutuhkan pemasangan sistem
hugetlbfs
file danmmap
ping file di sana.sumber
Ukuran halaman sebagian besar tergantung pada arsitektur prosesor. Pada x86, dari masa prosesor 386 yang memperkenalkan mode terlindungi, ukuran halaman adalah 4 kB.
Dalam mode x64, ada juga halaman besar, yang berukuran 2 MB. Namun, menggunakan itu agak rumit.
Anda dapat menemukan informasi lebih lanjut tentang ukuran halaman di artikel Wikipedia
sumber
Prosesor menentukan ukuran halaman yang tersedia. Untuk sebagian besar tujuan, perangkat keras yang menerapkan ukuran halaman pada prosesor x86 dan x86_64 adalah 4kb. Namun, sistem operasi dapat mengalokasikan lebih dari satu halaman sekaligus jika diinginkan, dan dengan demikian secara efektif mengimplementasikan halaman 8kb, 16kb, atau 32kb dalam perangkat lunak.
Prosesor x86 dan x86_64 masing-masing juga dapat memadukan halaman 4mb dan 2mb bersama dengan halaman standar 4kb. Jika kemampuan itu digunakan sama sekali, sebagian besar akan digunakan untuk mengalokasikan ruang kernel.
sumber