Professional Documents
Culture Documents
• 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
+
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
igual tamaño
(a) Una cola de procesos por partición (b) Cola única de procesos
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.
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
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.
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)
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
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
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
(d) Carga del proceso C (e) Descarga del proceso B (f) Carga del proceso D
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
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