Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

21.03.2010, 12:52

Zitat


[...] Fortunately, Windows NT does, in fact, offer virtual memory to its applications (or processes) and subsystems. Windows NT provides a page-based virtual memory management scheme that allows applications to realize a 32-bit linear address space for 4 gigabytes (GB) of memory. As a result, each application has its own private address space from which it can use the lower 2 GB—the system reserves the upper 2 GB of every process's address space for its own use.

12

21.03.2010, 13:21

Danke für den Link David. Was ich dort nicht heraus lesen konnte ist, ob es bei 64 Bit das gleiche Verhalten ist.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

21.03.2010, 14:16

Schau mal unter folgendem Link.

Noch n bisschen Hintergrundwissen:

WinNT unterteilt den Adressraum grundlegend in zwei Bereiche: 0x00000000 - 0x7fffffff ist der private Bereich der jedem Prozess für sich zur verfügung steht (fast, s.U.) und 0x80000000 - 0xffffffff ist der Bereich den das System für sich reserviert und auf den kein weiterer Zugriff möglich ist.

Außerdem, ich habs ja eben schon kurz erwähnt, wird der Private bereich nochmals dreigeteilt:

0x00000000 - 0x0000ffff ist immer frei und u.A. dazu gedacht fehlerhafte Zugriffe (z.B. Nullzeiger dereferenzierung) erkennen zu können.

0x00010000 - 0x7ffeffff ist der Bereich über den der Prozess tatsächlich verfügen kann.

0x7fff0000 - 0x7fffffff ist wie der untere Bereich geschützt.

Die oberen 2GB sind, wie gesagt, für das System für sich selbst reserviert und nicht weiter zu gebrauchen (für Prozesse). Da liegen dann z.B. der Betriebssystemcode, Gerätetreiber usw...
Übrigens werden DLLs alle in den "privaten" Adressraum von Prozessen geladen, weil der Systemteil ja keinerlei Zugriffsmöglichkeit mehr bietet.

Werbeanzeige