Administración de Memoria Capítulo 5 (Milenkovic)
Transcript of Administración de Memoria Capítulo 5 (Milenkovic)
![Page 1: Administración de Memoria Capítulo 5 (Milenkovic)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/1.jpg)
Administración de Memoria
Capítulo 5 (Milenkovic)
![Page 2: Administración de Memoria Capítulo 5 (Milenkovic)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/2.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/3.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/4.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/5.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/6.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/7.jpg)
![Page 8: Administración de Memoria Capítulo 5 (Milenkovic)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/8.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/9.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/10.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/11.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/12.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/13.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/14.jpg)
![Page 15: Administración de Memoria Capítulo 5 (Milenkovic)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/15.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/16.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/17.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/18.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/19.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/20.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/21.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/22.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/23.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/24.jpg)
• ¿Cuál de los 3 es mejor?– Velocidad.– Desperdicio de memoria.
![Page 25: Administración de Memoria Capítulo 5 (Milenkovic)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/25.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/26.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/27.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/28.jpg)
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)](https://reader035.fdocuments.co/reader035/viewer/2022081419/5665b45b1a28abb57c90d088/html5/thumbnails/29.jpg)
¿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.