You are on page 1of 12

Introducción

• Memoria principal contiene:


– Sistema operativo: núcleo.
Gestión de memoria – Zona de usuarios: programa(s) en ejecución
• Gestión de Memoria:
Secciones Stallings:
7.1, 7.2, 7.3, 7.4
– 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

Contenido Requisitos de la gestión de memoria

• Introducción
• Se intenta satisfacer/garantizar:
• Requisitos de la gestión de memoria
– Reubicación
• Tecnologías/mecanismos gestión memoria – Protección
– Partición – Compartición
– Paginación – Organización lógica
– Segmentación – Organización física

1
Requisitos - Reubicación Requisitos - Protección
– Código de un proceso no puede referenciar
– Programador no sabe qué otros programas
posiciones de memoria de otros procesos sin
residirán en memoria durante la ejecución
permiso
– Durante ejecución, proceso puede suspenderse
– Reubicación => imposible comprobar las
(pasar a disco) y volver a memoria principal, a direcciones absolutas de los programas; se
una ubicación distinta a la anterior (reubicación), desconoce la ubicación del programa en la
para mantener un alto número de procesos listos memoria principal
(listos/listos suspendidos)
– Debe comprobarse durante la ejecución:
– Se deben traducir las refs. a memoria • El SO no puede anticiparse a todas las referencias a
encontradas en el código a las direcciones físicas la memoria que hará un programa.
reales • La protección la debe soportar el Hw. durante la
ejecución de la instrucción (muy costoso si Sw.)

Información
de control
del proceso
Punto
de entrada
Bloque de control de proceso
Requisitos - Protección
al programa Instrucción
Código de La protección de memoria se puede realizar utilizando dos registros
bifurcación
(base=reasignación y límite) que controlan el acceso a la memoria
Direcciones
física. Ej:
ascendentes Registro límite
Registro de
Referencia reasignación #límite2 Partición N
de datos #base2
Datos
CPU > no Partición 2
+

Cima actual sí Partición 1


dirección MMU
de pila lógica dirección Sist. Operativo
Pila física
(Proceso 2) RAM
Trampa
error de direccionamiento
Figura 7.1. Requisitos de dirección para un proceso.
- SO necesita conocer estas direcciones Sólo el SO puede modificar los registros base y límite
- SO y HW: traducir direcciones a direcciones físicas reales

2
Requisitos - Compartimiento Requisitos – Org. física
– Permite acceso de varios procesos a la misma – Memoria principal: rápida, costosa, pequeña,
zona de la memoria principal volátil, ...
– Mejor permitir a cada proceso (persona) que – Memoria secundaria: más lenta, barata, gran
acceda a la misma copia del programa, en lugar capacidad, no volátil, ...
de tener cada uno su propia copia aparte. – Flujo entre ambas responsabilidad del SO:
– Para cooperación es necesario tener acceso • La memoria principal disponible para un programa y
compartido a estructuras de datos. sus datos puede ser insuficiente:
– Superposición: permite que varios módulos sean asignados a
– El sistema de gestión debe permitir accesos la misma región de memoria (programa principal encargado
controlados, sin comprometer la protección. 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
Requisitos – Org. lógica
Memoria
– Memoria organizada como espacio de
• Tarea principal del sistema de gestión de memoria:
direcciones unidimensional - cada dirección se carga de programas en memoria principal
refiere a una secuencia de bytes (palabra). para su ejecución en el procesador
– La mayoría de los programas se organizan en • Técnicas simples
módulos (no linealmente). – Partición (utilizada con distintas variantes en antiguos SO)
– Si SO y Hw. pueden tratar los módulos – Paginación simple
(ventajas): – Segmentación simple
• Pueden escribirse y compilarse independientemente • Memoria Virtual (próximo tema)
• Pueden otorgarse distintos grados de protección – Sistemas multiprogramados modernos
(sólo lectura, sólo ejecución) a cada uno – Basada en segmentación y paginación
• Pueden compartirse

3
Particiones estáticas
Partición
de igual tamaño
• Particiones estáticas • Cualquier proceso con tamaño <= tam. de partición
puede cargarse en cualquier partición libre
• Particiones dinámicas
• Si todas las particiones ocupadas, el SO puede sacar
• Colegas (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
Particiones estáticas
de distinto tamaño
• El SO ocupa parte fija de la memoria • Reducen los problemas:
• Resto disponible para los procesos: – Se pueden alojar programas más grandes sin
superposición
– Límite en el nº de procesos listos/ejecución
(número de particiones) – Se reduce el desperdicio (fragmentación interna)
producido por programas pequeños.
• Tamaños de las particiones y algoritmos de • Pero no los solucionan del todo:
ubicación: – Caben menos programas grandes sin
• Particiones de igual tamaño superposición
• Particiones de distinto tamaño – Si hay muchos programas pequeños la
fragmentación interna es mayor en las
particiones grandes

4
Ubicación para particiones de
Sistema operativo Sistema operativo
8M 8M
2M
8M 4M
distintos tamaños
6M
8M
• Una cola por partición
8M
8M • Una cola única
8M

8M

12M
8M

8M

16M
8M

(a) Particiones de igual (b) Particiones de distinto


tamaño tamaño
Figura 7.2. Ejemplo de partición estática en una memoria de 64Mb.

Ubicación para particiones de Sistema Sistema


operativo operativo

igual tamaño

• Todas las particiones son de igual tamaño Procesos Procesos


=> no importa la partición que se use nuevos nuevos

• Si existen varios procesos bloqueados, el


planificador elige cual suspender

(a) Una cola de procesos por partición (b) Cola única de procesos

Figura 7.3. Asignación de memoria en partición estática de distinto tamaño.

5
Ubicación para particiones de Particiones estáticas en
distintos tamaños general
• Una cola por partición: • Desventajas:
– Asignar cada proceso a la partición más pequeña – Particiones especificadas al principio => límite
en la que quepa => 1 cola/partición de procesos activos (no suspendidos)
– Se minimiza la fragmentación interna de cada – Si hay muchos procesos pequeños no se
partición aprovecha la memoria
– Pero pueden existir particiones vacías y procesos
• Actualmente no se usan particiones estáticas
suspendidos asignados a otra cola
correspondiente a procesos más pequeños que la
partición vacía.

Ubicación para particiones de Particiones dinámicas


distintos tamaños
• Una cola única • Particiones variables en nº y longitud
– Cuando se va a cargar un proceso, se selecciona • Se asigna a cada proceso exactamente la memoria
la partición más pequeña disponible donde que necesita. Cuando termina, memoria libre.
quepa • Cuando se necesita espacio, se suspende uno
– Si todas las particiones ocupadas: decisión de (p. ej., bloqueado)
intercambio: • Al final, varios huecos en memoria. El rendimiento
• Partición más ajustada (minimiza la fragmentación decae (más intercambios): fragmentación externa
interna) • “Solución”: usar compactación para desplazar
• Prioridades de procesos cargados procesos, de forma que toda la memoria libre quede
• Descarga de procesos bloqueados junta en un bloque:
• Consume CPU
• Necesita capacidades de reubicación dinámica

6
Administración de memoria
8M

12M

22M
Administración de memoria con listas ligadas: La memoria
está representada por una lista ligada de zonas de memoria
18M
ocupadas (P) y libres (H).
A B C D
8M 40 48
0 8 16 24 32
6M
P 0 9 H 9 6 P 15 5
Bloque asignado
14M Bloque libre
H 20 4 P 24 10 H 34 3

36M
P 37 13

Longitud
Comienzo
P:Proceso H:Hueco

Administración de memoria Administración de memoria


Administración de memoria con mapas de bits: • Búsqueda de huecos más rápida: cada elemento de la lista
• Memoria está dividida en unidades de asignación contiene el tamaño del mismo
correspondientes a un bit en un mapa de bits de la memoria.
• Compromiso entre el tamaño del mapa y la optimización de • Fácil reorganización de lista al terminar un proceso o al
las asignaciones. introducir uno nuevo. Ej:
A B C D
0 8 16 24 32 40 48 P 0 9 H 9 6 P 15 5
11111111
10000001 1: ocupado, 0: libre
11110000 H 20 4 P 24 10
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 ... P 0 9 H 9 15 P 24 10

7
Algoritmos de ubicación con Algoritmos de ubicación con
particiones dinámicas particiones dinámicas
• El SO debe decidir qué bloque libre se asigna • Algoritmo del siguiente ajuste (next-fit):
al proceso – Elige el primer bloque disponible empezando
desde el lugar de la última ubicación.
• Algoritmo del mejor ajuste (best-fit): – Lleva frecuentemente a la asignación de bloques
– Elige el bloque de tamaño más próximo al de memoria en la última ubicación, donde se
solicitado encuentra el bloque más grande.
– Proporciona en general los peores resultados – El bloque de memoria más grande se divide en
fragmentos pequeños.
– Se busca el hueco más pequeño para el proceso
=> el fragmento que se deja es lo más pequeño – Hará falta la compactación para obtener un bloqu
de memoria grande al final del espacio de
posible
memoria.
=> se debe compactar más frecuentemente.

Algoritmos de ubicación con 8M 8M

particiones dinámicas 12M

22M
Primer ajuste 12M

6M
• Algoritmo del primer ajuste (first-fit): Último bloque 18M
Mejor ajuste

2M
– Elige el primer bloque disponible empezando asignado (14K)

desde el principio de la memoria 8M 8M


6M
– Es más rápido. 6M

Bloque asignado
– Puede tener varios procesos cargados en el
14M Bloque libre 14M
extremo inicial de la memoria que es necesario Siguiente ajuste
recorrer cuando se intente encontrar un bloque
libre. 36M
20M

(a) Antes (b) Después

Figura 7.5. Ejemplo de una configuración de memoria antes y después de asignar


un bloque de 16 Mbytes.

8
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.
Figura 7.7. Representación en árbol del sistema de colegas.

1 bloque de
1 megabyte Paginación Simple
Solicitud de 100K

Solicitud de 240K

Solicitud de 64K
• Cada proceso se divide en pequeños trozos
Solicitud de 256K
de tamaño fijo (páginas).
Liberación de B • La memoria principal se encuentra
Liberación de A dividida en trozos iguales de tamaño fijo
Solicitud de 75K
(marcos), que enmarcan las páginas de los
Liberación de C
procesos
Liberación de E • Páginas y marcos tienen el mismo tamaño.
Liberación de D • Paginación elimina fragmentación externa
y limita la interna a una fracción del último
Figura 7.6. Ejemplo del sistema de colegas. marco.

9
Paginación Simple Número
de marco
Memoria principal Memoria principal Memoria principal

• 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 (a) Quince marcos libres (b) Carga del proceso A (c) Carga del proceso B

Figura 7.9. Asignación de páginas de procesos a marcos libres.

Tablas de páginas Memoria principal Memoria principal Memoria principal

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

Figura 7.10. Estructuras de datos para el ejemplo de la Figura 7.9 en


el instante de tiempo (f).

(d) Carga del proceso C (e) Descarga del proceso B (f) Carga del proceso D

Figura 7.9. Asignación de páginas de procesos a marcos libres.

10
Tablas de páginas Paginación Simple
• Interesa que tamaño de página/marco sea potencia de
Tabla de
Lista de 2. Ventajas:
marcos
Tabla de páginas del Tabla de
libres – Dirección relativa (respecto al comienzo del programa) ==
páginas del páginas del Tabla de
proceso A
proceso B
proceso C páginas del Dirección lógica (página,desplazamiento)
proceso D – 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º
Figura 7.10. Estructuras de datos para el ejemplo de la Figura 7.9 en marco k
el instante de tiempo (f). • 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

Paginación Simple Segmentación Simple


• Similar a particiones estáticas, pero... • No es necesario que todos los trozos
– Particiones (marcos) pequeñas (segmentos) de todos los programas tengan
– Un programa puede ocupar varias particiones la misma longitud, aunque:
(marcos) no contiguas
– existe una longitud máxima de segmento.
– Se divide el programa en páginas, se cargan
todas sus páginas en marcos libres y se rellena la • Dirección lógica (segmentada) =
tabla de páginas (y se actualiza la lista de marcos = nº de segmento + desplazamiento.
libres).
• 1 tabla de segmentos/proceso
(correspondencia segmento lógico-
comienzo dirección física)

11
Segmentación Simple Segmentación Simple
• Segmentos de distinto tamaño => – Traducción direcciones en ejecución:
segmentación similar a partición dinámica, • Dirección n + m bits (nº segmento + desplazamiento)
pero ... • Extraer nº segmento de n primeros bits.
– Puede ocupar más de un segmento • Usar nº seg. como índice en tabla de segmentos =>
conseguir dirección física de comienzo del segmento
– No tienen que ser contiguos
• Comparar desplazamiento con longitud del segmento
– No tiene fragmentación interna y reduce la
• Si menor: dirección física = dirección física comienzo
fragmentación externa de segmento + desplaz.indicado por los n bits
– 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)

12

You might also like