Pregunta

Me estoy perdiendo algo cuando se trata de comprender la necesidad de highmem para abordar más de 1 GB de RAM. Podría alguien señalar dónde me equivoqué? Gracias!

Lo que sé:

  • 1 GB de memoria virtual (región de memoria alta) A procesos se reserva para operaciones de núcleo. El espacio de usuario puede utilizar el 3 GB restante. Este es el 3/1 de división.

  • Las características de memoria virtual de la máquina virtual en el mapa los páginas (continuos) virtuales de memoria a páginas físicas (RAM).

Lo que no sé:

  • ¿Qué operaciones de utilizar la memoria virtual del núcleo? Supongo cosas como kmalloc (...) en el espacio del kernel que el uso de memoria virtual del núcleo.

  • Me gustaría pensar que 4 GB de RAM podría ser utilizado bajo este esquema. No entiendo por qué el núcleo de 1 GB de espacio virtual es el factor que limita la hora de abordar el espacio físico. Aquí es donde mi entendimiento se rompe. Por favor avise.

He estado leyendo esto ( http://kerneltrap.org/node/2450 ) , Lo cual es genial. Pero no acaba de abordar la pregunta de mi agrado.

¿Fue útil?

Solución

La razón de que el espacio virtual del núcleo es un factor limitante en la memoria física utilizable se debe a que el núcleo necesita acceso a toda la memoria física, y la forma en que se accede a la memoria física es a través de direcciones virtuales del núcleo. El núcleo no utilizar instrucciones especiales que permiten el acceso directo a los lugares de memoria física -. Tiene que configurar entradas de la tabla de páginas de cualquier rango físicas que quiere hablar

En el esquema de "viejo estilo", las cosas conjunto del núcleo de modo que las tablas de páginas de cada proceso asignan direcciones virtuales de 0xC0000000 a 0xFFFFFFFF directamente a las direcciones físicas de 0x00000000 a 0x3FFFFFFF (estas páginas fueron marcados por lo que sólo eran accesibles en el anillo 0 - modo de núcleo). Estas son las "direcciones virtuales del núcleo". Bajo este esquema, el núcleo podía leer y escribir directamente cualquier posición de memoria física sin tener que tocar el violín con la MMU para cambiar las asignaciones.

Bajo el esquema highmem, las asignaciones de direcciones virtuales a direcciones físicas del kernel no son fijos - partes de la memoria física se asignan dentro y fuera del espacio de direcciones virtual del núcleo, como el kernel necesita el acceso a la memoria. Esto permite más memoria física a ser utilizado, pero a costa de tener que cambiar constantemente las asignaciones de virtual a física, que es bastante una operación costosa.

Otros consejos

Mapping 1 GB al núcleo en cada proceso permite que los procesos para cambiar al modo de núcleo sin también la realización de un cambio de contexto. Las respuestas a las llamadas del sistema, tales como read(), mmap() y otros se pueden procesar adecuadamente en el espacio de direcciones de proceso de llamada.

Si el espacio para el núcleo no se reservó en cada proceso, el cambio a "modo de núcleo" entre la ejecución de código de espacio de usuario sería más caro, y ser incapaz de utilizar la asignación de direcciones virtuales a través de la (unidad de gestión de memoria) hardware MMU para el sistema llama está dando servicio.

Los sistemas que ejecutan un kernel de 32 bits con más de 1 GB de memoria física, son capaces de asignar las posiciones de memoria física en ZONE_HIGHMEM (más o menos por encima de la marca de 1 GB), que pueden requerir el kernel para saltar a través de aros para ciertas operaciones para interactuar con ellos. La adición de PAE (extensión de dirección física), se extiende este problema permitiendo hasta 64 GB de memoria física, disminuyendo la relación de la memoria dentro de la memoria de dirección física de 1 GB, a regiones asignados en ZONE_HIGHMEM.

  1. Por ejemplo las llamadas al sistema utilizan el espacio del núcleo.
  2. Usted puede tener 64 GB de RAM física, pero en las plataformas de procesadores de 32 bits sólo puede acceder a 4 GB debido a la 32 bits direccionamiento virtual. En realidad, puede tener 1 GB de RAM y 3 GB de swap y abordar virtual hará que se vea como que tiene 4 GB. En las plataformas de 64 bits direccionamiento virtual es prácticamente ilimitado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top