El Kernel de Linux - Memory Manager

7 - Memory Manager

[editar]
Tutorial creado por Juan Carlos Inostroza. Extraido de: http://www.tux.cl/articulos.php?id=28
30 de Noviembre de 1999
El Memory Manager o administrador de memoria permite lo siguiente:

  • Gran espacio de direcciones : Los programas pueden requerir más memoria que la que físicamente existe
  • Protección : La memoria asignada un proceso es privada para tal.
  • Mapas de Memoria : Se puede mapear un archivo dentro de un area de memoria virtual y acceder al archivo como si fuera memoria
  • Acceso Limpio a la Memoria Física : el MM asegura que los procesos puedan usar transparentemente todos los recursos de la máquina, asegurando además un rendimiento aceptable
  • Memoria Compartida : Permite que los procesos puedan compartir trozos de la memoria asignada.

El Administrador de memoria posee dos interfaces : una interfaz con llamada a sistema que es usada por los procesos de usuario (User Space) y una interface que es usada por los otros subsistemas (Kernel Space).

Algunas de las llamadas de usuario incluyen malloc() y free(). Las llamadas de kernel incluyen kmalloc() y kfree().

Ya que Linux soporta multiples arquitecturas, es necesario entonces que existan rutinas específicas para abstraer los detalles del uso del hardware en una sola interface.

El Memory Manager usa el administrador de memoria de hardware para mapear direcciones virtuales a direcciones físicas. Gracias a esto, los procesos no están concientes de cuanta memoria física está asociada a una dirección virtual. Esto permite al MM poder mover trozos de memoria virtual dentro de la memoria física. Además, permite que dos procesos puedan compartir dos trozos de memoria física si las regiones de memoria virtual asignadas a ellas son mapeadas en la misma dirección física.

Otro concepto importante es el Swapping o intercambio, que es intercambiar (swap) memoria ocupada por procesos en un archivo. Esto le permite al kernel poder ejecutar mayor cantidad de procesos que usen mayor cantidad de memoria física existente. El MM posee un demonio, kswapd, para ejecutar la tarea de intercambiar zonas de memoria en archivos y viceversa. Este demonio chequea periodicamente si no existen direcciones físicas mapeadas recientemente. Estas direcciones son vaciadas de la memoria física, y además de ésto, el MM minimiza la cantidad de actividad de disco necesaria para hacer este intercambio.

El administrador de memoria del hardware detecta cuando un proceso de usuario tiene acceso a una porcion de memoria no mapeada en una dirección virtual y avisa al kernel de esta falla. Existen dos alternativas para solucionar esto:

  • o la pagina de memoria es volcada a un archivo y viceversa
  • o el proceso está haciendo referencia a una zona de memoria no permitida

Si el administrador de memoria detecta un acceso no permitido (a la memoria) notifica al proceso con una señal. Si el proceso no sabe como manejar esta señal, el proceso es finalizado.
[editar]

1 opinión

Linux.

Bueno bueno bueno.

Tutoriales relacionados con 'El Kernel de Linux'

Linux es en realidad un Kernel. Una distribución GNU/Linux es la mezcla de software GNU... Más »
Esta es la primerísima edición del Linux en Castellano COMO. La audiencia a la que... Más »
Este documento describe el soporte de sonido para Linux. Enumera el hardware de sonido soportado,... Más »
La compilación del kernel se hace a la manera Debian, es decir, con herramientas propias... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »

Autor y licencia de 'El Kernel de Linux'


Tutorial de Juan Carlos Inostroza. Extraido de: http://www.tux.cl/articulos.php?id=28 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.