Rumah > Artikel > Tutorial sistem > Mengapa saiz halaman lalai sistem Linux ialah 4KB
Seperti yang kita sedia maklum, Linux menguruskan memori dalam unit halaman. Sama ada ia memuatkan data dari cakera ke dalam memori atau menulis data dari memori kembali ke cakera, sistem pengendalian akan beroperasi dalam unit halaman, yang juga bermakna jika kita hanya menulis satu bait data ke cakera , sistem pengendalian juga perlu mengepam semua data dalam keseluruhan halaman ke cakera.
Perlu diingat bahawa dalam Linux, kita boleh menggunakan sama ada halaman memori bersaiz biasa untuk operasi atau halaman memori yang besar (Halaman Besar Walaupun saiz lalai halaman memori pada kebanyakan pemproses ialah 4KB, beberapa Pemproses akan menggunakan 8KB, 16KB). , atau 64KB sebagai saiz halaman lalai. Selain saiz halaman memori biasa, pemproses berbeza menyokong saiz halaman besar yang berbeza. Sebagai contoh, pada pemproses x86, kita boleh menggunakan halaman memori bersaiz 2MB.
Halaman memori 4KB telah menjadi peninggalan sejarah, saiz halaman ini telah diterima pakai secara meluas bermula pada tahun 1980-an dan masih kekal sehingga kini. Walaupun perkakasan hari ini lebih kaya daripada masa lalu, kami masih terperangkap dengan saiz halaman memori 4KB yang diturunkan dari masa lalu. Biasanya, kita boleh melihat dengan jelas spesifikasi modul memori semasa memasang memori, seperti yang ditunjukkan dalam gambar di bawah:
Rajah 1 – Memori Akses Rawak
Hari ini, saiz halaman memori 4KB mungkin bukan pilihan terbaik, 8KB atau 16KB mungkin pilihan yang lebih baik, tetapi ini adalah pertukaran yang dibuat pada masa lalu di bawah senario tertentu. Dalam artikel ini, kita tidak seharusnya terlalu taksub dengan nombor 4KB Kita harus memberi lebih perhatian kepada beberapa faktor yang menentukan keputusan ini, supaya apabila kita menghadapi senario yang sama, kita boleh mempertimbangkan pilihan terbaik dari aspek ini Artikel tersebut akan memperkenalkan dua faktor berikut yang mempengaruhi saiz halaman memori, iaitu:
Saiz halaman yang terlalu kecil akan membawa masukan jadual halaman yang lebih besar, yang akan meningkatkan kelajuan carian dan overhed tambahan TLB (Penimbal lookaside terjemahan) semasa menangani
Saiz halaman yang berlebihan akan membazirkan ruang memori, menyebabkan pemecahan memori, dan mengurangkan penggunaan memori
Dalam abad yang lalu, kedua-dua faktor di atas telah dipertimbangkan sepenuhnya semasa mereka bentuk saiz halaman memori, dan halaman memori 4KB akhirnya dipilih sebagai saiz halaman paling biasa untuk sistem pengendalian Seterusnya, kami akan memperkenalkan secara terperinci kesannya terhadap prestasi sistem pengendalian.
Kami telah memperkenalkan memori maya dalam Linux dalam artikel Mengapa Linux Memerlukan Memori Maya Apa yang dapat dilihat oleh setiap proses adalah ruang memori maya yang bebas hanyalah konsep logik , penukaran daripada memori maya kepada memori fizikal memerlukan penggunaan jadual halaman yang dipegang oleh setiap proses.
Untuk menyimpan data yang dipetakan bagi memori maya 128 TiB dalam sistem pengendalian 64-bit, Linux memperkenalkan jadual halaman empat lapisan untuk membantu terjemahan alamat maya dalam 2.6.10, dan struktur jadual halaman lima lapisan telah diperkenalkan dalam 4.11 Pada masa hadapan Lebih banyak lapisan struktur jadual halaman juga boleh diperkenalkan untuk menyokong alamat maya 64-bit.
Rajah 2 – Struktur jadual halaman empat lapisan
Dalam struktur jadual halaman empat peringkat seperti yang ditunjukkan di atas, sistem pengendalian akan menggunakan 12 bit terendah sebagai halaman mengimbangi, dan baki 36 bit akan dibahagikan kepada empat kumpulan untuk mewakili indeks tahap semasa pada tahap sebelumnya . Semua alamat maya boleh menggunakan jadual halaman berbilang lapisan yang disebutkan di atas untuk mencari alamat fizikal yang sepadan.
Oleh kerana saiz ruang alamat maya sistem pengendalian ditetapkan, keseluruhan ruang alamat maya dibahagikan sama rata kepada N halaman memori dengan saiz yang sama, jadi saiz halaman memori akhirnya akan menentukan struktur hierarki dan entri jadual halaman Dalam setiap proses, lebih kecil saiz halaman maya, lebih banyak entri jadual halaman dan halaman maya terdapat dalam satu proses.
PagesCount=VirtualMemory ÷ Saiz Halaman
Oleh kerana saiz halaman maya semasa ialah 4096 bait, 12 bit pada penghujung alamat maya boleh mewakili alamat dalam halaman maya Jika saiz halaman maya dikecilkan kepada 512 bait, maka halaman empat peringkat asal struktur jadual atau halaman lima peringkat Struktur jadual akan menjadi lima atau enam lapisan, yang bukan sahaja akan meningkatkan overhed tambahan akses memori, tetapi juga meningkatkan saiz memori yang diduduki oleh entri jadual halaman dalam setiap proses.
Oleh kerana peranti pemetaan memori berfungsi pada peringkat halaman memori, sistem pengendalian menganggap bahawa unit terkecil peruntukan memori ialah halaman maya. Walaupun program pengguna hanya menggunakan 1 bait memori, sistem pengendalian akan memohon untuk halaman maya untuknya, seperti yang ditunjukkan dalam rajah di bawah Jika saiz halaman memori ialah 24KB, maka permohonan untuk 1 bait memori akan membazir ~99.9939% daripada ruang .
Rajah 3 – Pecahan memori yang besar
Apabila saiz halaman memori meningkat, pemecahan memori akan menjadi lebih serius dan halaman memori yang kecil akan mengurangkan pemecahan memori dalam ruang memori dan meningkatkan penggunaan memori. Pada abad yang lalu, sumber memori tidak begitu banyak seperti hari ini Dalam kebanyakan kes, memori bukanlah sumber yang mengehadkan perjalanan program Kebanyakan perkhidmatan dalam talian memerlukan lebih banyak CPU, bukan lebih banyak memori. Walau bagaimanapun, ingatan sebenarnya adalah sumber yang terhad pada abad yang lalu, jadi menambah baik penggunaan sumber yang terhad adalah sesuatu yang perlu kita pertimbangkan:
Rajah 4 – Harga ingatan
Memori stick pada tahun 1980-an dan 1990-an hanya 512KB atau 2MB, dan harganya sangat mahal Namun, memori beberapa GB adalah sangat biasa hari ini, jadi walaupun penggunaan memori masih sangat penting, harga memori telah menurun dengan ketara , ingatan berpecah bukan lagi masalah utama yang perlu diselesaikan.
Selain penggunaan memori, halaman memori yang lebih besar juga akan meningkatkan overhed tambahan penyalinan memori Kerana mekanisme salin atas tulis pada Linux, apabila berbilang proses berkongsi memori yang sama, apabila salah satu proses berubah Memori maya yang dikongsi akan. mencetuskan salinan halaman memori Pada masa ini, semakin kecil halaman memori sistem pengendalian, semakin kecil overhed tambahan yang disebabkan oleh salin atas tulis.
Ringkasan
Seperti yang kami nyatakan di atas, halaman memori 4KB adalah tetapan lalai yang diputuskan pada abad yang lalu Dari perspektif hari ini, ini mungkin pilihan yang salah seperti arm64 dan ia64 sudah boleh menyokong 8KB, halaman Memori seperti 16KB harga memori menjadi lebih rendah dan lebih rendah dan memori sistem menjadi lebih besar dan lebih besar, memori yang lebih besar mungkin menjadi pilihan yang lebih baik untuk sistem pengendalian Mari kita semak dua keputusan tentang elemen saiz halaman:
Akhirnya, mari kita lihat beberapa soalan berkaitan yang agak terbuka. Pembaca yang berminat boleh berfikir dengan teliti tentang soalan berikut:
Apakah perbezaan dan hubungan antara sektor, blok dan halaman dalam Linux?
Bagaimana saiz blok ditentukan dalam Linux? Apakah saiz biasa?
Atas ialah kandungan terperinci Mengapa saiz halaman lalai sistem Linux ialah 4KB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!