Gestión de Memoria Gestión de Memoria Requisitos de Gestión de

Anuncio
Gestión de Memoria
Gestión de Memoria
Capítulo 7
Requisitos de Gestión de Memoria
• Reubicación
– Los programadores no saben dónde estará el programa en
memoria cuando se ejecute
– Mientras el programa se ejecuta, puede ser movido al
disco y devuelto a memoria principal en una posición
diferente (reubicado)
– Se deben traducir las referencia a memoria del código a
las direcciones físicas reales
• Dividir la memoria para alojar múltiples procesos
• La memoria necesita ser asignada eficientemente
para alojar tantos procesos como sea posible
Requisitos de Gestión de Memoria
• Protección
– Los procesos no deberían ser capaces de referenciar el
espacio de memoria de otro procesos sin permiso
– Es imposible comprobar las direcciones absolutas de
los programas puesto que éstos pueden ser reubicados
– Deben ser traducidas durante la ejecución
Requisitos de Gestión de Memoria
• Compartición
– Permitir a varios procesos acceder a la misma zona de
memoria
– Es mejor permitir a cada proceso (persona) acceso a la
misma copia del programa que tener cada uno su copia
individual
• El sistema operativo no puede anticipar todas las referencias
de memoria que un programa puede generar
Requisitos de Gestión de Memoria
• Organización Lógica
– Los programas son escritos en módulos
– Los módulos se pueden escribir y compilar por
separado
– A los módulos se les puede dar diferente grado de
protección (sólo lectura, sólo ejecución)
– Módulos compartidos
Requisitos de Gestión de Memoria
• Organización física
– La memoria disponible para un programa y sus datos
puede ser insuficiente
• El solapamiento permite asignar la misma zona de memoria
a diferentes módulos
– El programador no sabe cuanto espacio habrá
disponible
Particionamiento Fijo
• Particiones del mismo tamaño
– cualquier proceso de tamaño menor o igual al de una
partición puede ser cargado en una partición
disponible
– si todas las particiones están ocupadas, el S.O. puede
mover a disco un proceso de una partición
– un programa puede no caber en una partición
Particionamiento Fijo
• El uso de la memoria principal es ineficiente.
Un programa, no importa como de pequeño
sea, ocupa una partición entera. Esto se conoce
como fragmentación interna.
• el programador debe diseñar el programa con overlays
Algoritmo de Ubicación con Particiones
• Particiones del mismo tamaño
– como todas las particiones tienen el mismo tamaño,
no importa qué partición asignar
• Particiones de diferente tamaño
– se puede asignar a cada proceso la partición más
pequeña en la que cabe
– cola para cada partición
– los procesos se asignan de manera que se minimiza la
memoria desperdiciada de una partición
Particionamiento Dinámico
• El tamaño y el número de particiones es variable
• Al proceso se le asignar exactamente la cantidad
de memoria que necesita
• Aparecen huecos en la memoria. Esto se conoce
como fragmentación externa
• Se debe realizar una compactación para desplazar
a los procesos de forma que esté juntos y todo el
espacio libre esté en un solo bloque
Efecto del Particionamiento Dinámico
Efecto del Particionamiento Dinámico
Particionamiento Dinámico
Algoritmo de Ubicación
• El sistema operativo debe decidir qué bloque libre
asignar a un proceso
• Algoritmo del mejor ajuste (best fit)
– Elige el bloque que tiene el tamaño más cercano al
solicitado
– Peor rendimiento de todos
– Como se busca el bloque más pequeño por proceso, se
produce el menor volumen de fragmentación, pero hay
que compactar más a menudo
Particionamiento Dinámico
Algoritmo de Ubicación
• Algoritmo del siguiente ajuste (Next-fit)
– A menudo se asigna un bloque de memoria en la
última parte de la memoria donde está el mayor bloque
– El mayor bloque de memoria se parte en pequeños
bloques
– Se necesita compactar para obtener un bloque grande
en la última zona final memoria
Particionamiento Dinámico
Algoritmo de Ubicación
• Algoritmo del primer ajuste (first fit)
– Es el más rápido
– Puede haber muchos procesos cargado en la zona
inicial de la memoria, que debe ser examinada cuando
se busca un bloque libre
Buddy System
• La memoria disponible completa es tratada como un
bloque individual de 2U
• Si una petición de tamaño s es tal que 2U-1 < s <= 2U,
se le asigna el bloque completo
– Si no, el bloque se divide en dos trozos iguales (buddies)
– El proceso continúa hasta generar el bloque más pequeño
que es mayor o igual a s
Reubicación
• Cuando se carga un programa en memoria se
determina la ubicación real (absoluta)
• Un proceso puede ocupar diferentes particiones
durante la ejecución (swapping) lo que significa
diferentes direciones absolutas
• La compactación también provoca que un
programa ocupe diferentes particiones que da
lugar a direcciones absolutas diferentes
Direcciones
• Lógicas
– referencias a posiciones de memoria independientes de
la asignación vigente de datos en memoria
– la traducción se realiza a dirección física
• Relativas
– las direcciones se expresan como posiciones relativas a
algún punto conocido
• Físicas
– es la dirección absoluta o ubicación real en memoria
principal
Registros Usados durante la Ejecución
• Registro base
– dirección de comienzo de un proceso
• Registro de límites (bound)
– dirección final de un proceso
• Estos valores se establecen cuando se carga el
proceso o bien cuando es intercambiado hacia
memoria (swap)
Registros Usados durante la Ejecución
• Se suma el valor del registro base a la dirección
relativa produciendo una dirección absoluta
• La dirección resultante se compara con el
registro de límite
• Si la dirección está fuera de los límites, se genera
una interrupción al sistema operativo
Paginación
• Partición de la memoria en pequeños pedazos del
mismo tamaño (chunks) y dividir cada proceso en
trozos del mismo tamaño
• Los trozos (chunks) de un proceso se llaman páginas y
los de la memoria se llaman marcos de página (frames)
• El sistema operativo mantiene una tabla de página para
cada proceso
– contiene la ubicación del marco de página (frame) de
cada página del proceso
– la dirección de memoria consiste en un número de página
y un desplazamiento (offset) dentro de la página
Ejemplo de Tabla de Páginas
Segmentación
• Todos los segmentos de todos los programas no
tienen porqué ser del mismo tamaño
• Hay un tamaño máximo de segmento
• El direccionamiento consta de dos partes – un
número de segmento y un desplazamiento dentro
de éste (offset)
• Como los segmentos no son iguales, la
segmentación es similar al particionamiento
dinámico
Descargar