Frage

Ich bin etwas fehlt, wenn es darum geht, die Notwendigkeit, das Verständnis für highmem mehr ansprechen als 1 GB RAM. Könnte jemand zeigen, wo ich schief gehen? Dank!

Was ich weiß:

  • 1 GB eines virtuellen Speichers (hohe Speicherbereich) die Prozesse für Kernoperationen vorbehalten. Der Benutzer kann das verbleibende Raum 3 GB verwenden. Dies ist das 3/1 Split.

  • Die virtuellen Speicherfunktionen der VM Karte der (kontinuierlichen) virtuellen Speicherseiten zu physischen Seiten (RAM).

Was ich weiß nicht:

  • Welche Operationen den Kernel virtuellen Speicher verwenden? Ich nehme an Dinge wie kmalloc (...) im Kernel-Raum würde Kernel virtuelle Speicher verwenden.

  • Ich würde denken, dass 4 GB RAM im Rahmen dieser Regelung verwendet werden könnte. Ich verstehe nicht, warum der Kernel 1 GB virtuelle Raum der limitierende Faktor ist, wenn physischen Raum Adressierung. Dies ist, wo mein Verständnis abbaut. Bitte beraten.

Ich habe das gelesen ( http://kerneltrap.org/node/2450 ) , was toll ist. Aber es ist nicht ganz meine Frage nach meinem Geschmack Adresse.

War es hilfreich?

Lösung

Der Grund, dass Kernel virtueller Raum ist ein limitierender Faktor auf verwendbaren physischen Speicher ist, da die Kernel Zugriff auf alle physischen Speicher braucht, und so, wie es physikalische Speicherzugriffe ist durch virtuelle Kernel-Adressen. Der Kernel keine speziellen Anweisungen verwenden, die den direkten Zugriff auf physischen Speicherplätze ermöglichen -. Es hat Seitentabelleneinträge für alle physischen Bereiche einrichten, die er will reden

In der „alten Stil“ -Regelung, die Kernel-Set Dinge so, dass jeder Seite Tabellen des Prozesses abgebildet virtuelle Adressen von 0xC0000000 direkt von 0xFFFFFFFF auf physikalische Adressen 0x00000000 0x3FFFFFFF (diese Seiten markiert wurden, so dass sie in Ring nur zugänglich waren 0 - Kernel-Modus). Dies sind die „virtuellen Kernel-Adressen“. Im Rahmen dieser Regelung konnte die Kernel direkt jede physikalische Speicherstelle lesen und schreiben, ohne mit dem MMU Geige mit den Zuordnungen zu ändern.

Unter dem HIGHMEM Schema sind die Zuordnungen von virtuellen Kernel-Adressen in physikalische Adressen sind nicht festgelegt - Teile des physikalischen Speichers abgebildet werden in und aus dem Kernel virtuellen Adressraum wie der Kernel Zugriff auf diesen Speicher benötigt. Auf diese Weise kann mehr physikalischen Speicher verwendet werden, aber auf Kosten der mit ständig den virtuellen zu physischen Zuordnungen zu ändern, was durchaus eine teuere Operation ist.

Andere Tipps

1 GB Mapping in jedem Prozeß auf Kernel-Prozesse ermöglicht Kernel-Modus umzuschalten, ohne auch einen Kontextwechsel durchführen. Die Reaktionen auf Systemaufrufe wie read(), mmap() und andere können dann in geeigneter Weise in der anrufenden Prozess Adressraum verarbeitet werden.

Wenn der Platz für den Kernel nicht in jedem Prozess reserviert wurde, Umschalten auf „Kernelmodus“ zwischen Benutzerraum-Code ausführen teurer wäre, und nicht in der Lage virtuelle Adresszuordnung durch die Hardware-MMU (Speicherverwaltungseinheit) zu verwenden, um das System bedient Anrufe werden.

System einen 32-Bit-Kernel mit mehr als 1 GB physischem Speicher ausgeführt wird, sind in der Lage physikalische Speicherstellen in ZONE_HIGHMEM (etwa über dem 1 GB-Zeichen) zuweisen, die den Kernel benötigen, können durch Reifen springen für bestimmte Operationen mit ihnen zu interagieren. Die Zugabe von PAE (Physical Address Extension), erstreckt sich dieses Problem, indem bis zu 64 GB physikalischen Speicher ermöglicht, das Verhältnis von 1 GB Speicher innerhalb der physikalischen Adressenspeicher abnimmt, um Regionen in ZONE_HIGHMEM zugeordnet.

  1. Zum Beispiel ruft das System den Kernraum nutzen.
  2. können Sie haben 64 GB physikalischen RAM, aber auf 32-Bit-Plattformen Prozessoren nur 4gb wegen der Adressierung virtuellen 32-Bit zugreifen können. Eigentlich kann man 1 GB RAM und 3 GB Swap hat und virtuelle Adressierung wird es wie Sie 4GB machen suchen. Auf 64-Bit-Plattformen virtuelle Adressierung ist praktisch unbegrenzt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top