administración de memoria capítulo 5 (milenkovic)

29
Administración de Memoria Capítulo 5 (Milenkovic)

Upload: jorge-aja

Post on 28-Jan-2016

255 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Administración de Memoria Capítulo 5 (Milenkovic)

Administración de Memoria

Capítulo 5 (Milenkovic)

Page 2: Administración de Memoria Capítulo 5 (Milenkovic)

Memoria

• Uno de los principales recursos en un sistema de multiprogramación.

• Capacidad finita.

• Ningún proceso puede ser activado antes que le sea asignada una cierta cantidad de memoria.

Page 3: Administración de Memoria Capítulo 5 (Milenkovic)

Gestor de memoria

• Se ocupa principalmente de asignar memoria.

• Satisface dos necesidades conflictivas:– Separación de espacios de direcciones.– Compartición de memoria.

• Dos formas de gestionar:– Asignación contigua.– Asignación no contigua.

Page 4: Administración de Memoria Capítulo 5 (Milenkovic)

Asignación contigua

• Cada objeto lógico es colocado en un conjunto de posiciones de memoria con direcciones estrictamente consecutivas.

• Se utilizan particiones:– Asignar a los procesos particiones libres.

• Cuando el proceso termina, su partición se libera.

Page 5: Administración de Memoria Capítulo 5 (Milenkovic)

Particiones

• Pueden ser:– Estáticas: tamaño fijo.– Dinámicas: tamaño variable.

• Particiones estáticas:– Fragmentación interna.

• Particiones dinámicas:– Fragmentación externa.

Page 6: Administración de Memoria Capítulo 5 (Milenkovic)

Manejo de particiones• La partición debe ser lo suficientemente

grande para contener al proceso.

• El SO debe llevar la cuenta de los estados:– Libre.– En uso.– Tabla de descripción de particiones.

Page 7: Administración de Memoria Capítulo 5 (Milenkovic)
Page 8: Administración de Memoria Capítulo 5 (Milenkovic)

Asignación de particiones

• Cuando un proceso va a ser creado, el sistema operativo intenta asignarle una partición libre de tamaño suficiente.

• Marca el estado de la partición como ASIGNADO.

• Cuando un proceso termina, es necesario cambiar el estado a LIBRE.

• Es posible guardar la partición en el PCB o el pid en la TDP.

Page 9: Administración de Memoria Capítulo 5 (Milenkovic)

Asignación de Particiones

• 2 problemas:– Estrategia de asignación de partición: como

seleccionar una partición específica.– No hay ninguna partición adecuada para

asignación.

Page 10: Administración de Memoria Capítulo 5 (Milenkovic)

No hay una partición adecuada

• Todas las particiones están asignadas.

• Algunas particiones están libres, pero ninguna es lo suficientemente grande.– Mantener en estado nuevo.

Page 11: Administración de Memoria Capítulo 5 (Milenkovic)

Reubicación

• Los procesos se cargan en posiciones de memoria arbitrarias.

• Los programas deben ser capaces de ejecutarse sin importar su dirección.

• Direcciones virtuales:– Percibidas por el programador.

• Direcciones fisicas:– Posiciones reales en la memoria.

Page 12: Administración de Memoria Capítulo 5 (Milenkovic)

Reubicación dinámica

• La correspondencia entre direcciones virtuales y direcciones físicas se efectúa en tiempo de ejecución.

• Se asume que la posición inicial es la dirección virtual 0.

• Es común implementarlo por medio de registros base especializados.

Page 13: Administración de Memoria Capítulo 5 (Milenkovic)

Reubicación dinámica cont.

• El registro base se inicializa con la dirección física de carga inicial.– Tabla de descripción de particiones.

• Cada referencia a memoria se traduce a una dirección física mediante:– Registro base + dirección virtual

Page 14: Administración de Memoria Capítulo 5 (Milenkovic)
Page 15: Administración de Memoria Capítulo 5 (Milenkovic)

Asignación en particiones dinámicas

• Definir las particiones de acuerdo con los requisitos de cada proceso.

• Tamaño y número de particiones no están limitados.

Page 16: Administración de Memoria Capítulo 5 (Milenkovic)

Asignación en particiones dinámicas

• Modulo de gestión de memoria intenta crear una partición adecuada.– Localizar un área libre adecuada.

• Cada partición está definida por su dirección base y tamaño.

Page 17: Administración de Memoria Capítulo 5 (Milenkovic)

Ejemplo

• Suponga que se requiere cargar un proceso P de tamaño P_tamaño.

Page 18: Administración de Memoria Capítulo 5 (Milenkovic)

1.Buscar un área libre L tal que L_TAMAÑO >= P_TAMAÑO

2.P_base=L_base, L_base=P_base+P_tamaño, L_tamaño=L_tamaño-P_tamaño

Page 19: Administración de Memoria Capítulo 5 (Milenkovic)

Representación de las particiones

• Dos posibilidades:– Milenkovic: Se usa una TDP y una lista de

memoria libre.• Dos estructuras para representar lo mismo.

• Al inicio la memoria libre está representada por un solo bloque contiguo.

Page 20: Administración de Memoria Capítulo 5 (Milenkovic)

Representación de las particiones cont.

– Clase: Se utiliza una lista ordenada para representar las particiones.

• Una sola estructura de datos.

• Las particiones se pueden encontrar en estado libre o asignado.

• El PCB contiene un puntero al nodo de la partición que le corresponde.

• El nodo (partición) tiene un campo que indica el pid del proceso dueño.

Page 21: Administración de Memoria Capítulo 5 (Milenkovic)

Búsqueda de un área libre adecuada

• Los algoritmos más habituales para selección de un área libre son:– Primer ajuste

• Siguiente ajuste.

– Mejor ajuste– Peor ajuste

Page 22: Administración de Memoria Capítulo 5 (Milenkovic)

Primer ajuste y siguiente ajuste

• La primera partición L, con L_tamaño>=P_tamaño se escoge.

• En siguiente ajuste, se reanuda la búsqueda desde el punto anterior.– No busca desde el principio.– Evita que los bloques pequeños se

acumulen al comienzo de la lista.

Page 23: Administración de Memoria Capítulo 5 (Milenkovic)

Mejor ajuste y peor ajuste

• Mejor ajuste:– Asigna el bloque más pequeño que pueda

almacenar a P.

• Peor ajuste:– Asigna el bloque más grande que pueda

almacenar a P.

Page 24: Administración de Memoria Capítulo 5 (Milenkovic)

• ¿Cuál de los 3 es mejor?– Velocidad.– Desperdicio de memoria.

Page 25: Administración de Memoria Capítulo 5 (Milenkovic)

Liberación de particiones

1. Localizar la entrada del proceso en la TDP.

2. Si el proceso va a ser retirado de memoria, copiar su imagen al archivo de intercambio.

3. Indicar en el PCB que el proceso no tiene memoria (su puntero a nulo).

4. Poner la partición en estado libre y combinarla con áreas libres contiguas.

Page 26: Administración de Memoria Capítulo 5 (Milenkovic)

Juntar huecos

• Se tiene un conjunto de particiones libres contiguas:– Hacerlas un solo bloque libre.– De otra manera se puede reportar que no

hay una partición lo suficientemente grande.

Page 27: Administración de Memoria Capítulo 5 (Milenkovic)

Compactación

• Las áreas de memoria libre están entremezcladas con las particiones asignadas.– Fragmentación externa.

• Es común tener esta situación en sistemas con asignación dinámica.

• Los tiempos de vida de los procesos residentes son diferentes.

Page 28: Administración de Memoria Capítulo 5 (Milenkovic)

Compactación cont.

• Orden de las devoluciones de memoria es diferente del orden de las asignaciones.

• Juntar huecos retrasa el problema en vez de evitarlo.

• Si la memoria está extremadamente fragmentada:– Reubicar algunas o todas las particiones en uso a

un extremo de la memoria.

– Una única área libre grande.

Page 29: Administración de Memoria Capítulo 5 (Milenkovic)

¿Cuándo realizar compactación?

• Siempre que sea posible:– Al iniciar o terminar un proceso.– Penaliza el rendimiento.

• Sólo cuando es necesario:– No existe una partición adecuada y la

Memoria total libre >= tamaño de proceso a cargar.

– En caso contrario es inútil hacer compactación.