Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Address Windowing Extensions (AWE) is een set extensies waarmee een toepassing snel fysiek geheugen kan bewerken dat groter is dan 4 GB. Bepaalde gegevensintensieve toepassingen, zoals databasebeheersystemen en wetenschappelijke en technische software, hebben toegang nodig tot zeer grote caches met gegevens. In het geval van zeer grote gegevenssets is het beperken van de cache tot binnen de 2 GB gebruikersadresruimte van een toepassing een ernstige beperking. In dergelijke situaties is de cache te klein om de toepassing goed te ondersteunen.
AWE lost dit probleem op door toepassingen toe te staan grote hoeveelheden geheugen rechtstreeks aan te pakken terwijl ze 32-bits aanwijzers blijven gebruiken. Met AWE kunnen toepassingen gegevenscaches hebben die groter zijn dan 4 GB (waar voldoende fysiek geheugen aanwezig is). AWE maakt gebruik van fysiek niet-gepaginad geheugen en vensterweergaven van verschillende delen van dit fysieke geheugen binnen een 32-bits virtuele adresruimte.
AWE plaatst enkele beperkingen op de manier waarop dit geheugen kan worden gebruikt, voornamelijk omdat deze beperkingen extreem snelle toewijzing, opnieuw toewijzing en vrijgave mogelijk maken. Snel geheugenbeheer is belangrijk voor deze potentieel enorme adresruimten.
- Virtuele adresbereiken die voor de AWE zijn toegewezen, zijn niet deelbaar met andere processen (en dus niet overgenomen). In feite is het niet toegestaan dat twee verschillende virtuele AWE-adressen binnen hetzelfde proces dezelfde fysieke pagina koppelen. Deze beperkingen vergemakkelijken snelle herverdeling en opschoning wanneer het geheugen wordt vrijgemaakt.
- De fysieke pagina's die kunnen worden toegewezen voor een AWE-regio, worden beperkt door het aantal fysieke pagina's dat aanwezig is op de computer, omdat dit geheugen nooit wordt gepaginad. Het is vergrendeld totdat de toepassing deze expliciet vrijgeeft of afsluit. De fysieke pagina's die voor een bepaald proces zijn toegewezen, kunnen worden toegewezen aan elke virtuele AWE-regio binnen hetzelfde proces. Toepassingen die gebruikmaken van AWE moeten voorzichtig zijn om niet zoveel fysiek geheugen te gebruiken dat ze ertoe leiden dat andere toepassingen te veel pagina's maken of voorkomen dat nieuwe processen of threads worden gemaakt vanwege gebrek aan resources. Gebruik de functie GlobalMemoryStatusEx om het fysieke geheugengebruik te bewaken.
- Virtuele AWE-adressen zijn altijd lees/schrijf en kunnen niet worden beveiligd via aanroepen naar VirtualProtect (dat wil zeggen, geen alleen-lezen geheugen, geen toegang-geheugen, bewakingspagina's en dergelijke kunnen worden opgegeven).
- AWE-adresbereiken kunnen niet worden gebruikt om gegevens te bufferen voor afbeeldingen of videogesprekken.
- Een AWE-geheugenbereik kan niet worden gesplitst, noch kunnen delen ervan worden verwijderd. In plaats daarvan moet het hele virtuele adresbereik worden verwijderd als een eenheid wanneer verwijdering is vereist. Dit betekent dat u MEM_RELEASE moet opgeven bij het aanroepen van VirtualFree.
- Toepassingen kunnen meerdere regio's tegelijk koppelen, mits ze elkaar niet overlappen.
- Toepassingen die gebruikmaken van AWE worden niet ondersteund in de emulatiemodus. Dat wil gezegd: een x86-toepassing die gebruikmaakt van AWE-functies, moet opnieuw worden gecompileerd om te worden uitgevoerd op een andere processor, terwijl de meeste toepassingen kunnen worden uitgevoerd zonder opnieuw te compileren onder een emulator op andere platforms.
Deze oplossing lost de problemen met het fysieke geheugen op een zeer algemene, algemeen toepasselijke manier op. Enkele voordelen van AWE zijn:
- Er wordt een kleine groep nieuwe functies gedefinieerd om AWE-geheugen te manipuleren.
- AWE biedt zeer snelle mogelijkheden voor herindeling. Het opnieuw toewijzen wordt gedaan door de virtuele geheugentabellen te manipuleren, niet door gegevens in het fysieke geheugen te verplaatsen.
- AWE biedt granulariteit van paginaformaat die geschikt is voor de processor (bijvoorbeeld 4 kB op x86), wat nuttiger is voor toepassingen dan grote pagina's (bijvoorbeeld 2 MB of 4 MB op x86).
Een toepassing moet de bevoegdheid 'Lock Pages in Memory' hebben om AWE te kunnen gebruiken. Om deze bevoegdheid te verkrijgen, moet een beheerder Pagina's in het geheugen vergrendelen toevoegen aan de Gebruikersrechten-toewijzingen. Zie 'Gebruikersrechten' in de Help van het besturingssysteem voor meer informatie over hoe u dit doet.
De volgende functies vormen de AWE-API (Address Windowing Extensions).
Functie | Beschrijving |
---|---|
VirtualAlloc en VirtualAllocEx- | Reserveer een deel van de virtuele adresruimte die moet worden gebruikt voor AWE, met behulp van MEM_PHYSICAL. |
AllocateUserPhysicalPages | Fysiek geheugen toewijzen voor gebruik met AWE. |
MapUserPhysicalPages | Virtuele AWE-adressen toewijzen (of ongeldig maken) op elke set van fysieke pagina's die zijn verkregen met AllocateUserPhysicalPages. |
MapUserPhysicalPagesScatter | Virtuele AWE-adressen toewijzen (of ongeldig maken) op een set fysieke pagina's die zijn verkregen met AllocateUserPhysicalPages, maar met een nauwkeurigere controle dan die van MapUserPhysicalPages. |
FreeUserPhysicalPages | Vrij fysiek geheugen dat is gebruikt voor AWE. |