Está en la página 1de 69

Sistemas Operativos

Tema 8. Gestin de memoria

1998-2012 Jos Miguel Santos Alexis Quesada Francisco Santana


Beln Esteban

1
Contenidos

n Antecedentes
n Tcnicas bsicas: recubrimientos,
intercambio
n Gestin de memoria contigua

n Segmentacin

n Paginacin

n Tcnicas mixtas

2
Gestin de la memoria
Antecedentes
n La memoria fsica es un conjunto de celdas
referenciables por medio de una direccin lineal
(p.ej. de la 00000h a la FFFFFh)
n Para que un programa se ejecute, su cdigo y
sus datos necesitan estar cargados en memoria
(al menos en parte)
n En un sistema multitarea, la memoria ha de
repartirse entre los diferentes procesos

3
Gestin de la memoria
Antecedentes (2)
n Las rutinas del sistema operativo tambin
debern residir en memoria, en todo o en
parte
n Puede ser que la memoria principal no tenga
capacidad suficiente para todos los procesos
en ejecucin

4
Gestin de la memoria
Objetivo principal
n Conseguir que varios procesos puedan ejecutarse de
forma concurrente,
q evitando los conflictos de uso
q protegiendo al sistema operativo
q aprovechando eficazmente el espacio disponible:
n Minimizar la memoria desaprovechada
q Evitar fragmentacin
q Memoria ocupada por varias copias de un mismo objeto
q Memoria ocupada por las estructuras de datos necesarias para la
operacin del gestor de memoria
n Carga parcial de programas
q sin perjudicar el rendimiento:
n Complejidad temporal
n Tiempo de acceso a memoria

5
Gestin de la memoria
Objetivo principal (2)
n Un gestor de memoria ideal debera por tanto,
q minimizar la memoria desaprovechada
q tener una complejidad temporal mnima
q y presentar un recargo por acceso a memoria mnimo
q adems de proporcionar una buena proteccin y una
comparticin flexible

6
Ciclo de vida de un programa
programa fuente

compilador
compilacin
mdulo objeto
otros objetos
y bibliotecas enlazador
(linker)

programa ejecutable
bibliotecas
del sistema cargador carga
bibliotecas
dinmicas programa y datos
binarios en memoria
ejecucin
HARDWARE

7
Conversin de direcciones:
reubicacin
n El compilador traduce direcciones de memoria
simblicas a direcciones binarias.
n Si las direcciones binarias son absolutas, el
programa slo se puede ejecutar en una zona
fija de la memoria: NO ES REUBICABLE.
n Ej.: los programas con formato .COM de MS-
DOS

8
Conversin de direcciones:
reubicacin (2)
n Nos interesa que el compilador no genere
direcciones definitivas, sino direcciones
provisionales, reubicables.
Cuando se sepa dnde van a residir el cdigo y
los datos, se convertirn a direcciones
absolutas.
n En qu momento (etapa) se realiza esta
reubicacin ?
q Carga (enlazador o cargador) Reubicacin esttica
q Ejecucin (hardware) Reubicacin dinmica

9
Reubicacin dinmica:
direcciones lgicas/direcciones fsicas
n Direccin fsica: la que llega al chip de
memoria
n Direccin lgica o virtual: la generada por
la CPU
n El dispositivo que traduce direcciones
virtuales a fsicas se llama unidad de
manejo de memoria (MMU, en ingls)
n El espacio de direcciones lgicas y el
espacio de direcciones fsicas no tienen por
qu coincidir
n Ejemplo: registro base
10
Espacios de direcciones
Fichero fuente Fichero ejecutable Memoria lgica del
(principal.cc) (principal) proceso Memoria fsica
#include<stream.h>
cabecera
main() cdigo
{
int cont;
cdigo datos
...
cont++ inicializados
... MR
} datos datos sin
inicializados inicializar Proceso
pila

Espacio de direcciones Espacio de direcciones lgicas/fsicas


simblicas

11
Direcciones lgicas/direcciones
fsicas
Direccin
lgica o
virtual CPU Memoria Disco
CPU
dir. lgica
1234
Controlador Controlador
MMU de de
+ 80000 memoria disco
registro base Direccin fsica

MMU
dir. fsica
81234

memoria

12
Carga dinmica

n Proceso se ejecute
q Cdigo + Datos Memoria fsica
n Consecuencia:
q Tamao de un proceso limitado al tamao de la
memoria fsica
n Carga dinmica
q postergar la carga en memoria de un mdulo hasta
que el programa llame a alguna rutina del mismo

13
Enlace dinmico

n Similar a la carga dinmica, pero efectuando el enlace


en tiempo de ejecucin: bibliotecas dinmicas (DLL)
n La DLL se carga en memoria cuando algn proceso
llama a una de sus rutinas. Las llamadas a sus
funciones se efectan a travs de una tabla de punteros.
n Si varios procesos emplean la biblioteca dinmica, slo
se mantiene una copia de ella en memoria.
n Ejemplos de enlace dinmico:
q UNIX: shared libraries (shlib)
q Windows: dynamic load libraries (dll)

14
Recubrimientos (overlays)

n Muchos programas no necesitan todo el


cdigo al mismo tiempo, sino que se
ejecutan por fases (ej. un compilador)
n El programa se descompone en mdulos
separados (recubrimientos), que se
cargan en un rea de memoria al efecto
n Si se carga un recubrimiento, borra al que
se encontraba ya cargado
n El programa de usuario es responsable de
cargar recubrimientos segn se necesiten

15
Recubrimientos (overlays) (2)

rutinas y
datos comunes
manejador de
recubrimientos
fase 1
(disponible para
fase 2 recubrimientos)

fase 3

16
Intercambio (swapping)

n Objetivo: cuando un proceso queda bloqueado o en


espera, la memoria que ocupa podra desasignrsele.
n Intercambio: Cuando un proceso pierde la CPU, se
vuelca su imagen de la memoria al disco (swap out).
Cuando se decide reanudar el proceso, se recupera
su imagen del disco (swap in)

sistema operativo
P1
memoria P2
para usuarios

17
Intercambio (swapping) (2)

n Problemas:
q aumenta el tiempo de cambio de contexto
q E/S que accede por DMA
n Mejoras:
q varios procesos en memoria
q intercambio un proceso mientras se ejecuta otro

18
Intercambio (swapping) (3)

n Qu se necesita para llevarlo a cabo?


q Proceso intercambiador (efecta la mayora de las funciones del
PMP)
q Criterios para la eleccin de la vctima (poltica de swapping out)
q Criterios para elegir los procesos que entran (poltica de
swapping in)
q Espacio en disco donde almacenar las imgenes de los procesos
n Area especfica para el intercambio (rea de swap)
n Ficheros de intercambio
q Criterios para la gestin del espacio de intercambio (poltica de
gestin del rea de swap)

19
Intercambio (swapping) (4)

n Otras consideraciones:
q Operaciones de E/S pendientes ?
q Un proceso intercambiado, regresa al mismo
espacio de memoria que ocup previamente ?
q Versiones modificadas del intercambio estndar:
n Unix
n Microsoft Windows 3.1

20
Gestin de memoria contigua

n Caso trivial: una sola particin (sistema


operativo+rea de usuario)
q como mucho, utilizar un registro base para proteger al
S.O.
Memoria fsica
0
SO
Registro base

Proceso

256K

21
Gestin de memoria contigua
n Evolucin: particiones mltiples
q particiones de tamao fijo (MFT)
q particiones de tamao variable (MVT)
MFT MVT
Memoria fsica Memoria fsica Memoria fsica

SO SO SO

Particin 1
Particin 1

Particin 2 Particin 2
Particin 3
Particin 3

Particin 4
Particin 4

22
Memoria contigua: estructuras de
datos
n Mecanismos de gestin de la memoria contigua
q Tabla de descripcin de particiones (TDP)
q El S.O. gestionar una lista de huecos libres en
memoria y seleccionar qu procesos pueden
cargarse en memoria para ejecutarse
q Primitivas internas de pedir y liberar memoria

23
Memoria contigua: cmo reservar
espacio a un proceso
n POLTICAS DE UBICACIN
q El problema general se conoce como la gestin de
memoria dinmica
n Primer hueco (first-fit)
n Mejor hueco (best-fit)
n Peor hueco (worst-fit)
q las polticas de primer hueco y mejor hueco son
similares en rendimiento; y mejores que la de peor
hueco
q Otras polticas: siguiente ajuste, buddies

24
Memoria contigua: proteccin

n Pareja de registros base y lmite

5000 80000

lmite base

CPU dir. lgica dir. fsica memoria


1234 < + 81234
s
no

excepcin
MMU

25
Memoria contigua: proteccin

n Registrar los derechos de acceso en la propia


memoria
q A cada direccin se le aade un nmero de bits para
identificar al propietario
n Problema: costoso
n Mejora: asociar estos bits a bloques de memoria fsica
q Comprobacin: tiempo de ejecucin
q SO Clave maestra nica que le da acceso sin
restricciones a todos los bloques de memoria

26
Compartir zonas de memoria

n Confiar los objetos compartidos al SO


q Forma de acceder a estos objetos: llamadas al
sistema
q Inconvenientes:
n SO grande y monoltico, lo que hace ms difcil su
desarrollo, mantenimiento y verificacin
n No se podran incorporar dinmicamente nuevos objetos
(slo permite la inclusin de nuevos objetos durante la
generacin del sistema)

27
Compartir zonas de memoria (2)

n Mantener mltiples copias de los objetos


compartidos
q Redundancia las modificaciones deben ser
propagadas a todas las copias restantes (SO
sera el encargado cada vez que se realice un
cambio de contexto)
q Si se soporta intercambio, OJO, podran existir
copias de los objetos compartidos en disco

28
Comparticin

n Utilizar particiones de memoria compartidas


(comunes)
n Proteccin?
q Registros base/lmite: requerira conjuntos separados
de pares de registros base/limite dedicados para
acceder a los espacio de memoria privado y
compartido
n Implica la existencia de algn mecanismo que indique en
cada acceso que conjunto de registros emplear

29
Comparticin

n Claves de proteccin: requerira controlar los


bloques compartidos para que en los
conmutaciones de contexto se cambien las
claves de proteccin
q Necesidad de llevar la cuenta de que bloques estn
siendo compartidos y por quin
n MVT => Permite que particiones adyacentes en
memoria fsica puedan solaparse
q Comparticin de datos y cdigo (dos procesos)

30
La fragmentacin de la memoria

n Es el gran problema de la memoria contigua


q Fragmentacin interna (MFT)
q Fragmentacin externa (MVT)

31
Fragmentacin: soluciones

n Permitir que un proceso puede ubicarse en


zonas de memoria no necesariamente contiguas
n Y si no se puede lo anterior compactacin
n Es posible siempre?
q Si la reubicacin es esttica y se efecta durante el
ensamblado o la carga, no puede haber compactacin
q Esta slo es posible si la reubicacin es dinmica y se
efecta en tiempo de ejecucin
n Slo requiere mover el programa y los datos y modificar el
registro base para que refleje la nueva direccin base

32
Compactacin

n Estrategia a seguir
q Seleccionar una estrategia ptima de traslados
n Raras veces es implementado debido al gasto en que se
incurre al evaluar las opciones
q Reubicar todas las particiones en un extremo de la
memoria
n El recargo por copia es generalmente ms alto que el de un
traslado ms selectivo
q Compactacin + intercambio
n Copiar en disco los procesos que tienen que cambiar de lugar

33
Segmentacin

n Un programa se puede descomponer en varios


segmentos de memoria (cdigo, datos, pila...)
n Con el hardware adecuado, podemos ubicar esos
segmentos en zonas de memoria no contiguas.

T.seg. S1

S3

S2

34
Segmentacin (2)

n El compilador tiene que generar cdigo que


haga referencias a direcciones de memoria con
dos componentes: <segmento,desplazamiento>
n El S.O. ubica cada segmento en un hueco
contiguo de memoria
n El hardware se encarga de la reubicacin
dinmica mediante una tabla de segmentos

35
Hardware de segmentacin
Tabla de segmentos

(S)

lmite base

S D

dir. lgica dir. fsica


s
< + D

no

Excepcin:
direccin ilegal

36
Tabla de segmentos

n Registros
q Problema: muchos segmentos
n Memoria
q Registro base de la tabla de segmentos (RBTS)
q Registro de longitud de la tabla de segmentos (RLTS)

37
Tabla de segmentos

n Proceso de traduccin: direccin lgica (s,d)


q Se comprueba que s<RLTS
q Se calcula la direccin de la entrada de la tabla de segmentos
(RBTS+s) y se lee dicha entrada
q Se coteja el desplazamiento con la longitud del segmento
q Se calcula la direccin fsica del byte deseado como la suma de
la base del segmento y el desplazamiento
n Proceso de traduccin: requiere dos referencias a
memoria por cada direccin lgica
n Solucin: usar un conjunto de registros asociativos para
guardar las entradas de la tabla de segmentos que se
usaron mas recientemente

38
Segmentacin: ventajas

n Atena el problema de la fragmentacin


n Permite definir protecciones selectivamente
n Permite comparticin de zonas de memoria
de forma eficaz
n Todo ello sin aadir complejidad a los
algoritmos de gestin de espacio

39
Segmentacin: inconvenientes

n El compilador/enlazador debe reconocer un


espacio segmentado (desventaja leve)
n Necesita soporte del hardware
n Incurre en un acceso adicional a memoria
(para la tabla de segmentos)
n No soluciona del todo los problemas de las
tcnicas de ubicacin contigua
(fragmentacin)

40
Paginacin

n Tcnica que soluciona la fragmentacin externa


n La idea: Trocear la memoria disponible en pginas de
tamao fijo (ej. 4Kb). Un programa puede residir en
varias pginas no contiguas
n Las pginas disponibles en memoria se llaman marcos
de pgina (page frames).
n Toda direccin lgica se descompone en dos partes:
nmero de pgina y desplazamiento.
n La MMU se encarga de asociar el nmero de pgina
lgico con el marco de pgina asignado. Para ello
emplea una tabla de pginas.

41
Paginacin/Ejemplo

42
Ejemplo de paginacin
Ubicacin de un proceso en memoria y creacin de la tabla de pginas:
tamao de pgina 4kbytes, tamao de la memoria 48kbytes

Memoria fsica
0 Memoria fsica
m0 0
4k
m1 S0 Tabla de pginas
Proceso 1 (10k) 4k
8k
m2 8k
SO Proceso 1
12k
Pg0
Marco
m3 Pg1
12k
16k
m4 Pg2 16k
P1-Pg1 10
20k

24k m5 20k 3
m6 10k/4k=2.5 3 pginas 24k
6
28k
m7 28k
P1-Pg2
32k

36k m8 32k

40k
m9 36k

44k m10 40k


P1-Pg0
48k
m11 44k
Fragmentacin
48k interna!!

48k/4k=12 marcos 43
Paginacin: gestin del espacio
libre
n La gestin del espacio libre consiste
simplemente en saber qu marcos estn libres
n El SO posee una tabla de marcos de pginas
(TMP)
q Implementacin?

44
Paginacin/Marcos Libres

45
Paginacin:
traduccin de direcciones
Traduccin de direcciones: direcciones de 16 bits y tamao de pgina 4kbytes

Desplazamiento
dentro de la
4k=212 12 bits
16-12=4bits Nmero de pgina
pgina

0010 000000000100 Direccin lgica:(8196)

Tabla de Pginas

Marco
1010
0011
0110

Marco de pgina

0110 000000000100 Direccin fsica: (24580)

46
Hardware de paginacin
Tabla de pginas

(P) F

P D Memoria
CPU F D fsica
dir. lgica dir. fsica

47
Estructura de la tabla de
pginas
n Depende del SO
n Denominador comn
q Una tabla de pginas para cada proceso
n cmo localiza el SO la tabla de pginas de un
proceso?
q BCP
n Contador de instrucciones, registros, info. de E/S, etc... Y
n Puntero a la tabla de pginas
n Qu ocurre en un cambio de contexto?
q Despachador cargar los registros con los valores del nuevo
proceso y
q A partir de la tabla de pginas almacenada, cargar los valores
correctos de la tabla de pginas en hardware !!

48
Implementacin en hardware de la
tabla de pginas

n Conjunto de registros dedicados


q Ejemplo: Computador DEC PDP-11
n la direccin consiste en 16 bits y el tamao de
pgina es de 8k)
16 bits

Direccin 3 bits 13 bits

n La tabla de pginas consta por tanto de ocho


entradas que se mantienen en registros rpidos

49
Implementacin en hardware de la
tabla de pginas
n Esquema de registros
q Problema: tablas de pginas grandes
n Solucin
q Mantener la tabla de pginas en memoria
q Registro base de la tabla de pginas (RBTP)
que apunta a la TP
n Cambio de contexto: ms rpido (slo cambiar el
valor de este registro)
n Gran inconveniente: tiempo de traduccin

50
Paginacin
Traduccin de direcciones

51
Implementacin en hardware de la
tabla de pginas
n Solucin: usar un TLB (translation lookahead
buffer)
q Pequeo cache especial en hardware
q Cada registro consta de dos partes: clave y valor
q Funcionamiento:
n Se presenta una clave y, si encuentra alguna
coincidencia, devuelve el valor correspondiente
q Permite bsquedas rpidas pero el hardware es
costoso

52
TLB: cmo funciona
n Funcionamiento: acceso posicin i
q Obtiene el nmero de pgina donde se encuentra i
q Si est en TLB Obtenemos el marco de pgina
donde se encuentra
q sino, acceso a la tabla de pginas y actualizar TLB
n Si TLB llena Sustitucin de una de las existentes
n OJO, cambio de contexto
q Desalojar (borrar) el TLB

53
TLB: esquema general

54
TLB: tasa de aciertos
n Tasa de aciertos
q porcentaje de las veces que un nmero de pgina
se encuentra en los registros asociativos
q relacionada con el nmero de registros asociativos
q 16-512 => pueden obtenerse tasas de aciertos
entre 80 y 98%.
n Ejemplos
q Motorola 68030 => TLB de 22 entradas
q Intel 80486 => TLB de 32 entradas
n Sus fabricantes dicen que tiene una tasa de aciertos del
98%

55
Tabla de pginas invertidas

n Problema: tamao que puede llegar a ocupar


la tabla de pginas
n Idea: usar una tabla de pginas invertida
q Tiene una entrada por cada marco real de la
memoria
q Cada entrada consiste en la pgina virtual
almacenada en dicho marco y el proceso al que
pertenece
q Por tanto, slo hay una tabla de pginas en el
sistema que contiene una entrada por cada marco
de pgina

56
Tabla de pginas invertida

57
Tabla de pginas invertida

n Ventajas
q Reduce la cantidad de memoria necesaria
n Desventaja
q Tiempo de bsqueda en la tabla de pginas
invertida
q Soluciones:
n Tabla de dispersin (hash)
n Registros asociativos (cach)

58
Paginacin: inconvenientes

n Pequeo inconveniente: fragmentacin interna


q Tamao de las pginas?
n Pequeo
q mejora fragmentacin interna
q Aumenta el tamao de la tabla de pgina
n Grande
q Peor desde el punto de vista de la fragmentacin interna
q Tamao de las tablas de pginas menor
n Tendencia en los ltimos aos
q Aumentar a medida que los procesos, los conjuntos de datos y la
memoria principal se han vuelto ms grandes
q 2-4 Kbytes

59
Paginacin: proteccin

n Las pginas pueden tener asignados bits de


proteccin (ej. lectura, escritura, ejecucin)
n Bit de validez/no validez
q Indica si la pgina correspondiente est en el
espacio de direcciones lgico del proceso y por tanto
es vlida

60
Paginacin: bit de validez

61
Paginacin: proteccin contra
accesos fuera de lmites
n Un proceso casi nunca utiliza todo su intervalo
de direcciones
q En estos casos sera un desperdicio crear una tabla
de pginas con entradas para todas las pginas del
intervalo de direcciones
n Algunos sistemas: registro de longitud de la
tabla de pginas (RLTP)
q Indica el tamao de la tabla de pginas y se coteja
con cada direccin lgica para asegurar que la
direccin est en el intervalo vlido para el proceso

62
Comparticin de pginas

n Varios procesos podran tener la misma


memoria fsica apuntada en sus respectivas
tablas de pginas
n La comparticin de cdigo exige que el cdigo
sea reentrante, es decir, no puede modificarse a
s mismo

63
Comparticin de pginas

64
Paginacin de varios niveles

n Sistemas modernos => espacio de


direcciones lgico muy grande (232 a 264)
n Problema: tamao de la tabla de pginas
q Por ejemplo, si tamao de pgina es de 4k, un
proceso podra requerir hasta 4 Mb de espacio
fsico para la tabla de pginas
q Solucin: paginar la tabla de pginas, teniendo
varios niveles de pginas (ej. 80386)

65
Paginacin de varios niveles

66
Paginacin de varios niveles:
80386

Como mximo hay un total de :


2(n1+n2) pginas por proceso
2n2 entradas en cada tabla de pginas interior
2n1 entradas en la tabla de pginas exterior
2n1 tablas de pginas interiores

67
Esquema combinado
segmentado/paginado
n La paginacin y la segmentacin pueden
combinarse (ej. MULTICS, 80386).
n Motivacin: aprovecharse de las ventajas que
ofrecen los esquemas por separado
q Segmentacin: flexibilidad y facilidad para la
organizacin lgica
q Paginacin: mejorar el problema de la fragmentacin

68
Esquema combinado segmentado/
paginado: 80386

69

También podría gustarte