Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Secciones Stallings:
7.1, 7.2, 7.3, 7.4
Contenido
• Introducción
• Requisitos de la gestión de memoria
• Tecnologías/mecanismos gestión memoria
– Partición
– Paginación
– Segmentación
1
Introducción
• Memoria principal contiene:
– Sistema operativo: núcleo.
– Zona de usuarios: programa(s) en ejecución
• Gestión de Memoria:
– División de la memoria para “hacer sitio” a
varios procesos
– Obj: repartir eficientemente la memoria para
introducir tantos procesos como sea posible
• Si hay pocos procesos, todos en memoria principal,
la mayoría estarán esperando E/S
• Se intenta satisfacer/garantizar:
– Reubicación
– Protección
– Compartición
– Organización lógica
– Organización física
2
Requisitos - Reubicación
Referencia
de datos
Datos
Cima actual
de pila
Pila
3
Requisitos - Protección
– Código de un proceso no puede referenciar
posiciones de memoria de otros procesos sin
permiso
– Reubicación => imposible comprobar las
direcciones absolutas de los programas; se
desconoce la ubicación del programa en la
memoria principal
– Debe comprobarse durante la ejecución:
• El SO no puede anticiparse a todas las referencias a
la memoria que hará un programa.
• La protección la debe soportar el Hw. durante la
ejecución de la instrucción (muy costoso si Sw.)
Requisitos - Protección
La protección de memoria se puede realizar utilizando dos registros
(base=reasignación y límite) que controlan el acceso a la memoria
física. Ej:
Registro límite
Registro de
reasignación #límite2 Partición N
#base2
4
Requisitos - Compartimiento
– Permite acceso de varios procesos a la misma
zona de la memoria principal
– Mejor permitir a cada proceso (persona) que
acceda a la misma copia del programa, en lugar
de tener cada uno su propia copia aparte.
– Para cooperación es necesario tener acceso
compartido a estructuras de datos.
– El sistema de gestión debe permitir accesos
controlados, sin comprometer la protección.
5
Requisitos – Org. física
– Memoria principal: rápida, costosa, pequeña,
volátil, ...
– Memoria secundaria: más lenta, barata, gran
capacidad, no volátil, ...
– Flujo entre ambas responsabilidad del SO:
• La memoria principal disponible para un programa y
sus datos puede ser insuficiente:
– Superposición: permite que varios módulos sean asignados a
la misma región de memoria (programa principal encargado
del intercambio) => costoso para el programador
• El programador no conoce durante la codificación
cuánto espacio habrá disponible
Técnicas de Gestión de
Memoria
• Tarea principal del sistema de gestión de memoria:
carga de programas en memoria principal
para su ejecución en el procesador
• Técnicas simples
– Partición (utilizada con distintas variantes en antiguos SO)
– Paginación simple
– Segmentación simple
• Memoria Virtual (próximo tema)
– Sistemas multiprogramados modernos
– Basada en segmentación y paginación
6
Partición
• Particiones estáticas
• Particiones dinámicas
• Colegas
Particiones estáticas
• El SO ocupa parte fija de la memoria
• Resto disponible para los procesos:
– Límite en el nº de procesos listos/ejecución
(número de particiones)
• Tamaños de las particiones y algoritmos de
ubicación:
• Particiones de igual tamaño
• Particiones de distinto tamaño
7
Particiones estáticas
de igual tamaño
• Cualquier proceso con tamaño <= tam. de partición
puede cargarse en cualquier partición libre
• Si todas las particiones ocupadas, el SO puede sacar
(suspender) un proceso de una partición, para dejar
sitio a uno listo.
• Problemas:
– Un programa puede no ajustarse a una partición.
Programador debe diseñar el programa mediante
superposiciones (módulos).
– Uso de memoria principal ineficiente.
Cualquier programa, aunque sea pequeño, ocupa 1
partición completa: fragmentación interna.
Particiones estáticas
de distinto tamaño
• Reducen los problemas:
– Se pueden alojar programas más grandes sin
superposición
– Se reduce el desperdicio (fragmentación interna)
producido por programas pequeños.
• Pero no los solucionan del todo:
– Caben menos programas grandes sin
superposición
– Si hay muchos programas pequeños la
fragmentación interna es mayor en las
particiones grandes
8
Sistema operativo Sistema operativo
8M 8M
2M
8M 4M
6M
8M
8M
8M
8M
8M
12M
8M
8M
16M
8M
9
Ubicación para particiones de
distintos tamaños
• Una cola por partición
• Una cola única
Sistema Sistema
operativo operativo
Procesos Procesos
nuevos nuevos
(a) Una cola de procesos por partición (b) Cola única de procesos
10
Ubicación para particiones de
distintos tamaños
• Una cola por partición:
– Asignar cada proceso a la partición más pequeña
en la que quepa => 1 cola/partición
– Se minimiza la fragmentación interna de cada
partición
– Pero pueden existir particiones vacías y procesos
suspendidos asignados a otra cola
correspondiente a procesos más pequeños que la
partición vacía.
11
Particiones estáticas en
general
• Desventajas:
– Particiones especificadas al principio => límite
de procesos activos (no suspendidos)
– Si hay muchos procesos pequeños no se
aprovecha la memoria
• Actualmente no se usan particiones estáticas
Particiones dinámicas
• Particiones variables en nº y longitud
• Se asigna a cada proceso exactamente la memoria
que necesita. Cuando termina, memoria libre.
• Cuando se necesita espacio, se suspende uno
(p. ej., bloqueado)
• Al final, varios huecos en memoria. El rendimiento
decae (más intercambios): fragmentación externa
• “Solución”: usar compactación para desplazar
procesos, de forma que toda la memoria libre quede
junta en un bloque:
• Consume CPU
• Necesita capacidades de reubicación dinámica
12
8M
12M
22M
18M
8M
6M
Bloque asignado
14M Bloque libre
36M
Administración de memoria
Administración de memoria con mapas de bits:
• Memoria está dividida en unidades de asignación
las asignaciones.
A B C D
0 8 16 24 32 40 48
11111111
10000001 1: ocupado, 0: libre
11110000
11111111 La asignación de un proceso de tamaño k
11000111 unidades consiste en una búsqueda de k ceros
11111111 contiguos en el mapa de bits: LENTO
1 1 ...
13
Administración de memoria
Administración de memoria con listas ligadas: La memoria
está representada por una lista ligada de zonas de memoria
ocupadas (P) y libres (H).
A B C D
0 8 16 24 32 40 48
P 0 9 H 9 6 P 15 5
H 20 4 P 24 10 H 34 3
P 37 13
Longitud
Comienzo
P:Proceso H:Hueco
Administración de memoria
• Búsqueda de huecos más rápida: cada elemento de la lista
contiene el tamaño del mismo
P 0 9 H 9 6 P 15 5
H 20 4 P 24 10
P 0 9 H 9 15 P 24 10
14
Algoritmos de ubicación con
particiones dinámicas
• El SO debe decidir qué bloque libre se asigna
al proceso
• Algoritmo del mejor ajuste (best-fit):
– Elige el bloque de tamaño más próximo al
solicitado
– Proporciona en general los peores resultados
– Se busca el hueco más pequeño para el proceso
=> el fragmento que se deja es lo más pequeño
posible
=> se debe compactar más frecuentemente.
15
Algoritmos de ubicación con
particiones dinámicas
• Algoritmo del siguiente ajuste (next-fit):
– Elige el primer bloque disponible empezando
desde el lugar de la última ubicación.
– Lleva frecuentemente a la asignación de bloques
de memoria en la última ubicación, donde se
encuentra el bloque más grande.
– El bloque de memoria más grande se divide en
fragmentos pequeños.
– Hará falta la compactación para obtener un bloqu
de memoria grande al final del espacio de
memoria.
8M 8M
12M
Primer ajuste 12M
22M
6M
Mejor ajuste
Último bloque 18M
asignado (14K) 2M
8M 8M
6M 6M
Bloque asignado
14M Bloque libre 14M
Siguiente ajuste
36M
20M
16
Sistema de colegas
• Equilibrio entre la partición estática y la
dinámica
• El espacio entero disponible para la
asignación se trata como un solo bloque de
tamaño 2U.
• Si se hace una solicitud de tamaño s tal que
2U-1 < s <= 2U, entonces el bloque entero se
asigna:
– En otro caso, el bloque se divide en dos colegas
de igual tamaño.
– Este proceso continúa hasta que el bloque más
pequeño sea mayor o igual que s generándose.
1 bloque de
1 megabyte
Solicitud de 100K
Solicitud de 240K
Solicitud de 64K
Solicitud de 256K
Liberación de B
Liberación de A
Solicitud de 75K
Liberación de C
Liberación de E
Liberación de D
17
Figura 7.7. Representación en árbol del sistema de colegas.
Paginación Simple
• Cada proceso se divide en pequeños trozos
de tamaño fijo (páginas).
• La memoria principal se encuentra
dividida en trozos iguales de tamaño fijo
(marcos), que enmarcan las páginas de los
procesos
• Páginas y marcos tienen el mismo tamaño.
• Paginación elimina fragmentación externa
y limita la interna a una fracción del último
marco.
18
Paginación Simple
• Direccionamiento: SO mantiene 1 tabla de
páginas/proceso (ya no sólo base+límite):
– Muestra la posición del marco de cada
página
– Dirección lógica = nº página +
desplazamiento dentro de la página
• Procesador traduce dir. lógicas a dir.
físicas => consulta la tabla de páginas
Tablas de páginas
Lista de
Tabla de marcos
Tabla de páginas del Tabla de
libres
páginas del páginas del Tabla de
proceso B
proceso A proceso C páginas del
proceso D
19
Número
Memoria principal Memoria principal Memoria principal
de marco
(a) Quince marcos libres (b) Carga del proceso A (c) Carga del proceso B
(d) Carga del proceso C (e) Descarga del proceso B (f) Carga del proceso D
20
Tablas de páginas
Lista de
Tabla de marcos
Tabla de páginas del Tabla de
libres
páginas del páginas del Tabla de
proceso B
proceso A proceso C páginas del
proceso D
Paginación Simple
• Similar a particiones estáticas, pero...
– Particiones (marcos) pequeñas
– Un programa puede ocupar varias particiones
(marcos) no contiguas
– Se divide el programa en páginas, se cargan
todas sus páginas en marcos libres y se rellena la
tabla de páginas (y se actualiza la lista de marcos
libres).
21
Paginación Simple
• Interesa que tamaño de página/marco sea potencia de
2. Ventajas:
– Dirección relativa (respecto al comienzo del programa) ==
Dirección lógica (página,desplazamiento)
– Sencillez de traducción direcciones en ejecución:
• Dirección n + m bits (nº página + desplazamiento)
• Extraer nº pag. de n primeros bits.
• Usar nº pág. como índice en tabla de páginas => conseguir nº
marco k
• Comienzo dirección física del marco = k x 2 m.
• Comienzo dirección física referenciada = k x 2 m +
desplaz.indicado por los m bits
Tabla de
=> concatenar nº marco con desplazamiento
páginas del
proceso A
Segmentación Simple
22
Segmentación Simple
• Segmentos de distinto tamaño =>
segmentación similar a partición dinámica,
pero ...
– Puede ocupar más de un segmento
– No tienen que ser contiguos
– No tiene fragmentación interna y reduce la
fragmentación externa
– Se divide el programa en segmentos, se cargan
todos sus segmentos en bloques libres de
memoria y se rellena la tabla de segmentos (y se
actualiza la lista de bloques libres)
Segmentación Simple
• Segmentación es visible al programador
(paginación no)
– Organización del programa y los datos en segmentos
– El programador debe conocer el tamaño máximo
(inconv.)
• No tiene correspondencia simple entre direcciones
lógicas y físicas (paginación si)
• Tabla de segmentos de procesos
– Dirección de comienzo de segmento
– Longitud del segmento (protección)
23
Segmentación Simple
– Traducción direcciones en ejecución:
• Dirección n + m bits (nº segmento + desplazamiento)
• Extraer nº segmento de n primeros bits.
• Usar nº seg. como índice en tabla de segmentos =>
conseguir dirección física de comienzo del segmento
• Comparar desplazamiento con longitud del segmento
• Si menor: dirección física = dirección física comienzo
de segmento + desplaz.indicado por los n bits
24