Ekstensi Windowing Alamat

Address Windowing Extensions (AWE) adalah sekumpulan ekstensi yang memungkinkan aplikasi untuk dengan cepat memanipulasi memori fisik yang 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 pas dalam ruang alamat pengguna 2GB aplikasi adalah pembatasan yang parah. Dalam situasi ini, cache terlalu kecil untuk mendukung aplikasi dengan benar.

AWE memecahkan masalah ini dengan memungkinkan aplikasi untuk 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 dipagasi dan tampilan jendela dari berbagai bagian memori fisik ini dalam ruang alamat virtual 32-bit.

AWE menempatkan beberapa batasan tentang bagaimana memori ini dapat digunakan, terutama karena pembatasan ini memungkinkan pemetaan, pemetaan, pemetaan ulang, dan pembekuan yang sangat cepat. Manajemen memori yang cepat penting untuk ruang alamat yang berpotensi 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 memberikan remapping dan pembersihan cepat ketika memori dibebaskan.
  • Halaman fisik yang dapat dialokasikan untuk wilayah AWE dibatasi oleh jumlah halaman fisik yang ada di komputer, karena memori ini tidak pernah di-paged - itu dikunci sampai 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 begitu banyak memori fisik sehingga mereka menyebabkan aplikasi lain halaman terlalu berlebihan atau mencegah pembuatan proses atau utas baru karena kurangnya sumber daya. Gunakan fungsi GlobalMemoryStatusEx untuk memantau penggunaan memori fisik.
  • Alamat virtual AWE selalu dibaca/ditulis dan tidak dapat dilindungi melalui panggilan ke VirtualProtect (yaitu, tidak ada memori baca-saja, memori noaccess, halaman penjaga, dan sejenisnya dapat ditentukan).
  • Rentang alamat AWE tidak dapat digunakan untuk buffer data untuk grafis atau panggilan video.
  • Rentang memori AWE tidak dapat dipisahkan, juga tidak dapat potongan-potongannya dihapus. Sebaliknya, 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 dikompresi 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 kemampuan remapping yang sangat cepat. Pemindahan ulang 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 Kunci Halaman dalam hak istimewa Memori untuk menggunakan AWE. Untuk mendapatkan hak istimewa ini, administrator harus menambahkan Halaman Kunci dalam Memori ke Penetapan Hak Pengguna pengguna. Untuk informasi selengkapnya tentang cara melakukannya, lihat "Hak Pengguna" di bantuan sistem operasi.

Fungsi berikut membentuk ADDRESS Windowing Extensions (AWE) API.

Fungsi Deskripsi
VirtualAlloc dan VirtualAllocEx Pesan sebagian ruang alamat virtual yang akan digunakan untuk AWE, menggunakan MEM_PHYSICAL.
AllocateUserPhysicalPages Alokasikan memori fisik untuk digunakan dengan AWE.
MapUserPhysicalPages Memetakan (atau membatalkan) alamat virtual AWE ke set halaman fisik apa pun yang diperoleh dengan AllocateUserPhysicalPages.
MapUserPhysicalPagesScatter Memetakan (atau membatalkan) alamat virtual AWE ke set halaman fisik apa pun yang diperoleh dengan AllocateUserPhysicalPages, tetapi dengan kontrol yang lebih baik daripada yang disediakan oleh MapUserPhysicalPages.
FreeUserPhysicalPages Memori fisik gratis yang digunakan untuk AWE.