Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wo ist der Speicher? (https://www.delphipraxis.net/130607-wo-ist-der-speicher.html)

Mattze 11. Mär 2009 07:56


Wo ist der Speicher?
 
Hallo,

Windows zeigt richtig 2 GB, das Bios auch.
Wenn ich per GlobalMemoryStatus dmTotalPhys auslese, kriege ich nur 2046 MB, genau 1.658.880 Byte weniger. :(
Mein Freund hat 1.280MB. Per GlobalMemoryStatus werden nur 1279MB angezeigt. :(

Wo ist der Rest? Und wie rechnet Windows das korrekt hoch?

Gruß
Mattze

Uwe Raabe 11. Mär 2009 08:41

Re: Wo ist der Speicher?
 
Das hat offensichtlich mit der Heisenberg'schen Unschärferelation zu tun, nach der die Überprüfung eines zu messenden Wertes eben diesen durch die Messung verfälscht. Hier scheint es der Code zu sein, der den freien Speicher misst, dabei aber selber Speicher verbraucht. :wink:

nahpets 11. Mär 2009 08:48

Re: Wo ist der Speicher?
 
Hallo,

schau mal bitte beim Hersteller nach, der schreibt da lapidar: GlobalMemoryStatus can return incorrect information. Use the GlobalMemoryStatusEx function instead..

@Uwe Raabe
Deine Antwort gefällt mir 8)

himitsu 11. Mär 2009 09:21

Re: Wo ist der Speicher?
 
ich glaub Speicher für dir Grafikkarte (Shared Memory) und z.B. für die Cache des BIOS wird auch oftmals Speicher abgezwackt, welcher dann nicht für Windows zur Verfügung steht und demnach nicht angezeigt wird.

Und dann gibt es ja auch noch Rundungsfehler.

BAMatze 11. Mär 2009 09:36

Re: Wo ist der Speicher?
 
Ich bin mir zwar jetzt auch nicht so sicher, aber wenn man sich mal die Fertigungsgenauigkeiten und auch die Fähigkeit der Messverfahren sieht, die zwar schon sehr gut sind aber ebend nicht perfekt, solltest du eh immer damit rechnen, dass du nicht wirklich genau 2GB Speicher hast sonder nur annähernd 2GB. Gehen wir jetzt mal davon aus, dass nur bei der Fertigung und bei der Messung "kleine" Fehler auftreten (lassen wir mal Bios und andere Bereiche außer Acht, die auch noch Speicher benötigen), welche sich dann auch noch Addieren, dann kommen wir bei 2.048.000.000 und fehlenden 1.658.880 Byte auf einen Gesamtfehler von 0,081%.
Jetzt kommt noch der Einwurf von ein paar meiner Vorredner dazu, dass Speicher ja auch bei der Messung belegt ist, also kannst du grob sagen der fehlende Speicher x liegt wohl locker unter 0,081%. Ich finde das ist eigentlich ok. Wenn du aber vieleicht genaueres Wissen willst, kannst du zumindest den Messfehler verbessern, indem du Messreihen anlegst und zwischen den Messreihen vieleicht auch die Vergleichsbedingungen (eins der Merkmale muss geändert werden: Messverfahren, Durchführender oder Messort). Für näheres hält die Familie der DIN9000 mehr Informationen bereit.

Hoffe der Beitrag konnte dir etwas weiter helfen.

BAMatze

Satty67 11. Mär 2009 10:36

Re: Wo ist der Speicher?
 
Zitat:

GlobalMemoryStatus dmTotalPhys
Wieviel Speicher sein Code braucht ist wohl egal, auch wieviel andere Anwendungen/Bios brauchen. Er liest ja die Menge des physikalisch vorhanden Speichers aus, nicht den freien Speicher.

Umrechnungsfehler... entweder im Programm, API oder sonstwo. Einfach aufrunden mit 32 MByte Genauigkeit. So kleine Riegel verbaut ja heute keiner mehr.

himitsu 11. Mär 2009 10:58

Re: Wo ist der Speicher?
 
Zitat:

Zitat von Satty67
Wieviel Speicher sein Code braucht ist wohl egal, auch wieviel andere Anwendungen/Bios brauchen. Er liest ja die Menge des physikalisch vorhanden Speichers aus, nicht den freien Speicher.

nicht unbedingt ... wenn das BIOS Speicher abzwackt und dem Windows dann sagt es gäbe nur noch soviel (Windows schaut sich ja nicht an welche Riegel drin sind, sondern fragt das BIOS), dann weiß Windows nichts von dem fehlenden Speicher und zeigt diesen auch nicht an.

Satty67 11. Mär 2009 11:07

Re: Wo ist der Speicher?
 
Zitat:

Zitat von himitsu
wenn das BIOS Speicher abzwackt und dem Windows dann sagt es gäbe nur noch soviel

Richtig! Google sagt auch, das der Wert vom Bios falsch geliefert wird, bzw. der Wert ist, den Windows nutzen kann. (Kann je nach Speicher-Mode sogar 18 MByte weniger sein)

Aber dann ist dmTotalPhys der falsche Begriff, denn egal wie viel irgendwer abzwackt, bleiben 2048 MByte physikalisch installierter Speicher. Muss man dann wohl als ein dmTotalAvailAfterBiosCatchHisPart sehen.

Bleibt also nur runden nach oben, wenn man die installierte (Hardware) Speicher-Menge anzeigen will.

himitsu 11. Mär 2009 11:15

Re: Wo ist der Speicher?
 
dmTotalPhys ist sozusagen der totale und Windows zur Verfügung stehende Speicher ... und da stimmt der Name schon irgendwie :angel2:

Satty67 11. Mär 2009 11:38

Re: Wo ist der Speicher?
 
Ok, dann gebe ich mich geschlagen, wohl nur eine Frage der Formulierung.

Dann (wenn man den installierten Speicher will) 31 Mbyte dazu zählen und wieder auf 32 MByte Genauigkeit abrunden. Können ja immerhin 18 MByte weniger sein, soweit die von mir gefunden Berichte stimmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Seite 1 von 2  1 2      

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