GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿qué son la memoria alta y la memoria baja en Linux?

Estoy interesado en la diferencia entre Highmem y Lowmem:

  1. ¿Por qué existe tal diferenciación?
  2. ¿Qué ganamos al hacerlo?
  3. ¿Qué características tiene cada uno?

Respuesta aceptada:

En una arquitectura de 32 bits, el rango del espacio de direcciones para direccionar la RAM es:

0x00000000 - 0xffffffff

o 4'294'967'295 (4GB).

El kernel de Linux lo divide en 3/1 (también podría ser 2/2 o 1/3) en espacio de usuario (memoria alta) y espacio del kernel (memoria baja) respectivamente.

El rango de espacio de usuario:

0x00000000 - 0xbfffffff

Cada proceso de usuario recién generado obtiene una dirección (rango) dentro de esta área. Los procesos de usuario generalmente no son de confianza y, por lo tanto, tienen prohibido acceder al espacio del kernel. Además, se consideran no urgentes, como regla general, el kernel intenta diferir la asignación de memoria a esos procesos.

El rango de espacio del kernel:

0xc0000000 - 0xffffffff

Un proceso del kernel obtiene su dirección (rango) aquí. El núcleo puede acceder directamente a este 1 GB de direcciones (bueno, no al 1 GB completo, hay 128 MB reservados para el acceso a la memoria alta).

Los procesos generados en el espacio del kernel son confiables, urgentes y se supone que no tienen errores, la solicitud de memoria se procesa instantáneamente.

Cada proceso del kernel también puede acceder al rango de espacio del usuario si así lo desea. Y para lograr esto, el kernel asigna una dirección desde el espacio del usuario (la memoria alta) a su espacio del kernel (la memoria baja), los 128 MB mencionados anteriormente están especialmente reservados para esto.

Si la división es 3/1, 2/2 o 1/3 se controla mediante CONFIG_VMSPLIT_... opción; probablemente puedas comprobar en /boot/config* para ver qué opción se seleccionó para su kernel.


Linux
  1. Linux:¿qué fuentes de entropía utiliza el kernel de Linux?

  2. pila de kernel y pila de espacio de usuario

  3. ¿Qué son la página mapeada en memoria y la página anónima?

  4. ¿Qué son exactamente los encabezados del kernel de Linux?

  5. ¿De qué sirve tener una parte del núcleo en el espacio de memoria virtual de los procesos de Linux?

¿Cuál es la diferencia entre los núcleos de macOS y Linux?

Linux Kernel 5.9:Novedades y cómo actualizar

¿Qué son los registros de Linux y dónde encontrarlos?

Kernel de Linux y sus funciones

Qué hacer en caso de pánico en el kernel de Linux

¿Cuál es la diferencia entre el espacio de usuario y el espacio del kernel?