AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Large-Address-Aware flag

Ein Thema von youuu · begonnen am 4. Dez 2011 · letzter Beitrag vom 8. Dez 2011
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Large-Address-Aware flag

  Alt 4. Dez 2011, 14:58
Jupp, es muß erstmal im Windows aktiviert sein, dann muß das PE-Flag gesetzt sein und alle Programmteile in deinem Programm müssen dieses unterstützen (sonst passieren unerwartete Dinge).
Nicht nur dann. Das kann auch schon so passieren, weil Windows dann auch an seine Grenzen kommt. Für Windows bleiben dann nämlich nur 1 GB Adressen im Adressraum übrig. Und das ist arg knapp.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#12

AW: Large-Address-Aware flag

  Alt 4. Dez 2011, 15:11
Alle Programme zusammen können mehr als die 2 GB belegen.

Das Flag sagt ja nur, daß der einzelne Prozess nicht mehr als 2 virtuelle GB bekommt.
Aber auch mit nur 2 GB können schon 2 solcher Programme alles überfüllen. Mit LAA würde das nur schon ein einzelnes Programm schaffen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#13

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 18:40
Alle Programme zusammen können mehr als die 2 GB belegen.

Das Flag sagt ja nur, daß der einzelne Prozess nicht mehr als 2 virtuelle GB bekommt.
Aber auch mit nur 2 GB können schon 2 solcher Programme alles überfüllen.
Afaik geht es darum, das Windows im virtuellen Adressraum des Programm (eines jeden Programms) zu wenig Platz hat. Es geht also nicht direkt um den physikalischen Speicher.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 18:52
Normalerweise hat jeder Prozess unter 32-Bit einen Adressraum von 4GB, wo von 2GB für Windows reserviert werden. Dort blendet Windows die Adressen der System DLLs ein. Wird nun dieses Flag gesetzt, hat ein Prozess von diesen 4GB 3GB zur Verfügung und Windows nur noch 1GB. Und mit 1GB stößt Windows so ziemlich an seine Grenzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#15

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 19:48
Das hast du jetzt falsch verstanden.

Von dem virtuellen Adressraum der Anwendungen nimmt Windows nix für seine Verwaltungsaufgaben, sowie für die Cache.

Windows 32 hat seinen 2/4 GB adressierbaren Speicher ... mit PAE (Physical Address Extension) auch mehr.
Dazu dann noch die Pagefile.

Die reservierten/genutzten Teile des virtuellen Speichers jeder Anwendung wird dabei in den physischen Speicher gemäppt,
wobei es sich standardmäßig (vorwigend) von den hohen physikalischen Speicherbereichen etwas für sich und die Treiber nutzt.

Mit LAA kann man jetzt erstmal nur sagen, welchen virtuellen Bereich die Anwendung nutzen kann/darf,
aber wo dieses dann im physischen Speicher (RAM/Pagefile) liegt, ist dem Programm selber vollkommen egal.
Die einzelnen virtuellen Speicherblöcke können sogar wild verteilt im physischen RAM und teilweise auch in der Pagefile liegen.

Einige Teile existieren sogar nichmal direkt im RAM. Viele der MMFs z.B., worüber auch die Binaries der EXEn/DLLs im virtuellen Arbeitsspeicher liegen.
Ist nicht genug Platz im RAM, dann landen große (unveränderte) Teile nicht in der Pagefile ... wäre ja unnötig, da die ja direkt in der EXE-Datei zu finden sind, von wo man sie wieder laden kann, sobald das Programm sie benötigt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 20:02
Bitte nachlesen: http://msdn.microsoft.com/de-de/library/ms189334.aspx
Und wirf auch mal einen Blick auf die Grafik. Sie zeigt genau das, was ich erklärt habe.

Zitat:
Alle Betriebssystemversionen ab Windows 2000 Server, einschließlich Windows Server 2003, besitzen einen Parameter in Boot.ini, mit dem Anwendungen Zugriff auf 3 GB Prozessadressraum gewährt wird. Der Adressraum für den Kernelmodus wird dann auf 1 GB beschränkt.
Wo, sich die Daten dann letztendlich befinden, drüber habe ich gar keine Aussage getroffen. Ich kenne ein Windows mit 512MB, dass da der Adressraum auf die Festplatte ausglegaret werden muss ist klar.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#17

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 20:18
Deswegen muß man es doch auch an 2 Stellen aktivieren, wenn man es nutzen will.

Einmal für Windows (wobei z.B. die WindowsFileCache nicht nur auf den höheren Speicherbereich beschränkt ist)
und dann noch das Flag im jeweiligen EXE-Header.

Das EXE-Flag hat aber keine Wirkung auf die "reale" Speicherverwaltung des Windows,
sondern nur auf die Virtuelle der Anwendung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 20:25
Deswegen muß man es doch auch an 2 Stellen aktivieren, wenn man es nutzen will.
Ich habe nichts anderes behauptet.

Zitat:
Einmal für Windows (wobei z.B. die WindowsFileCache nicht nur auf den höheren Speicherbereich beschränkt ist)
Wie kommst du denn jetzt auf den Windows File Cache?

Zitat:
Das EXE-Flag hat aber keine Wirkung auf die "reale" Speicherverwaltung des Windows,
sondern nur auf die Virtuelle der Anwendung.
Auch da habe ich nichts anderes behauptet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 21:36
Wird nun dieses Flag gesetzt, hat ein Prozess von diesen 4GB 3GB zur Verfügung und Windows nur noch 1GB. Und mit 1GB stößt Windows so ziemlich an seine Grenzen.
Und? Schon mal ein Windows gesehen das versucht annähernd 1 GB an System-DLLs in einem 32-Bit Prozess zu laden? Es gibt genügend Teile von Windows die den Anwendungs-Prozessraum nicht tangieren. Bei 1GB physikalischen RAM gebe ich dir echt mit den Grenzen wenn es um Vista oder Win7 geht.

Ich gebe dir aber recht das man eigentlich in vielen Fällen einen Design-Fehler im Programm hat wenn 2 GB an virtuellen RAM für die nicht reichen würden. Außer natürlich man entwickelt sowas wie ein DBMS ...

Aber mir hat schon mal geholfen bis zur Behebung eines Implementierungsmangels die Anwendung mal mit dem 3GB-Schalter kompilieren zukönnen . Und da mittlerweile 64-Bit Windows der Standard ist braucht der Anwender auch nix konfigurien. Win32-Prozesse haben unter Win64 eigentlich immer 3GB zur "eigenen" Verfügung.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

AW: Large-Address-Aware flag

  Alt 5. Dez 2011, 21:46
Und? Schon mal ein Windows gesehen das versucht annähernd 1 GB an System-DLLs in einem 32-Bit Prozess zu laden?
Keine Ahnung, aber laut Jeffrey Richter, sind angeblich schon 2GB unter Windows 200 recht knapp bemessen. Eventuell hat sich das ab Windows XP geändert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz