RAM (virtuelle Speicheradressierung)

Gangsta MX 4000

Cadet 3rd Year
Registriert
Okt. 2005
Beiträge
57
Tag ich bins mal wieder!:D und zwar möcht ich wissen ob ich folgendes richtig verstanden hab! da sich die meisten hier viel besser auskennen! Falls es euch nervt braucht ihr ja nicht antworten! hab ich glaub früh genug hingeschrieben nicht damit sich hier noch einer umbringt!:D

Kopierter Text:
Der Arbeitsspeicher (das Random Access Memory, kurz RAM) enthält während der Laufzeit die Programme, die gerade ausgeführt werden, sowie die von ihnen verwendeten Daten. Die meisten modernen Betriebssysteme unterstützen die virtuelle Speicheradressierung, die die von Programmen verwendeten Speicheradressen von den physikalischen Adressen abstrahiert und auf diese Weise das Auslagern nicht benötigter Inhalte auf die Festplatte ermöglicht.

Grob weis ich ja wie der Hauptspeicher eigentlich funktioniert! aber das mit dem "virtuelle Speicheradressierung ist mir neu"

So wie ichs verstanden hab (teilweise frei formuliert):
Der Arbeitspeicher ist ein Zwischenspeicher, indem sich die Programme und die von den Programen verwendeten Daten befinden, die ich gerade offen hab, die dann wiederum an die Northbridge und von dort über den FSB an den Prozessor weitergegeben werden zum verarbeiten. (also sobald der Arbeitesspeicher überlastet ist, schaltet sich der PC ja normaler Weise einfach ab. Richtig?). Jetzt das mit der virtuellen Speicheradressierung:
um den Arbeitsspeicher zu entlasten da man nicht alle inhalte der Programme benötigt die an den physikalischen Speicher (Arbeitspeicher) weitergegeben wurden, kommt die virtuelle Speicheradressierung ins Spiel, sie abstrahiert (zieht ab oder gibt weiter) die noch befindlichen aber nicht benötigten Inhalte (bevor der Prozessor sie verarbeitet hat) zum Auslagern an die Festplatte weiter.

Wäre euch dankbar wenn ihr mir sagt ob das so korrekt ist oder nicht! aber bitte für Anfänger, bin noch nicht so alt wie ihr vielleicht denkt und beschäftige mich zwar schon lang mit pcs aber nicht so intensive wie seid einigen wochen! ganz grob hab ich zwar schon gewusst wie so ein Teil funktioniert wollt aber seid einigen wochen viel mehr darüber wissen! danke!
 
Hi Gangsta,

ich würd mal sagen Jein!:D Teilweise hast du das richtig erkannt, aber das Fundament....:rolleyes: ;)

Ich versuchs mal am Beispiel XP (hab eh Langeweile): Also, Arbeitsspeicher ist kein (!)Zwischenspeicher, sondern der Ort, wo alle aktiven (!) Programme & Daten (auch Teile) abgearbeitet / verwaltet / neu beschrieben usw. werden.

XP prüft über versch. interne Scheduler und interne Pipes, was welches Programm macht und welche Teile der im RAM liegenden Teilstücke (exe, dll, chm, Multi-Threads usw) dafür benutzt werden. Stellt XP fest, das einige davon längere Zeit nicht genutzt werden, passiert das:

Diese Daten werden in die Auslagerungsdatei geschrieben, im RAM gelöscht und können unter anderer Adresse von anderen Programmen neu genutzt werden. Sucht nun das ursprüngliche Proggie nach seinen (ausgelagerten) Daten, lenkt XP diese Anfrage einfach auf den entsprechenden Abschnitt der Auslagerungsdatei um, das Programm bekommt dies aber überhaupt nicht mit, der Vorgang ist völlig Transparent für ihn (es?:) ), sonst würde er/es auch direkt meckern oder sich Aufhängen.

Die Auslagerungsdatei ist also der virtuelle RAM (gleiche Größe), ihn gibt es aber so in der Form ja nicht wirklich, deshalb "virtuell"!;)
Das "Abstrahieren" bezieht sich hierbei auf das Umlenken auf die Swap-Datei, das Programm denkt ja, das es ganz normal auf den RAM zugreift.
Der auf Festplatte liegende virt. RAM ist aber viel-tausendmal langsamer als echter RAM, deshalb schiebt XP nur wirklich ungenutzte Daten dahin.

Beim Starten einer Anwendung geht XP aber trotzdem davon aus, das darauf mal zugegriffen werden könnte und reserviert deshalb vorab schon sehr großzügig virt. RAM für diese Anwendung. Der Grund ist, XP versucht durch große Reservierungen diese als 1 Abschnitt zu realisieren. Wenn diese Reservierungen über viele Teile in der Auslagerungsdatei verteilt wären, ist ein Zugriff noch langsamer, da der Lesekopf oft positionieren muss. So kann er in einem Rutsch alles Lesen.

Aber das schweift ab, ich hoffe, das war jetzt alles nicht zu kompliziert?:cool_alt:

my2cents

PCB
 
Hey perfekt! danke! (bist du Lehrer oder so? *lol*) wenn du mir jetzt nur noch sagst was interne Scheduler und interne Pipes sind, würd ich mich freuen! :D
Als ich bei galileocomputing weitergelesen hab, hab ich auch gemerkt das ich das Teilweise falsch verstanden hab.! hihi!

hab ich dann auch noch endeckt:
Falls auch der normale Arbeitsspeicher nicht mehr ausreicht, um alle Daten der aktuell geladenen Programme aufzunehmen, werden Inhalte aus dem RAM, die nicht besonders dringend benötigt werden, auf die Festplatte ausgelagert. Dieser Vorgang wird je nach Prozessorarchitektur und Betriebssystem als Swapping oder Paging bezeichnet und in Kapitel 4, Betriebssysteme, näher beschrieben. Moderne Prozessoren unterstützen eine solche virtuelle Speicherverwaltung durch eine eingebaute Komponente namens Memory Management Unit (MMU).

für was wird dann eigentlich der Cache der Festplatte verwendet?
 
Zuletzt bearbeitet:
Der Cache der Festplatte ist ein Puffer zwischen der Festplatte und dem Controller. Moderne Festplatten mit SATA2 z.B. können laut Protokoll bis zu 300 MB/s übertragen - in Echt erreichen sie oftmals nur ein Fünftel der Leistung, da die Geschwindigkeit nicht von dem Protokoll der Festplatte abhängt sondern von ihrer Mechanik (mit einem Roller schaffst du auch keine 100 kmh, auch wenn es auf der Landstraße zulässig wäre). Daten, die dann gelesen werden, werden zuerst in den Cache transportiert, und von dort aus dann weiter. Da der Cache viel mal schneller ist als die Festplattenmechanik, können Daten von ihm viel schneller transportiert werden. Und je größer der Cache, desto mehr gerade benötigte Daten befinden sich im Cache, ein erneuter Zugriff erfolgt mit vielfacher Leistung und schont gleichzeitig die Festplattenmechanik, weil diese nicht wieder alle Daten auslesen muss - schließlich befinden sich - je nach Festplatte - zwischen 2 und 16 MB der angeforderten Daten ja schon in dem Puffer.
 
Hi Gangsta,

danke für die Blumen!:cool_alt: Lehrer? Iiih, bloß nicht!;) Nur von MS zertifiziert, muss auch reichen.:D

Also der Scheduler ist die Memory Management Unit (MMU), ein interner Prozeß der die gesamte Speicher-Zuweisung und -Verwaltung vornimmt.

Mit den Pipes waren eigentlich Pools gemeint, naja, war schon spät.:D

Diese Pools, z.B. der Paged-Pool und Non-Paged-Pool werden auf ihre Füllung überwacht, bei best. Grenzwerten werden dann neue Zuweisungen vorgenommen oder auch Pages (RAM-Speicherseiten) verschoben, ist ein sehr komplexes Wechselspiel.

Das Speichermanagement von XP ist sehr ausgeklügelt, deshalb sollte man hier auch nicht eingreifen, z.b. mit diesen toolen FreeRAM-Tools. Der Effekt ist nur kurzfristig, XP stellt relativ schnell "seinen" Zustand wieder her.

Auch sollte man nicht über die Registry in diesen Prozeß eingreifen, weil schon (fast) alle Werte optimal eingestellt sind.

So, ich hoffe, damit sind alle Klarheiten beseitigt.:D

PCB
 
hi,

Hat dieser Scheduler denn etwas mit der GDT (GLOBAL DESCRIPTOR TABLE) zu tun? Die kommt ja vom Protected Mode (x86) her um alle Programme im Speicher aufzulisten und die CPU mit den Richtigen Daten- und Code-Segment-Adressen (oder so) zu versorgen. Oder läuft das unabhängig von einander?

mfg Gregg
 
@theGregg: Jawohl, das hat er, der GDT ist Bestandteil der MMU und enthält Systemsegmente (größtenteils vom OS), die noch geladen werden müssen. Das Gegenteil hiervon ist der LDT (Local Descriptor Table), der die Bestandteile der Anwendungsprogramme enthält.

Der ganze Zusammenhang ist hier ganz gut erklärt.

PCB
 
Die Erklärung ist prinzipiell richtig, man sollte dabei aber auch noch die Speicherhirarchie betrachten:
Der Prozessor selbst greift ausschließlich auf seinen eigenen Cache zu (Level 1 und 2, teils noch Level 3). Level 1 ist der schnellste für den direkten Zugriff. Alle Daten die dort nicht vorhanden sind, werden von der nächsten Hirarchieebene nachgeladen.
Darunter befindet sich der RAM. Dieser ist schon um Größenordnungen langsamer als der Cache.
Eine Stufe Tiefer sitzt dann die Festplatte mit dem Pagefile.
Jeder Anwendung wird vom Betriebssystem vorgegaukelt dass sie den kompletten Speicherbereich von 2^32 (~4GB) benutzen kann, und den Prozessor übrigens auch alleine nutzt.
Die Anwendung hat also (scheinbar) alle Ressourcen für sich, und die Betriebssystem-Ebene verwaltet diese so geschickt, dass alle vorhandenen Ressourcen bestmöglich auf die Anwendungen verteilt werden.

Um die Speicherverwaltung zu managen gibts dann wie oben angesprochen verschiedene Adress-Übersetzungstabellen, die für die Anwendung völlig Transparent bleiben. Der Scheduler ist im Prinzip derjenige der entscheidet welche Anwendung die nächsten Millisekunden auf dem Prozessor läuft. Diese Entscheidungen werden nach der Prozesspriorität und dem Arbeitsanliegen der Anwendungen getroffen.
 
Green Mamba schrieb:
Die Erklärung ist prinzipiell richtig, man sollte dabei aber auch noch die Speicherhirarchie betrachten:
Der Prozessor selbst greift ausschließlich auf seinen eigenen Cache zu (Level 1 und 2, teils noch Level 3).


Diese Aussage ist nicht allgemeingueltig und daher als falsch anzusehen.
Es lassen sich auch noch heute alle CPU caches abschalten so dass die CPU ausschliesslich auf dem RAM arbeitet. Bei Architekturen, deren chacheable area kleiner als der RAM-Ausbau ist (zB. 128MB RAM auf einem intel 430TX chipsatz) wird ebenfalls von der CPU direkt auf das RAM zugegriffen.
 
Zurück
Oben