Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Prosesor menggunakan alamat virtual saat membaca atau menulis ke lokasi memori. Selama operasi ini, prosesor menerjemahkan alamat virtual menjadi alamat fisik.
Ada beberapa manfaat untuk mengakses memori menggunakan alamat virtual:
Program dapat menggunakan berbagai alamat virtual yang berdampingan untuk mengakses buffer memori besar yang tidak bersebelahan dalam memori fisik.
Program dapat menggunakan berbagai alamat virtual untuk mengakses buffer memori yang lebih besar dari memori fisik yang tersedia. Ketika memori fisik rendah, manajer memori menyimpan halaman memori fisik (biasanya berukuran 4 kilobyte) ke file disk. Sistem memindahkan halaman data atau kode antara memori fisik dan disk sesuai kebutuhan.
Alamat virtual yang digunakan oleh proses yang berbeda diisolasi. Kode dalam satu proses tidak dapat mengubah memori fisik yang sedang digunakan oleh proses lain atau sistem operasi.
Rentang alamat virtual yang tersedia untuk proses dikenal sebagai ruang alamat virtual proses. Setiap proses mode pengguna memiliki ruang alamat virtual privatnya sendiri.
Proses 32-bit biasanya memiliki ruang alamat virtual dalam rentang 2 gigabyte 0x00000000 melalui 0x7FFFFFFF.
Proses 64-bit pada Windows 64-bit memiliki ruang alamat virtual dalam rentang 128-terabyte dari 0x000'00000000 hingga 0x7FFF'FFFFFFFF.
Berbagai alamat virtual terkadang disebut rentang memori virtual . Untuk informasi selengkapnya, lihat Batas Ruang Memori dan Alamat.
Diagram berikut mengilustrasikan beberapa fitur utama ruang alamat virtual.
Diagram
Diagram menunjukkan ruang alamat virtual untuk dua proses 64-bit: Notepad.exe dan MyApp.exe. Setiap proses memiliki ruang alamat virtualnya sendiri, mulai dari 0x000'00000000 hingga 0x7FF'FFFFFFFF. Setiap blok berteduh mewakili satu halaman (ukuran 4 kilobyte) memori virtual atau fisik. Proses Notepad menggunakan tiga halaman alamat virtual yang berdekatan, mulai dari 0x7F7'93950000. Namun, ketiga halaman alamat virtual yang bersebelahan ini memetakan ke halaman yang tidak bersebelahan dalam memori fisik. Selain itu, kedua proses menggunakan halaman memori virtual yang dimulai pada 0x7F7'93950000, tetapi halaman virtual ini memetakan ke halaman memori fisik yang berbeda.
Ruang pengguna dan ruang sistem
Proses seperti Notepad.exe dan MyApp.exe berjalan dalam mode pengguna. Komponen sistem operasi inti dan banyak driver berjalan dalam mode kernel yang lebih istimewa. Untuk informasi selengkapnya tentang mode prosesor, lihat mode pengguna dan mode kernel.
Setiap proses mode pengguna memiliki ruang alamat virtual privatnya sendiri, tetapi semua kode yang berjalan dalam mode kernel berbagi satu ruang alamat virtual yang disebut ruang sistem. Ruang alamat virtual untuk proses dalam mode pengguna disebut ruang pengguna.
Dalam Windows 32-bit, total ruang alamat virtual yang tersedia adalah 2^32 byte (4 gigabyte). Biasanya, 2 gigabyte yang lebih rendah digunakan untuk ruang pengguna, dan 2 gigabyte atas digunakan untuk ruang sistem.
Di Windows 32-bit, Anda dapat menentukan (pada waktu boot) bahwa lebih dari 2 gigabyte tersedia untuk ruang pengguna. Namun, ini berarti lebih sedikit alamat virtual yang tersedia untuk ruang sistem. Anda dapat meningkatkan ukuran ruang pengguna hingga sebanyak 3 gigabyte, hanya menyisakan 1 gigabyte untuk ruang sistem. Untuk meningkatkan ukuran ruang pengguna, gunakan BCDEdit /set increaseuserva.
Dalam Windows 64-bit, jumlah teoritis ruang alamat virtual adalah 2^64 byte (16 exabyte), tetapi hanya sebagian kecil dari rentang 16-exabyte yang benar-benar digunakan.
Kode yang berjalan dalam mode pengguna dapat mengakses ruang pengguna tetapi bukan ruang sistem. Pembatasan ini mencegah kode mode pengguna membaca atau mengubah struktur data sistem operasi yang dilindungi. Kode yang berjalan dalam mode kernel dapat mengakses ruang pengguna dan ruang sistem. Artinya, kode yang berjalan dalam mode kernel dapat mengakses ruang sistem dan ruang alamat virtual dari proses mode pengguna saat ini.
Driver yang berjalan dalam mode kernel harus berhati-hati ketika langsung membaca dari atau menulis ke alamat di ruang pengguna. Skenario berikut mengilustrasikan alasannya.
Program mode pengguna memulai permintaan untuk membaca beberapa data dari perangkat. Program ini menyediakan alamat awal buffer untuk menerima data.
Rutinitas driver perangkat, berjalan dalam mode kernel, memulai operasi baca dan mengembalikan kontrol ke pemanggilnya.
Kemudian, perangkat mengganggu utas yang sedang berjalan untuk menandakan bahwa operasi baca selesai. Rutinitas driver mode kernel menangani gangguan pada utas acak ini, yang termasuk dalam proses acak.
Pada titik ini, driver tidak boleh menulis data ke alamat awal yang disediakan program mode pengguna di Langkah 1. Alamat ini berada di ruang alamat virtual proses yang memulai permintaan, yang kemungkinan tidak sama dengan proses saat ini.
Kumpulan berhalaman dan kumpulan tidak berhalaman
Di ruang pengguna, semua halaman memori fisik dapat dipindahkan ke file di disk sesuai kebutuhan. Di ruang sistem, beberapa halaman fisik dapat di-page out dan yang lain tidak dapat. Ruang sistem memiliki dua wilayah untuk mengalokasikan memori secara dinamis: kumpulan halaman dan kumpulan yang tidak disebarkan.
Memori yang dialokasikan dalam kumpulan halaman dapat dipindahkan ke file disk sesuai kebutuhan. Memori yang dialokasikan dalam kumpulan yang tidak dihalamankan tidak pernah dapat dipindahkan ke berkas disk.