Saya akan mencoba memulai dengan lambat, dan kemudian menyatukan ini untuk Anda. Seperti ini:
Memori virtual, seperti yang biasa digunakan, mengacu pada "paging". Seperti namanya, paging seperti notepad manusia.
Ketika Anda menghitung jumlah sederhana, atau mempelajari informasi sederhana, Anda melakukan semuanya di kepala Anda: Anda hanya memuat semua informasi, memprosesnya, dan mendapatkan jawabannya. Ini seperti komputer yang memuat file dari hard drive - itu memuat program atau gambar atau informasi lain yang diperlukan untuk bekerja ke dalam "memori nyata" (atau "memori fisik") dan bekerja padanya dengan "otak" itu ( prosesornya).
Namun, ketika Anda mempelajari informasi yang rumit, atau bekerja dengan jumlah yang kompleks, Anda mungkin tidak dapat memasukkan semua itu di kepala Anda sekaligus. Anda menjadi bingung, mulai melambat, gagal menyimpan semuanya di sana sekaligus, dan harus melupakan sesuatu untuk mengingat hal lain.
Solusi manusia adalah menggunakan notepad. Kami mencatat pada halaman-halaman semua hal yang tidak dapat kami ingat sekaligus, tetapi merujuk mereka saat melakukan penjumlahan. Kami mungkin tidak dapat mengingat daftar besar angka penjualan untuk bulan itu, tetapi kami dapat melihat halaman-halamannya, mendapatkan informasi sedikit demi sedikit, dan memproses setiap bit. Ini seperti komputer "paging" memorinya - menulis halaman yang penuh dengan informasi, dan memasukkannya ke dalam "memori virtual" untuk referensi di kemudian hari, dan menyadari bahwa ia membutuhkan sebuah halaman, dan memuat kembali halaman itu dari memori virtual ke memori nyata. Di linux dan unix, tempat di mana halaman-halaman ini disimpan secara harfiah disebut "pagefile", dan halaman-halaman data dalam memori secara harfiah disebut "halaman". Sistem yang berbeda memiliki nama yang berbeda untuk hal-hal ini, tetapi konsep umumnya hampir sama.
Jadi sungguh, paging sangat sederhana. Semua halaman informasi tidak sesuai dengan memori, sehingga beberapa halaman dimasukkan ke dalam disk, dan dimuat lagi nanti.
Sekarang, yang menjadi lebih rumit adalah bahwa, sistem modern menampilkan pemetaan memori dan perlindungan memori, yang semuanya biasanya ditangani oleh sistem perangkat keras yang sama di komputer: unit manajemen memori, atau MMU.
Dalam komputer multitasking (modern), yang dapat menjalankan banyak program sekaligus, dan fitur perlindungan memori, setiap program biasanya dipisahkan dari program lain yang berjalan pada sistem yang sama. Dengan cara ini, satu program tidak dapat mengubah program lain hanya dengan mengakses memorinya - MMU secara fisik memisahkan ruang alamat satu program dari yang lain. Dengan kata lain, program pengguna tidak melihat program pengguna lain atau bahkan program lain. Mereka tidak melihat "memori nyata" - mereka melihat "memori virtual" mereka sendiri.
Sekarang, konsep isolasi memori dan konsep pagefile ini adalah dua hal yang berbeda secara konseptual, yang mungkin mengapa Anda bingung. Namun, kuncinya adalah keduanya bekerja menggunakan MMU - unit manajemen memori, yang membagi memori menjadi halaman, dan memetakan halaman ke ruang alamat virtual.
Jadi, ketika sebuah program meminta memori pada "alamat memori" tertentu, apa yang sebenarnya terjadi adalah bahwa halaman memori untuk program itu dan alamatnya yang sesuai ("ruang alamat" program) dicari, dan halaman yang sesuai dengan blok memori ditemukan. Halaman itu dapat dimuat di suatu tempat dalam memori nyata, dalam hal ini program tersebut diberi akses, atau, itu dapat dipindahkan ke disk. Jika paged keluar, maka hal itu memicu "kesalahan halaman" - disk diakses, dan halaman dimuat ke dalam memori. Jadi program ini bekerja bahkan ketika tidak ada cukup memori, tetapi berjalan lambat, jika harus menggunakan disk untuk apa yang biasanya menjadi akses memori yang sangat cepat.
Sekarang, jika tidak ada cukup ruang untuk memuat halaman itu ke dalam memori, maka Anda memiliki masalah. Dalam hal ini, beberapa halaman LAIN yang sudah ada dalam memori harus "ditukar" ke disk, sehingga halaman program pertama dapat dimuat. Atau, mereka mungkin sama-sama halaman dari program yang sama. Anda melihat ini kadang-kadang dalam program grafis, misalnya, pada sistem yang sarat muatan, ketika bagian dari gambar dimuat perlahan dan digambar dengan cepat, maka bagian selanjutnya dimuat dengan sama lambat dan digambar dengan cepat, dan ketika Anda kembali bekerja dengan yang pertama sebagian lagi lambat. Itu karena mereka sedang dimuat untuk dikerjakan, lalu ditukar lagi, sehingga hal lain dapat dikerjakan. Jelas, ini adalah cara yang sangat lambat untuk bekerja, dan yang benar-benar Anda butuhkan adalah memori yang NYATA.