Rumah >Tutorial sistem >LINUX >Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux

Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux

王林
王林ke hadapan
2024-02-09 16:30:29782semak imbas

Dengan perkembangan komputer, kerumitan dan volum data aplikasi perisian semakin meningkat, dan keperluan untuk memori sistem juga semakin tinggi. Sebagai pentadbir sistem Linux, adalah penting untuk memahami cara mengurus dan memperuntukkan sumber memori dengan betul. Artikel ini akan memperkenalkan anda kepada pengetahuan asas pengurusan memori sistem Linux.

Program awal dijalankan secara langsung pada alamat fizikal, yang bermaksud ruang yang diperlukan oleh program tidak melebihi memori fizikal mesin dan tidak akan ada masalah, bagaimanapun, dalam senario sebenar, semuanya berbilang tugas dan berbilang proses adalah tidak boleh dipercayai bahawa alamat fizikal dikhaskan untuk setiap proses.

Contohnya: Jika terdapat tiga program a, b, c, a memerlukan 10M, b memerlukan 100M, dan c memerlukan 20M, jumlah memori akan menjadi 120M Mengikut kaedah peruntukan sebelumnya, 10M pertama akan diberikan kepada a , dan 10M-110M akan diberikan kepada b Sistem mempunyai 10M yang tinggal, tetapi c memerlukan 20M yang jelas tidak mencukupi untuk c. apa yang perlu dilakukan

Mengapa pengurusan memori diperlukan:

1. Isu kecekapan

Anda mungkin berfikir untuk menulis data program b ke cakera apabila program c sedang berjalan, dan kemudian menulis semula data dari cakera apabila program b dijalankan Apatah lagi ia tidak dapat memenuhi keperluan menjalankan program b secara selari dan c, walaupun ia kerap Masalah memakan masa yang disebabkan oleh operasi io juga tidak boleh diterima.

2. Atasi masalah pengasingan proses

Selain isu kecekapan, ruang yang dikhaskan untuk proses akan ranap jika ia perlu diakses oleh proses lain. Sebagai contoh, ruang yang diakses oleh proses a ialah 10M pertama, tetapi jika terdapat sekeping kod dalam program a yang mengakses 10-110M, ia mungkin menyebabkan program b ranap, jadi ruang alamat proses perlu diasingkan daripada antara satu sama lain.

3.Masalah penempatan semula

Dalam senario kehidupan sebenar, adalah mustahil untuk satu tugasan dijalankan dalam memori yang diperuntukkan Apabila berbilang tugasan dijalankan secara selari, adalah mungkin untuk memohon alamat dalam proses lain apabila memohon secara dinamik untuk melepaskan memori. ia perlu dipindahkan ke alamat baharu.

Pengurusan memori tidak lebih daripada mencari jalan untuk menyelesaikan tiga masalah di atas Bagaimana untuk meningkatkan kecekapan penggunaan memori? Bagaimana untuk menjadikan ruang alamat proses diasingkan? Bagaimana untuk menyelesaikan masalah penempatan semula semasa program berjalan?

Cara pengurusan memori memetakan daripada alamat maya kepada alamat fizikal:

Proses pemetaan pengurusan memori daripada alamat maya kepada alamat fizikal juga merupakan proses menyelesaikan tiga masalah di atas. Pengurusan memori menggunakan mekanisme segmentasi dan mekanisme paging untuk menyelesaikan ketiga-tiga masalah di atas. Proses anggaran adalah seperti berikut:

Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux

Mekanisme pembahagian:

Selagi program dibahagikan kepada segmen dan keseluruhan segmen dialihkan ke mana-mana kedudukan, alamat dalam segmen kekal tidak berubah berbanding alamat asas segmen Tidak kira apa alamat asas segmen, selagi alamat mengimbangi segmen diberikan, CPU boleh mengaksesnya. Oleh itu, apabila memuatkan atur cara pengguna, hanya salin kandungan keseluruhan segmen ke lokasi baharu, dan kemudian tukar alamat dalam daftar alamat asas segmen ke alamat ini Program boleh berjalan dengan tepat kerana alamat offset intra-segmen digunakan dalam program , berbanding dengan alamat asas segmen baharu, kandungan pada alamat offset masih sama.

Dapat dilihat bahawa mekanisme segmentasi menyelesaikan masalah pengasingan dan penempatan semula antara proses. Tindakan ini dilakukan dalam perkakasan, tetapi sesetengah perkakasan tidak mempunyai mekanisme pembahagian Sebagai platform silang, Linux menggunakan mekanisme paging yang lebih serba boleh untuk menyelesaikan penukaran daripada alamat linear kepada alamat maya kepada alamat fizikal.

Mekanisme kelui:

Anda boleh merujuk kepada "Bagaimanakah CPU mengakses memori?" 》Fahami konsep jadual halaman satu peringkat Untuk serasi dengan 32-bit dan 64-bit, Linux biasanya menggunakan jadual halaman empat peringkat, direktori global halaman, direktori unggul halaman, direktori perantaraan halaman, jadual halaman:

. Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux

Ini bukan penjelasan terperinci tentang cara Linux menggunakan jadual halaman empat peringkat untuk menukar alamat linear (alamat maya) kepada alamat fizikal.

Apabila proses bertukar, ia mencari medan pgd dalam mm_struct mengikut task_struct, mendapatkan direktori global halaman proses baharu, dan kemudian mengisinya ke dalam daftar CR3 untuk melengkapkan penukaran halaman.

Mari kita lihat proses paging dan pengalamatan mmu:

Kod muat naik:

Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux
Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem LinuxTidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem LinuxTidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem LinuxTidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux

Dapat dilihat bahawa alamat fizikal yang sepadan dengan alamat maya ffff99b488d48000 ialah 80000000c8d48000. Proses ini juga adalah proses mmu.

Melalui pengenalan artikel ini, kami telah mempelajari pengetahuan asas pengurusan memori sistem Linux, termasuk partition memori, memori maya, ruang swap, dsb. Dalam kerja sebenar, pengurusan memori yang betul boleh meningkatkan kestabilan dan prestasi sistem dan mengelakkan kegagalan yang tidak dijangka akibat masalah ingatan. Saya harap pengenalan dalam artikel ini dapat membantu anda lebih memahami prinsip dan kaedah pengurusan memori sistem Linux, membolehkan anda menangani pelbagai masalah pengurusan memori dengan mudah.

Atas ialah kandungan terperinci Tidak perlu risau tentang isu ingatan lagi—pengenalan kepada pengurusan memori sistem Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lxlinux.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam