Katakanlah kita bekerja dengan sistem yang memiliki 40 bit alamat fisik. Total ruang alamat fisik (dengan asumsi byte-addressable memory) adalah byte, atau 1 TiB. Dan jika alamat virtual panjangnya 48 bit, itu berarti ada lebih banyak alamat yang tersedia untuk memori virtual daripada ada lokasi dalam memori fisik.
Ini masuk akal bagi saya, karena alamat "kelebihan" bisa merujuk ke lokasi hard disk juga. Namun, apa yang saya tidak mengerti adalah bagaimana terjemahan antara alamat virtual dan fisik terjadi. Saya berasumsi ada pemetaan disimpan di suatu tempat yang menghubungkan lokasi VAS ke lokasi fisik. Jika ada lebih banyak lokasi alamat virtual daripada lokasi fisik, bagaimana mungkin semua pemetaan ini disimpan dalam memori? Minimal Anda akan membutuhkan 48 bit untuk menyimpan setiap alamat virtual, dan 40 lagi untuk menyimpan lokasi fisik yang dipetakan. Jadi jelas Anda tidak bisa hanya menyimpan pemetaan 1: 1 dari setiap alamat virtual ke mitra fisiknya, karena memetakan setiap lokasi akan mengambil lebih banyak memori daripada memori fisik itu sendiri.
Apa sebenarnya yang saya lewatkan di sini?
sumber
Jawaban:
Trik untuk membuat pekerjaan ini adalah "paging." Saat membawa data dari hard disk ke memori fisik, Anda tidak hanya membawa beberapa byte. Anda membawa seluruh halaman. 4k byte adalah ukuran halaman yang sangat umum.
Jika Anda hanya perlu melacak halaman, bukan setiap byte, pemetaan menjadi jauh lebih murah. Jika Anda memiliki ruang alamat 48 bit dan 4096 byte halaman, Anda hanya perlu melacak mana dari 2 ^ 36 halaman (sekitar 69 miliar halaman). Itu jauh lebih mudah! Catatan di mana semua halaman ditemukan dikenal sebagai "tabel halaman."
Jika Anda benar-benar membutuhkan memori 1-256 TiB, maka memberikan beberapa gigabyte untuk menyimpan tabel halaman ini bukan masalah besar. Namun dalam praktiknya, kami akan melakukan hal-hal seperti menggunakan tabel halaman multi-level , yang memungkinkan kami menjadi sedikit lebih efisien, menjaga halaman hanya untuk wilayah ruang alamat yang sebenarnya kami gunakan.
sumber