Ekstensi Alamat Windowing
Address Windowing Extensions (AWE) adalah sekumpulan ekstensi yang memungkinkan aplikasi memanipulasi memori fisik dengan cepat lebih besar dari 4GB. Aplikasi intensif data tertentu, seperti sistem manajemen database dan perangkat lunak ilmiah dan rekayasa, membutuhkan akses ke cache data yang sangat besar. Dalam kasus himpunan data yang sangat besar, membatasi cache agar sesuai dalam ruang alamat pengguna 2GB aplikasi adalah batasan yang parah. Dalam situasi ini, cache terlalu kecil untuk mendukung aplikasi dengan benar.
AWE memecahkan masalah ini dengan memungkinkan aplikasi untuk secara langsung mengatasi sejumlah besar memori sambil terus menggunakan pointer 32-bit. AWE memungkinkan aplikasi untuk memiliki cache data yang lebih besar dari 4GB (di mana memori fisik yang memadai ada). AWE menggunakan memori fisik yang tidak bisa di-paging dan tampilan jendela dari berbagai bagian memori fisik ini dalam ruang alamat virtual 32-bit.
AWE menetapkan beberapa batasan tentang bagaimana memori ini dapat digunakan, terutama karena batasan ini memungkinkan pemetaan, pemetaan ulang, dan pembebasan yang sangat cepat. Manajemen memori cepat penting untuk ruang alamat yang berpotensi sangat besar ini.
- Rentang alamat virtual yang dialokasikan untuk AWE tidak dapat dibagikan dengan proses lain (dan karenanya tidak dapat diwariskan). Bahkan, dua alamat virtual AWE yang berbeda dalam proses yang sama tidak diizinkan untuk memetakan halaman fisik yang sama. Pembatasan ini memungkinkan pemetaan ulang dan pembersihan yang cepat saat memori dilepaskan.
- Halaman fisik yang dapat dialokasikan untuk wilayah AWE dibatasi oleh jumlah halaman fisik yang ada di mesin, karena memori ini tidak pernah dipaging – itu dikunci hingga aplikasi secara eksplisit membebaskannya atau keluar. Halaman fisik yang dialokasikan untuk proses tertentu dapat dipetakan ke wilayah virtual AWE mana pun dalam proses yang sama. Aplikasi yang menggunakan AWE harus berhati-hati untuk tidak mengambil terlalu banyak memori fisik sehingga menyebabkan aplikasi lain melakukan paging secara berlebihan atau mencegah pembuatan proses atau thread baru karena kurangnya sumber daya. Gunakan fungsiGlobalMemoryStatusEx untuk memantau penggunaan memori fisik.
- Alamat virtual AWE selalu dapat dibaca dan ditulis dan tidak dapat dilindungi melalui panggilan ke VirtualProtect (artinya, tidak ada memori baca-saja, memori tidak dapat diakses, halaman penjaga, dan yang sejenisnya tidak dapat ditentukan).
- Rentang alamat AWE tidak dapat digunakan untuk menyangga data untuk grafik atau panggilan video.
- Rentang memori AWE tidak dapat dipisahkan, atau potongan-potongannya tidak dapat dihapus. Sebagai gantinya, seluruh rentang alamat virtual harus dihapus sebagai unit saat penghapusan diperlukan. Ini berarti Anda harus menentukan MEM_RELEASE saat memanggil VirtualFree.
- Aplikasi dapat memetakan beberapa wilayah secara bersamaan, asalkan tidak tumpang tindih.
- Aplikasi yang menggunakan AWE tidak didukung dalam mode emulasi. Artinya, aplikasi x86 yang menggunakan fungsi AWE harus dikommpilasikan ulang untuk dijalankan pada prosesor lain, sedangkan sebagian besar aplikasi dapat berjalan tanpa mengolah ulang di bawah emulator di platform lain.
Solusi ini mengatasi masalah memori fisik dengan cara yang sangat umum dan berlaku secara luas. Beberapa manfaat AWE adalah:
- Sekelompok kecil fungsi baru didefinisikan untuk memanipulasi memori AWE.
- AWE menyediakan fitur remapping yang sangat cepat. Remapping dilakukan dengan memanipulasi tabel memori virtual, bukan dengan memindahkan data dalam memori fisik.
- AWE menyediakan granularitas ukuran halaman yang sesuai dengan prosesor (misalnya, 4 KB pada x86), yang lebih berguna untuk aplikasi daripada halaman besar (misalnya, 2MB atau 4MB pada x86).
Aplikasi harus memiliki hak istimewa untuk Mengunci Halaman dalam Memori guna menggunakan AWE. Untuk mendapatkan hak istimewa ini, administrator harus menambahkan Kunci Halaman dalam Memori ke Penetapan Hak Pengguna. Untuk informasi selengkapnya tentang cara melakukannya, lihat "Hak Pengguna" dalam bantuan sistem operasi.
Fungsi berikut membentuk API Address Windowing Extensions (AWE).
Fungsi | Deskripsi |
---|---|
VirtualAlloc dan VirtualAllocEx | Pesan sebagian ruang alamat virtual yang akan digunakan untuk AWE, menggunakan MEM_PHYSICAL. |
AlokasikanHalamanFisikPengguna | Alokasikan memori fisik untuk digunakan dengan AWE. |
MapUserPhysicalPages | Petakan (atau batalkan) alamat virtual AWE pada sekumpulan halaman fisik yang diperoleh dengan AllocateUserPhysicalPages. |
MapUserPhysicalPagesScatter | Peta (atau batalkan validasi) alamat virtual AWE ke sekumpulan halaman fisik yang diperoleh dengan AllocateUserPhysicalPages, tetapi dengan kontrol yang lebih halus daripada yang disediakan oleh MapUserPhysicalPages. |
FreeUserPhysicalPages | Memori fisik gratis yang digunakan untuk AWE. |