Frage zu Verwendung von RAM durch das Betriebssystem

metalstore

Software-Overclocker(in)
Guten Abend alle miteinander :)

ich habe eine Frage bezüglich RAM und dessen Ausnutzung durch das OS (also nicht speziell auf eine Marke oder z.B. DDR3 bezogen).

auf einer Seite hab ich folgendes zum Thema Arbeitsspeicher gefunden:
Durch die Wortbreite von 32 Bit ist der Prozessor in der Lage, 2^32 (= 4.294.967.296) Byte Arbeitsspeicher zu adressieren. Das entspricht 4 Gibibyte und in der gängigen Dezimalbezeichnung 4 Gigabyte. Mehr Arbeitsspeicher steht dem Betriebssystem damit nicht zur Verfügung.
So weit, so gut, bis hierhin stimme ich dem vollkommen zu.
Doch nun kommt der eigentliche Knackpunkt, um den es mir geht:
Da der Arbeitsspeicher von Zusatz-Hardware wie der Grafikkarte ebenfalls auf das 4-GByte-Limit einzahlt, reduziert sich der verfügbare Speicher in der Praxis meist noch weiter. Windows in der 32-Bit-Version kann somit meist nur zwischen 3,1 und 3,7 GByte Arbeitsspeicher verwenden.

Dass das OS nur z.B. 3G(i)B RAM nutzen kann, weil die GPU 1G(i)B vRAM hat (wäre bei mir z.B. der Fall), wäre/ist mir neu
stimmt das auch so, oder wird da einem Humbug verzapft?

Gruß
metalstore

P.S.: bei Bedarf kann ich gern auch mal den Link der Seite von der ich das habe posten.
 
Nein, das hast du falsch verstanden. Wenn die Grafikkarte zu wenig VRAM hat, dann greift auch sie auf eine niedrigere Speicherebene zu, in dem Fall ist ihre erste Anlaufstelle der RAM der CPU, und nutzt diesen mit.

Bei genügend RAM können die meisten Karten standardmäßig bis zu 4GB Speicher (VRAM+RAM) nutzen. (Wie das bei den neuen ist, die schon selber mehr als das haben, müsste ich nachschauen)


Edit:

Zur Erläuterung und allgemeinen Nutzung von Speicher im Computer:

Ganz "nah" an den Rechenchips (CPU, oder auch Grafikprozessor mit ein paar Sonderregeln) der RAM sitzt, umso schneller muss er sein, damit der entsprechende Chip schnell seine Daten zur Verfügung hat und entsprechend schnell arbeiten kann. Gleichzeitig ist so schneller Speicher (mit Zugriffszeiten im Nanosekunden-Bereich, also um mehrere Zehnerpotenzen schneller als normaler RAM) aber sehr teuer, weshalb er sehr klein ist. Deshalb ist Speicher im Computer in viele verschiedene Ebenen aufgeteilt, je weiter du von den Prozessoren weg gehst, desto größer, langsamer und billiger ist der entsprechende Speicher. Üblicherweise kommen bei der CPU zuerst 3 Level Cache-Speicher, dann der Hauptspeicher (RAM), und dann der nicht-flüchtige Speicher in Form von Laufwerken.

Je nachdem, welche Daten wann gebraucht werden, wird die ganze Zeit alles mögliche zwischen diesen ganzen Ebenen hin- und hergeschoben, damit der Prozessor jetztendlich möglichst immer alles genau dann zur Verfügung hat, wenn er es braucht und nicht lange darauf warten muss.
Das zu verwalten ist so ziemlich die elementarste Funktion eines Betriebssystems, und es gibt eine ganze Wissenschaft daraus, die optimalsten Verwaltungsmethoden zu finden.
 
Zuletzt bearbeitet:
also sofern kein Shared Memory/HyperCache (oder wie die ganzen Dingern auch alle heißen) eingeschaltet ist, dann dann stehen dem OS in dem Fall auch die vollen 4GB RAM (+ die 1GB vRAM) zur Verfügung?
Habe cih das richtig verstanden? :)
 
Ja, der CPU stehen ebenfalls die vollen 4GB zur Verfügung. Prinzipiell sollte die Grafikkarte sich davon nur das nehmen können, was die CPU gerade nicht braucht. Wenn dein RAM zu klein wird, wird auf die Festplatte ausgelagert, und du merkst Performanceeinbrüche.
 
Nein, das hast du falsch verstanden. Wenn die Grafikkarte zu wenig VRAM hat, dann greift auch sie auf eine niedrigere Speicherebene zu, in dem Fall ist ihre erste Anlaufstelle der RAM der CPU, und nutzt diesen mit.
Das wäre das, was früher mit der AGP Aperture Size konfiguriert wurde. Wie das bei PCIe heute aussieht, weiß ich jetzt ad hoc allerdings nicht, eine ähnliche Option habe ich bis jetzt noch nicht im BIOS gefunden. Jedenfalls stellt das in dem konkreten Fall hier allerdings auch nicht ganz das Problem dar, sondern es hängt hier primär mit dem sogenannten Memory Mapped I/O zusammen. Eine spezifische Erklärung zu dem Problem gibt es auch hier. Echtes shared memory käme also noch obendrauf.
 
Alles klar ;)
Aber jede Literatur behauptet immer, es würde keine RAM Limitierung bei 64-bit OS' geben, obwohl das ja theoretisch (physische Grenze bei 2^64 Byte = 16 Exbibyte wenn mich nicht alles täuscht bzw. bei z.B. Windows als künstlich beschränkt) :D

Abgesehen davon könnte man, wenn die Problematik/ meine Frage aus dem ersten Post genommen wird, keine z.B. GTX Titan (vollständig?) mit einem 32-bit OS verwenden (Sinnhaftigkeit außer acht gelassen)? :P
 
Alles klar ;)
Aber jede Literatur behauptet immer, es würde keine RAM Limitierung bei 64-bit OS' geben, obwohl das ja theoretisch (physische Grenze bei 2^64 Byte = 16 Exbibyte wenn mich nicht alles täuscht bzw. bei z.B. Windows als künstlich beschränkt) :D

Abgesehen davon könnte man, wenn die Problematik/ meine Frage aus dem ersten Post genommen wird, keine z.B. GTX Titan (vollständig?) mit einem 32-bit OS verwenden (Sinnhaftigkeit außer acht gelassen)? :P

Nein, das ist auch Unsinn. Natürlich hat auch ein 64bit System eine Beschränkung, was den Speicher angeht. Bei Windows liegt der mWn bei 192GB, was wohl eine künstliche Beschränkung sein wird (oder ich kann nicht mehr rechnen ... ).


Wer eine GTX Titan in ein 32bit-System baut, hat größere Probleme in seinem Leben als die Speichernutzung seiner Grafikkarte :ugly:

Aber prinzipiell bin ich mir nicht sicher, ob man das so überhaupt sagen kann, da die Grafikkarte ja sowieso einen eigenen und vollkommen anderen Rechenchip hat; ich könnte mir vorstellen, dass die auch andere Zahlendarstellungen verwendet als die CPU. Dann würden für sie sowieso eigene Regeln gelten.
 
Nun, da ja auf der Seite, von der ich das habe, gesagt wird, dass die Menge an GPU-eigenem RAM die vorhanden ist vom "normalen" RAM abgezogen wird, und dies scheinbar nicht stimmt, scheint diese Seite an dieser Stelle Quark zu verzapfen...

Denoch würde mich interessieren, wieso bei einem 32-bit OS und 4G(i)B RAM nicht die vollen 4G(i)B ausgenutzt werden können, oder hängt das mit dem von bingo88 genannten Memory Mapped I/O zusammen?:)
 
Unter anderem daran liegt es. Zum einen benötigt das OS selbst noch RAM (genauer: der Kernel), zum anderen einige Geräte bzw. deren Treiber.
 
Also ...

Dass der RAM um die gleiche Menge beschränkt wird, die du als VRAM hast, ist vollkommener Blödsinn. Es sei denn es gibt etwas, das ich nicht kenne, aber das bezweifle ich :D

Dass das OS nur 3,5GB nutzen kann, liegt daran, dass es eben 4Gibibyte sind. 4GiB sind ~ 3,75GB, das System zeigt dir aber bekanntlich nur relativ gerade Zahlen an, deswegen werden wohl vermutlich 3,5GB angezeigt.


Memory Mapped I/O ist etwas vollkommen anderes und hängt damit nicht zusammen.

Übrigens gibt es zu jedem dieser Themen schöne Wikipedia-Artikel, selbst einen namens "4-GB-Grenze" :D
 
Ok ^^
Das Betriebssystem (Windows mal angenommen) rechnet schön mit Gibibyte und dergleichen, zeigt das aber als Gigabyte und so an, daran sollte es also nicht liegen ;)
Das von bingo88 mit dem Kernel und den Treibern klingt soweit ganz logisch :)
Ich Les mir morgen die ganzen Wiki-Artikel nochmal durch, vielleicht wird es dann noch klarer ;)
 
Memory Mapped I/O ist etwas vollkommen anderes und hängt damit nicht zusammen.

Übrigens gibt es zu jedem dieser Themen schöne Wikipedia-Artikel, selbst einen namens "4-GB-Grenze" :D
Wenn du dir die von mir verlinkten Artikel angesehen hättest, würdest du das hier nicht schreiben müssen. Beim memory mapped I/O wird ein Teil der verfügbaren Adressen für Geräte verwendet, so dass ein Zugriff auf das Gerät über eine Speicheradresse möglich wird. Natürlich sind diese gemappten Adressen dann nicht mehr als regulärer Speicher nutzbar. Das gibt es auch noch als Port Mapped I/O, dann entsprechend mit Portnummern. Das hat nichts mit Memory mapped File I/O zu tun, was auch ab und an als MMIO bezeichnet wird und eine ganz andere Klamotte ist.

Das von bingo88 mit dem Kernel und den Treibern klingt soweit ganz logisch :)
Da ich mich schon mal an einem eigenen OS versucht habe, kann ich dir auch sagen, dass das einen nennenswerten Einfluss hat.
 
Ehrlich gesagt, die meisten Betriebssysteme wechseln von Anzeige zu Anzeige, in was sie genau rechnen :D Ganz besonders Windows ... Das rechnet mal in GB, mal in GiB, und manchmal sogar gemischt (leider kein Scherz ... siehe Datenträgerverwaltung).
 
Ehrlich gesagt, die meisten Betriebssysteme wechseln von Anzeige zu Anzeige, in was sie genau rechnen :D Ganz besonders Windows ... Das rechnet mal in GB, mal in GiB, und manchmal sogar gemischt (leider kein Scherz ... siehe Datenträgerverwaltung).
Das stimmt zwar, aber die 3,x GB bei einem 32-Bit Windows mit 4 GB RAM haben ausnahmsweise mal nichts mit der Umrechnung zu tun.
 
Heutzutage sind die 4GB unter Windows 32bit eine Kunstlichte Beschränkung. Die meisten Systeme unterstützen inzwischen PAE.
Unter Intel ab Pentium Pro und bei AMD ab dem Athlon.

Damit sind bis zu 64 GB Ram ansprechbar durch einen auf 36 bit erweiterten Adressraum.

Ich kann es leider nicht Verifizieren aktuell aber XP vor SP2 soll damit Zurrecht kommen. Alternativ Linux/Unix und Co.
Unter Microsoft kommen die meisten Server-varianten mit mehr als 4 GiB zurrecht. Allen vorran die Datacenter Editionen.

soviel dazu :ugly:
 
Das stimmt zwar, aber die 3,x GB bei einem 32-Bit Windows mit 4 GB RAM haben ausnahmsweise mal nichts mit der Umrechnung zu tun.

Dann sag mir mal, warum ich, wenn ich 16384 MB (=16 GiB installier habe, angezeigt bekomme, dass 16,0 GB installiert sind? Natürlich hat das unter anderem mit der Umrechnung zu tun.
 
Man hätte in unserem Fall 4096 MiB installiert und es werden 4GB angezeigt
Du hast recht, durch die Umrechnung wird weniger angezeigt als man eigentlich hat.
In einem Punkt hast du aber unrecht: die Umrechnung liefert keine Erklärung dafür, wieso weniger als 4 (egal ob Gigabyte oder Gibibyte) angezeigt werden :)
 
Dann sag mir mal, warum ich, wenn ich 16384 MB (=16 GiB installier habe, angezeigt bekomme, dass 16,0 GB installiert sind? Natürlich hat das unter anderem mit der Umrechnung zu tun.
Richtig, du hast zwar 16,0 GB aber nicht 15,x GB.

Man hätte in unserem Fall 4096 MiB installiert und es werden 4GB angezeigt
Du hast recht, durch die Umrechnung wird weniger angezeigt als man eigentlich hat.
In einem Punkt hast du aber unrecht: die Umrechnung liefert keine Erklärung dafür, wieso weniger als 4 (egal ob Gigabyte oder Gibibyte) angezeigt werden :)
So ist es.
 
Es liegt an den 32bit Adressraum. Diesen benötigt das BS neben dem Arbeitsspeicher auch für andere Geräte. Für PCI-E Geräte inklusive Grafikkarte zweigt sich das BS also einen Adressraum i.d.R. um 0,75 GB ab. Darin liegt dann eben neben den anderen Adressbereichen für PCI-E Geräte auch die Graphics address remapping table. Ob deine Grafikkarte also 1Gb oder 100Gb VRAM hat macht keinen unterschied. Du wirrst lediglich den Bereich für die remapping table im Adressraum verlieren. ~500MB sowie den Adressraum für sonstige Schnittstellen ~256MB.
 
Zurück