0% encontró este documento útil (0 votos)
34 vistas36 páginas

ASO-Unidad 4

Este documento describe los conceptos básicos de la gestión de la memoria en sistemas operativos. Explica que el sistema operativo es responsable de subdividir la memoria entre múltiples procesos para permitir la multiprogramación. También cubre temas como la reubicación dinámica de procesos entre memoria principal y secundaria, la protección de espacios de memoria de diferentes procesos, y la necesidad de permitir la memoria compartida entre procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas36 páginas

ASO-Unidad 4

Este documento describe los conceptos básicos de la gestión de la memoria en sistemas operativos. Explica que el sistema operativo es responsable de subdividir la memoria entre múltiples procesos para permitir la multiprogramación. También cubre temas como la reubicación dinámica de procesos entre memoria principal y secundaria, la protección de espacios de memoria de diferentes procesos, y la necesidad de permitir la memoria compartida entre procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Gestión de la memoria

Arquitectura y Sistemas Operativos


Unidad 4
Gestión de la memoria
• En un sistema monoprogramado, la memoria se divide en dos
partes:
– Una parte para el sistema operativo (monitor residente, núcleo)
– una parte para el programa actualmente en ejecución
• En un sistema multiprogramado, la parte de “usuario” de la
memoria se debe subdividir posteriormente para acomodar
múltiples procesos
– El sistema operativo es el encargado de la tarea de subdivisión y a esta
tarea se le denomina gestión de la memoria
• Una gestión de la memoria efectiva es vital en un sistema
multiprogramado
– Debe asignar la memoria para asegurar una cantidad de procesos
listos que usen eficientemente el tiempo de procesador disponible
Gestión de la memoria
Objetivos
• Rendimiento
– Aprovechar al máximo la memoria disponible
– Conseguir tener cargados en memoria cierta cantidad de procesos y
que el sistema no se degrade
– Que un programa no necesite estar totalmente cargado en memoria
para que pueda ser ejecutado
– Complementarse con la memoria secundaria, si es necesario
• Protección y compartición
– Proteger al SO de accesos indebidos
– Proteger el espacio de memoria de cada proceso
– Permitir que varios procesos puedan compartir zonas de memoria
(para comunicación, o para reutilizar código o datos)
Gestión de la memoria
Puntos críticos
• Ubicación
– Facilitar que un programa pueda residir en cualquier zona de la
memoria principal
• Fragmentación
– ¿Qué sucede con los huecos que van quedando en la MP a medida
que se asignan y liberan zonas de memoria?
• Tiempo de acceso
– ¿Cómo impactan los mecanismos de gestión en el tiempo neto de
acceso a memoria?
Pasos en el procesamiento de un
programa de usuario
programa
fuente

compilador tiempo de compilación

otros objetos módulos


y bibliotecas objeto

linker (enlazador)

bibliotecas programa
del sistema ejecutable
tiempo de carga
cargador
bibliotecas
dinámicas programa binario
(instrucciones y datos
en memoria) tiempo de ejecución
Espacio de direcciones
memoria física
memoria lógica
del proceso

archivo ejecutable
archivo fuente
cabecera código
#include <stdio.h> código
main( )
datos
{ código datos inicializados
otros datos
printf(“hola mundo”); inicializados heap
} otros datos
datos heap
pila

inicializados

pila
Espacio de direcciones Espacio de direcciones
simbólicas numéricas
Direccionamiento
• Lógico
– Referencia a una ubicación de memoria independiente de
la asignación actual de datos a la memoria
– Se debe hacer la traducción a la dirección física
• Relativo
– Dirección expresada como una ubicación relativa a algún
punto conocido
• Físico
– La dirección absoluta o la ubicación real en la memoria
principal
Intercambio (swapping)
• Si un proceso lleva mucho tiempo bloqueado, se desperdicia el
espacio en memoria que está ocupando
• ¿Qué hacer?
– Se guarda su imagen de la MP a MS (disco): swap out
– Cuando se decide reanudar el proceso, se recupera su imagen desde la
MS: swap in
• El espacio en MP queda disponible para otros procesos
• Inconveniente
– Tiempo perdido en el intercambio (aumenta el tiempo de cambio de
contexto)
• El intercambio hace posible que el espacio total de direcciones
físicas de todos los procesos sobrepase la memoria física real
del sistema, aumentando así el grado de multiprogramación
Intercambio (swapping)

Sistema
Operativo

Proceso
Swap out
P1

Procesos de
usuario Proceso
Swap in P2

Memoria Principal Almacenamiento secundario


Gestión de la memoria
Requisitos
• Los mecanismos y políticas asociados con la gestión
de la memoria deben satisfacer los siguientes 5
requisitos:
1. Reubicación
2. Protección
3. Compartición (memoria compartida)
4. Organización lógica
5. Organización física
Reubicación
• No se puede conocer de forma anticipada dónde se
va a colocar un programa cuando se ejecute
• Se debe permitir que los programas se puedan
mover en la memoria principal, y hacia/desde la
memoria secundaria (intercambio o swap)
Reubicación
• Las referencias de memoria se deberán traducir en el código a la dirección
de memoria física real
• El compilador traduce direcciones de memoria simbólicas a direcciones
binarias
– Si las direcciones binarias son absolutas, el programa sólo se podrá ejecutar
en una zona fija de la memoria
• No es reubicable (ejemplo programas *.com en MS-DOS)
• Limitación muy grave
– Es importante que el compilador no genere direcciones definitivas, sino
direcciones provisorias, reubicables
• Cuando se conozca dónde va a residir el código y los datos en la MP, se
convertirán a direcciones absolutas
• ¿Cuándo se realiza esta reubicación?
– En tiempo de carga (enlazador o cargador): Reubicación estática
– En tiempo de ejecución (hardware): Reubicación dinámica
Protección
• Los procesos no deben poder hacer referencia a ubicaciones
de memoria en otro proceso sin permiso
• Imposible comprobar direcciones absolutas en tiempo de
compilación
– Debe comprobarse en tiempo de ejecución
• El requisito de protección de memoria debe ser satisfecho por
el procesador (hardware) en lugar del sistema operativo
(software)
– El sistema operativo no puede anticipar todas las referencias de
memoria que hará un programa
– Para llevar a cabo esto, el hardware del procesador debe tener esta
capacidad
Memoria compartida
• Cualquier mecanismo de protección debe tener la
flexibilidad de permitir a varios procesos acceder a la
misma porción de memoria principal
– Es ventajoso permitir que cada proceso pueda acceder a la
misma copia del programa en lugar de tener su propia
copia separada (para comunicación, o para reutilizar
código o datos)
• El sistema de gestión de la memoria debe permitir el
acceso controlado a áreas de memoria compartidas
sin comprometer la protección esencial
Organización lógica
• La memoria principal de una computadora se organiza como un espacio
de almacenamiento lineal, compuesto por una secuencia de bytes o
palabras. A nivel físico, la memoria secundaria está organizada de forma
similar
– Esta organización es similar al hardware de la máquina, pero no se
corresponde a la forma en la cual se construyen los programas
– La mayoría de los programas se organizan en módulos, algunos de los cuales
no se pueden modificar (sólo lectura, sólo ejecución) y otros si se pueden
modificar
• Si el SO y el hardware pueden tratar de forma efectiva los programas de
usuarios y los datos, se logran algunas ventajas:
1. Los módulos se pueden escribir y compilar independientemente, con las referencias de un
módulo desde otro resueltas por el sistema en tiempo de ejecución
2. Con poca sobrecarga adicional, se puede proporcionar diferentes grados de protección a
los módulos (sólo lectura, sólo ejecución)
3. Es posible introducir mecanismos por los cuales los módulos se pueden compartir entre
los procesos
Organización física
• Memoria disponible para un programa más sus datos pueden
ser insuficientes
• La superposición permite asignar a varios módulos la misma
región de memoria
• El programador no sabe cuánto espacio estará disponible
• La tarea de mover la información entre los dos niveles de la
memoria (MP ↔ MS) debe ser una responsabilidad del
sistema. Esta tarea es la esencia de la gestión de la memoria
Reubicación dinámica
• Dirección lógica o virtual:
– Es la dirección generada por la CPU
• Dirección Física:
– Es la que llega al banco de memoria principal, compuesta
por n circuitos integrados (chips) de memoria
• Las direcciones físicas y lógicas, no siempre coinciden
• El mapeo en tiempo de ejecución desde direcciones
virtuales a físicas se realiza mediante un dispositivo
de hardware denominado unidad de administración
de memoria (MMU)
Reubicación dinámica
• Configuración mínima con registro base
FFFFFF
registro base
14000
dirección dirección
lógica física
346 14346
CPU + 014346

memoria

MMU 000000
Registros utilizados durante la
ejecución
• Registro base (reubicación)
– Dirección de inicio del proceso
• Registro de límites (bounds register)
– Dirección de finalización del proceso
• Estos valores se establecen cuando el proceso se carga en MP
o cuando se intercambia el proceso con la MS (swap)
• El valor del registro base se añade a una dirección relativa
para producir una dirección absoluta
– La dirección resultante se compara con el valor en el registro de límites
– Si la dirección no está dentro de los límites, se genera una interrupción
(excepción) en el sistema operativo
Memoria contigua - Protección
• Pareja de registro base reubicación y registro límite
FFFFFF
registro de
registro límite reubicación
5000 14000
dirección dirección
lógica física
346 14346
CPU < + 014346
no
memoria

EXCEPCIÓN

MMU 000000
Política de asignación de memoria
• Cuando hay un conjunto de huecos libres, cada hueco tendrá
un tamaño variable
• ¿Qué hueco se le asigna a una petición de un proceso?
– Primer hueco (primer ajuste, first-fit)
• Se recorre la lista de huecos y se asigna el primer hueco de tamaño mayor
o igual al solicitado
– Siguiente hueco (siguente ajuste, next-fit)
• Igual que first-fit, pero se busca a partir desde donde se encontró el
último hueco libre
– Mejor hueco (mejor ajuste, best-fit)
• Se busca el hueco que deje menor resto libre
– Peor hueco (peor ajuste, worst-fit)
• Siempre se usa el hueco más grande
• Las políticas de “primer hueco” y “mejor hueco” son similares
en rendimiento; y mejores que la de “peor hueco” y
“siguiente hueco”
Fragmentación externa -
compactación
• A medida que se van asignando y liberando huecos,
van quedando zonas pequeñas que no sirven para
ubicar ningún proceso
• Posible solución: Compactación (sólo es posible si se
usa reubicación dinámica)
– La compactación puede consumir mucho tiempo
• Otra estrategia: Permitir que el proceso se divida en
“partes”
– Memoria no contigua
• Paginación
• Segmentación
Paginación
• Técnica que erradica definitivamente la fragmentación externa
• La memoria principal se divide en porciones de tamaño fijo relativamente
pequeños
• Cada proceso también se divide en porciones pequeñas del mismo
tamaño fijo (páginas)
• Las páginas disponibles en memoria se llaman marcos de página (page
frames)
• Un programa puede residir en varias páginas NO contiguas en la memoria
• Toda dirección lógica se descompone en dos partes:
– Número de página
– Desplazamiento
• La MMU se encarga de asociar cada número de página lógico con el marco
de página físico. Para ello emplea una tabla de páginas
• El espacio de memoria malgastado por cada proceso debido a la
fragmentación interna corresponde sólo a una fracción de la última página
de un proceso
• No existe fragmentación externa
Asignación de páginas de procesos
a marcos libres

Fuente: http://williamstallings.com/OS/OS5e-inst.html
Asignación de páginas de procesos
a marcos libres

Fuente: http://williamstallings.com/OS/OS5e-inst.html
Tabla de páginas

• Una tabla de páginas contiene una entrada por cada


página del proceso
• Cada entrada de la tabla de páginas contiene el número
del marco en la memoria principal, que contiene la
página correspondiente
• El SO mantiene una única lista de marcos libres de todos
los marcos de la memoria que se encuentran
actualmente no ocupados y disponibles para las páginas

Tablas de páginas en el momento (f)


Fuente: http://williamstallings.com/OS/OS5e-inst.html
Hardware de paginación
Tabla de páginas

FFFFFF
F

dirección
física
CPU P D F D
dirección
lógica
memoria

000000
Traducción: Ejemplo
Tabla de páginas
1000
0001 FFFFFF
0110
1100
dirección
física
24580
CPU 0010 000000000100 0110 000000000100

dirección
lógica
8196
memoria

000000
Segmentación
• Se descompone el proceso en varios segmentos de
memoria (código, datos, pila…)
• Con el hardware adecuado, se puede ubicar esos
segmentos en zonas de memoria no contiguas
– Se reduce bastante la fragmentación
• Todos los segmentos de todos los programas no tienen
que ser de la misma longitud
– Hay una longitud máxima del segmento
• El direccionamiento consta de dos partes:
– Un número de segmento y un desplazamiento (offset)
• Dado que los segmentos no son iguales, la segmentación
es similar a la partición dinámica
Segmentación
• La CPU trabaja con direcciones de memoria de dos partes:
<segmento, desplazamiento>
• El compilador debe identificar segmentos del programa y
generar direcciones segmentadas
• El cargador del SO ubica cada segmento en una zona de
memoria diferente
• La MMU traduce las direcciones <segmento,desplazamiento>
a direcciones lineales que forman la memoria principal
• La tabla de segmentos es una tabla de registros base+límite
Hardware de segmentación
Tabla de segmentos

FFFFFF
límite base

CPU S D
memoria
dirección
lógica < + DF
no dirección
física

dirección ilegal: excepción


000000
Segmentación - Traducción
• Considerando una dirección de n+m bits, donde los n bits
de la izquierda corresponden al número de segmento y
los m bits de la derecha corresponden al desplazamiento,
se necesita llevar a cabo los siguientes pasos para la
traducción de direcciones:
1. Extraer el número de segmento como los n bits de la izquierda
de la dirección lógica
2. Utilizar el número de segmento como un índice a la tabla de
segmentos del proceso para encontrar la dirección física inicial
del segmento
3. Comparar el desplazamiento, expresado como los m bits de la
derecha, y la longitud del segmento. Si el desplazamiento es
mayor o igual que la longitud, la dirección no es válida
4. La dirección física deseada es la suma de la dirección física
inicial del segmento y el desplazamiento
Segmentación – Traducción de
dirección lógica a física

Fuente: http://williamstallings.com/OS/OS5e-inst.html
Segmentación –
Ventajas/desventajas
• Ventajas
– Disminuye el problema de la fragmentación
– Permite definir protecciones selectivamente
– Permite compartir de zonas de memoria de forma eficaz
– No suma complejidad a la de gestión de espacio
• Desventajas
– El compilador/enlazador debe reconocer un espacio segmentado
(desventaja leve)
– Necesita soporte del hardware
– Necesita un acceso adicional a memoria (para la tabla de segmentos)
– No soluciona del todo los problemas de las técnicas de ubicación
contigua (fragmentación)
Resumen
• Una de las tareas más importantes y complejas de un sistema operativo es
la gestión de memoria
– La gestión de memoria implica tratar la MP como un recurso que debe
asignarse y compartirse entre varios procesos activos
• Para utilizar el procesador y las utilidades de E/S eficientemente, es
deseable mantener tantos procesos en MP como sea posible
• Es deseable liberar a los programadores de tener en cuenta las
restricciones de tamaño en el desarrollo de los programas
• Las herramientas básicas de gestión de memoria son la paginación y la
segmentación
– Con la paginación, cada proceso se divide en un conjunto de páginas de
tamaño fijo y de un tamaño relativamente pequeño
– La segmentación permite el uso de módulos de tamaño variable
• Es posible combinar la segmentación y la paginación en un único esquema
de gestión de memoria
Bibliografía complementaria
• Sistemas Operativos: aspectos internos y principios
de diseño (Stallings. 2005, 5ª edición)
– Capítulo 7
• Fundamentos de los Sistemas Operativos
(Silberschatz, Galvin, Gagne. 2006, 7ª edición)
– Capítulo 8

También podría gustarte