Administración de memoria en Unix

1. La administración de memoria utiliza dos técnicas de manejo de memoria: Swapping memoria virtual. Lo estándar en Unix es un sistema de intercambio de segmentos de un proceso entre la memoria principal y la memoria secundaria, llamado swapping, lo que significa que se debe mover la imagen de un proceso al disco si este excede la capacidad de la memoria principal, y copiar el proceso completo a memoria secundaria . Es decir, durante su ejecución, los procesos son cambiados de y hacia memoria secundaria conforme se requiera. La paginación por demanda y combinación de segmentos paginados, en ambos casos con paginas de tamaño fijo.




Ejemplo de operaciones de intercambio

2. Se utiliza la partición de disco duro para el área de intercambio, en algunos sistemas el tamaño de la página en Unix es de 512 bytes; en otros, de 1024. Para reemplazo se usa un algoritmo que mantiene en memoria las páginas empleadas recientemente. Un sistema de paginación por demanda ofrece muchas más ventajas en cuanto a flexibilidad y agilidad en la atención concurrente de múltiples procesos mayores que el de la memoria central. Estos esquemas son bastante complejo y requieren el apoyo de hardware especializado.

3. Unix modernos soportan la llamada al sistema mmap, el uso del espacio de direcciones es menos estructurado. Implementación de librerías compartidas pueden ubicar texto o datos arbitrariamente, representar la noción de regiones predefinidas obsoletas.

4. Regla importante: Asignar una partición de disco duro que sea al menos el doble de la cantidad real de la computadora.

5. Proceso: Si un proceso necesita crecer, pide más memoria al sistema operativo y se le da una nueva sección, lo suficientemente grande para acomodarlo. Entonces, se copia el contenido de la sección usada al área nueva, se libera la sección antigua y se actualizan las tablas de descriptores de procesos. Si no hay suficiente memoria en el momento de la expansión, el proceso se bloquea temporalmente y se le asigna espacio en memoria secundaria. Se copia a disco y, posteriormente, cuando se tiene el espacio adecuado -lo cual sucede en algunos segundos- se devuelve a memoria principal.

6. En un mapa tradicional de Unix, el kernel y sus estructuras de datos asociadas residen en la parte alta del espacio de direcciones. El texto inicial y las áreas de datos empiezan en o acerca del principio de memoria. Típicamente, los primeros 4 o 8 Kbyte de memoria son conservados fuera de los límites del proceso. La razón de esta restricción es que para una depuración de un programa fácil; indirectamente a través de un apuntador nulo causaran un fallo de dirección inválida, en lugar de leer o escribir el texto del programa. La localización de memoria hecha por el proceso en ejecución usando la rutina de librería malloc() (o la llamada al sistema sbrk) son hechas de la parte que empieza inmediatamente siguiente al área de datos y crece hasta las direcciones más altas. El vector de argumento y los vectores de ambiente están en la parte más alta de la porción de usuario del espacio direcciones. La pila de usuario empieza justo debajo de estos vectores y crece asta las direcciones más bajas.

7. Además... todos los procesos que forman parte del kernel no pueden ser intercambiados a disco. Tener en cuenta: facilidad de incrementar el espacio de intercambio, facilidad de añadir módulos de memoria a la memoria RAM a la computadora sin necesidad de reconfigurar el núcleo











Comentarios

Entradas populares