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.
Entri jadual halaman
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.
Pecahan
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:
- Saiz halaman yang terlalu kecil akan membawa kepada entri jadual halaman yang lebih besar, yang akan meningkatkan kelajuan carian TLB (Terjemahan lookaside buffer) dan overhed tambahan semasa menangani, tetapi juga akan mengurangkan pemecahan memori dalam program dan meningkatkan penggunaan memori
- Saiz halaman yang berlebihan akan membazirkan ruang memori, menyebabkan pemecahan memori, dan mengurangkan penggunaan memori, tetapi ia boleh mengurangkan entri jadual halaman dalam proses dan masa menangani TLB
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Perbezaan utama antara CentOS dan Ubuntu adalah: asal (CentOS berasal dari Red Hat, untuk perusahaan; Ubuntu berasal dari Debian, untuk individu), pengurusan pakej (CentOS menggunakan yum, yang memberi tumpuan kepada kestabilan; Ubuntu menggunakan APT, untuk kekerapan yang tinggi) Pelbagai tutorial dan dokumen), kegunaan (CentOS berat sebelah ke arah pelayan, Ubuntu sesuai untuk pelayan dan desktop), perbezaan lain termasuk kesederhanaan pemasangan (CentOS adalah nipis)

Langkah Penyelesaian Masalah untuk Gagal Docker Image Build: Semak Sintaks Dockerfile dan Versi Ketergantungan. Semak jika konteks binaan mengandungi kod sumber dan kebergantungan yang diperlukan. Lihat log binaan untuk butiran ralat. Gunakan pilihan sasaran untuk membina fasa hierarki untuk mengenal pasti titik kegagalan. Pastikan anda menggunakan versi terkini Enjin Docker. Bina imej dengan --t [nama imej]: mod debug untuk debug masalah. Semak ruang cakera dan pastikan ia mencukupi. Lumpuhkan Selinux untuk mengelakkan gangguan dengan proses binaan. Tanya platform komuniti untuk mendapatkan bantuan, sediakan dockerfiles dan bina deskripsi log untuk cadangan yang lebih spesifik.

Kaedah Melihat Proses Docker: 1. Docker CLI Command: Docker PS; 2. Systemd CLI Command: Sistem Status SistemCTL; 3. Docker mengarang arahan CLI: Docker-Compose PS; 4 Proses Explorer (Windows); 5. /Direktori Proc (Linux).

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Keperluan Sistem Kod Vs: Sistem Operasi: Windows 10 dan ke atas, MACOS 10.12 dan ke atas, pemproses pengedaran Linux: minimum 1.6 GHz, disyorkan 2.0 GHz dan ke atas memori: minimum 512 MB, disyorkan 4 GB dan ke atas ruang penyimpanan: minimum 250 mb, disyorkan 1 GB dan di atas keperluan lain:

Sebab -sebab pemasangan sambungan kod VS mungkin: ketidakstabilan rangkaian, kebenaran yang tidak mencukupi, isu keserasian sistem, versi kod VS terlalu lama, perisian antivirus atau gangguan firewall. Dengan menyemak sambungan rangkaian, keizinan, fail log, mengemas kini kod VS, melumpuhkan perisian keselamatan, dan memulakan semula kod VS atau komputer, anda boleh menyelesaikan masalah dan menyelesaikan masalah secara beransur -ansur.

VS Kod untuk menukar mod Cina: Buka antara muka Tetapan (Windows/Linux: Ctrl, MacOS: CMD,) Cari "Editor: Bahasa" Tetapan Pilih "Cina" dalam menu drop-down Simpan tetapan dan mulakan semula kod vs
