Adressfenstererweiterungen

Adressfenstererweiterungen (Address Windowing Extensions, AWE) sind eine Reihe von Erweiterungen, mit denen eine Anwendung den physischen Arbeitsspeicher von mehr als 4 GB schnell bearbeiten kann. Bestimmte datenintensive Anwendungen, wie Datenbankmanagementsysteme und wissenschaftliche und technische Software, benötigen Zugriff auf sehr große Caches von Daten. Bei sehr großen Datasets ist es eine schwerwiegende Einschränkung, den Cache so zu beschränken, dass er in den 2 GB Benutzeradressraum einer Anwendung passt. In diesen Situationen ist der Cache zu klein, um die Anwendung ordnungsgemäß zu unterstützen.

AWE löst dieses Problem, indem Es Anwendungen ermöglicht, große Mengen an Arbeitsspeicher direkt anzugehen und weiterhin 32-Bit-Zeiger zu verwenden. Mit AWE können Anwendungen Über Datencaches verfügen, die größer als 4 GB sind (bei denen ausreichend physischer Arbeitsspeicher vorhanden ist). AWE verwendet physischen nicht auslagerten Arbeitsspeicher und Fensteransichten verschiedener Teile dieses physischen Arbeitsspeichers innerhalb eines virtuellen 32-Bit-Adressraums.

AWE legt einige Einschränkungen für die Verwendung dieses Arbeitsspeichers fest, vor allem, weil diese Einschränkungen eine extrem schnelle Zuordnung, Neuzuordnung und Freigabe ermöglichen. Für diese potenziell enormen Adressräume ist eine schnelle Speicherverwaltung wichtig.

  • Für die AWE zugewiesene virtuelle Adressbereiche sind nicht mit anderen Prozessen verwertbar (und daher nicht vererbbar). Tatsächlich dürfen zwei unterschiedliche virtuelle AWE-Adressen innerhalb desselben Prozesses nicht dieselbe physische Seite zuordnen. Diese Einschränkungen ermöglichen eine schnelle Neuzuordnung und Bereinigung, wenn Arbeitsspeicher freigegeben wird.
  • Die physischen Seiten, die einer AWE-Region zugeordnet werden können, sind durch die Anzahl der physischen Seiten auf dem Computer begrenzt, da dieser Arbeitsspeicher nie ausgelagert wird – er wird gesperrt, bis die Anwendung ihn explizit freigibt oder beendet. Die physischen Seiten, die einem bestimmten Prozess zugeordnet sind, können einer beliebigen virtuellen AWE-Region innerhalb desselben Prozesses zugeordnet werden. Anwendungen, die AWE verwenden, müssen darauf achten, dass sie nicht so viel physischen Arbeitsspeicher beanspruchen, dass andere Anwendungen übermäßig ausgelagert werden oder das Erstellen neuer Prozesse oder Threads aufgrund von Ressourcenmangel verhindern. Verwenden Sie die GlobalMemoryStatusEx-Funktion , um die Nutzung des physischen Arbeitsspeichers zu überwachen.
  • Virtuelle AWE-Adressen sind immer Lese-/Schreibzugriff und können nicht über Aufrufe von VirtualProtect geschützt werden (d. a. es können kein schreibgeschützter Arbeitsspeicher, kein Zugriffsspeicher, keine Überwachungsseiten usw. angegeben werden).
  • AWE-Adressbereiche können nicht zum Puffern von Daten für Grafiken oder Videoanrufe verwendet werden.
  • Ein AWE-Speicherbereich kann weder aufgeteilt noch Teile davon gelöscht werden. Stattdessen muss der gesamte virtuelle Adressbereich als Einheit gelöscht werden, wenn eine Löschung erforderlich ist. Dies bedeutet, dass Sie beim Aufrufen vonVirtualFree MEM_RELEASE angeben müssen.
  • Anwendungen können mehrere Regionen gleichzeitig zuordnen, sofern sie sich nicht überschneiden.
  • Anwendungen, die AWE verwenden, werden im Emulationsmodus nicht unterstützt. Das heißt, eine x86-Anwendung, die AWE-Funktionen verwendet, muss neu kompiliert werden, um auf einem anderen Prozessor auszuführen, während die meisten Anwendungen ohne erneute Kompilierung unter einem Emulator auf anderen Plattformen ausgeführt werden können.

Mit dieser Lösung werden die Probleme mit dem physischen Arbeitsspeicher auf sehr allgemeine und weitgehend anwendbare Weise behoben. Einige der Vorteile von AWE sind:

  • Es wird eine kleine Gruppe neuer Funktionen definiert, um den AWE-Arbeitsspeicher zu bearbeiten.
  • AWE bietet eine sehr schnelle Neuzuordnungsfunktion. Die Neuzuordnung erfolgt durch Das Bearbeiten von Tabellen im virtuellen Arbeitsspeicher, nicht durch Verschieben von Daten in den physischen Arbeitsspeicher.
  • AWE bietet eine für den Prozessor geeignete Granularität der Seitengröße (z. B. 4 KB auf x86), die für Anwendungen nützlicher ist als für große Seiten (z. B. 2 MB oder 4 MB auf x86).

Eine Anwendung muss über die Berechtigung Seiten im Arbeitsspeicher sperren verfügen, um AWE verwenden zu können. Um diese Berechtigung zu erhalten, muss ein Administrator sperrte Seiten im Arbeitsspeicher den Benutzerrechten Zuweisungen des Benutzers hinzufügen. Weitere Informationen dazu finden Sie unter "Benutzerrechte" in der Betriebssystemhilfe.

Die folgenden Funktionen bilden die AWE-API (Address Windowing Extensions).

Funktion BESCHREIBUNG
VirtualAlloc und VirtualAllocEx Reservieren Sie einen Teil des virtuellen Adressraums, der für AWE verwendet werden soll, und verwenden Sie MEM_PHYSICAL.
AllocateUserPhysicalPages Ordnen Sie physischen Arbeitsspeicher für die Verwendung mit AWE zu.
MapUserPhysicalPages Ordnen Sie virtuelle AWE-Adressen einer beliebigen Gruppe von physischen Seiten zu, die mit AllocateUserPhysicalPages abgerufen wurden.
MapUserPhysicalPagesScatter Ordnen Sie virtuelle AWE-Adressen einem beliebigen Satz von physischen Seiten zu, die mit AllocateUserPhysicalPages abgerufen wurden, aber mit einer genaueren Steuerung als die von MapUserPhysicalPages bereitgestellte.
FreeUserPhysicalPages Freier physischer Arbeitsspeicher, der für AWE verwendet wurde.