Vous êtes sur la page 1sur 69

Sistemas Operativos Tema 8.

Gestin de memoria

1998-2012 Jos Miguel Santos Alexis Quesada Francisco Santana Beln Esteban
1

Contenidos
Antecedentes !! Tcnicas bsicas: recubrimientos, intercambio !! Gestin de memoria contigua !! Segmentacin !! Paginacin !! Tcnicas mixtas
!!
2

Gestin de la memoria Antecedentes


!!

!!

!!

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

Gestin de la memoria Antecedentes (2)


!!

!!

Las rutinas del sistema operativo tambin debern residir en memoria, en todo o en parte Puede ser que la memoria principal no tenga capacidad suficiente para todos los procesos en ejecucin

Gestin de la memoria Objetivo principal


!!

Conseguir que varios procesos puedan ejecutarse de forma concurrente,


"! "! "!

evitando los conflictos de uso protegiendo al sistema operativo aprovechando eficazmente el espacio disponible:
!!

Minimizar la memoria desaprovechada


"! "! "!

Evitar fragmentacin Memoria ocupada por varias copias de un mismo objeto Memoria ocupada por las estructuras de datos necesarias para la operacin del gestor de memoria

!!

Carga parcial de programas Complejidad temporal Tiempo de acceso a memoria

"!

sin perjudicar el rendimiento:


!! !!

Gestin de la memoria Objetivo principal (2)


!!

Un gestor de memoria ideal debera por tanto,


"! "! "! "!

minimizar la memoria desaprovechada tener una complejidad temporal mnima y presentar un recargo por acceso a memoria mnimo adems de proporcionar una buena proteccin y una comparticin flexible

Ciclo de vida de un programa


programa fuente compilador

compilacin
mdulo objeto otros objetos y bibliotecas enlazador (linker) programa ejecutable bibliotecas del sistema bibliotecas dinmicas cargador programa y datos binarios en memoria HARDWARE

carga

ejecucin

Conversin de direcciones: reubicacin


!!

!!

!!

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

Conversin de direcciones: reubicacin (2)


!!

!!

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. En qu momento (etapa) se realiza esta reubicacin ?
"! "!

Carga (enlazador o cargador) # Reubicacin esttica Ejecucin (hardware) # Reubicacin dinmica

Reubicacin dinmica: direcciones lgicas/direcciones fsicas


!! !! !!

!!

!!

Direccin fsica: la que llega al chip de memoria Direccin lgica o virtual: la generada por la CPU El dispositivo que traduce direcciones virtuales a fsicas se llama unidad de manejo de memoria (MMU, en ingls) El espacio de direcciones lgicas y el espacio de direcciones fsicas no tienen por qu coincidir Ejemplo: registro base
10

Espacios de direcciones
Fichero fuente (principal.cc)
#include<stream.h> main() { int cont; ... cont++ ... }

Fichero ejecutable (principal)

Memoria lgica del proceso

Memoria fsica

cabecera cdigo datos inicializados

cdigo datos inicializados datos sin inicializar pila

MR Proceso

Espacio de direcciones simblicas

Espacio de direcciones lgicas/fsicas

11

Direcciones lgicas/direcciones fsicas


Direccin lgica o virtual

CPU

Memoria

Disco

CPU
dir. lgica 1234

MMU

80000 registro base

Controlador de memoria
Direccin fsica

Controlador de disco

MMU
dir. fsica 81234

memoria
12

Carga dinmica
!!

Proceso se ejecute
"!

Cdigo + Datos # Memoria fsica Tamao de un proceso limitado al tamao de la memoria fsica postergar la carga en memoria de un mdulo hasta que el programa llame a alguna rutina del mismo

!!

Consecuencia:
"!

!!

Carga dinmica
"!

13

Enlace dinmico
!!

!!

!!

!!

Similar a la carga dinmica, pero efectuando el enlace en tiempo de ejecucin: bibliotecas dinmicas (DLL) 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. Si varios procesos emplean la biblioteca dinmica, slo se mantiene una copia de ella en memoria. Ejemplos de enlace dinmico:
"! "!

UNIX: shared libraries (shlib) Windows: dynamic load libraries (dll)

14

Recubrimientos (overlays)
Muchos programas no necesitan todo el cdigo al mismo tiempo, sino que se ejecutan por fases (ej. un compilador) !! El programa se descompone en mdulos separados (recubrimientos), que se cargan en un rea de memoria al efecto !! Si se carga un recubrimiento, borra al que se encontraba ya cargado !! 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 fase 2 fase 3 (disponible para recubrimientos)

16

Intercambio (swapping)
!! !!

Objetivo: cuando un proceso queda bloqueado o en espera, la memoria que ocupa podra desasignrsele. 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 para usuarios

P2

17

Intercambio (swapping) (2)


!!

Problemas:
"! "!

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

!!

Mejoras:
"! "!

18

Intercambio (swapping) (3)


!!

Qu se necesita para llevarlo a cabo?


"! "! "!

"!

Proceso intercambiador (efecta la mayora de las funciones del PMP) Criterios para la eleccin de la vctima (poltica de swapping out) Criterios para elegir los procesos que entran (poltica de swapping in) Espacio en disco donde almacenar las imgenes de los procesos
!! !!

Area especfica para el intercambio (rea de swap) Ficheros de intercambio

"!

Criterios para la gestin del espacio de intercambio (poltica de gestin del rea de swap)

19

Intercambio (swapping) (4)


!!

Otras consideraciones:
"! "!

"!

Operaciones de E/S pendientes ? Un proceso intercambiado, regresa al mismo espacio de memoria que ocup previamente ? Versiones modificadas del intercambio estndar:
!! !!

Unix Microsoft Windows 3.1

20

Gestin de memoria contigua


!!

Caso trivial: una sola particin (sistema operativo+rea de usuario)


"!

como mucho, utilizar un registro base para proteger al S.O.


0 Registro base Memoria fsica

SO

Proceso

256K

21

Gestin de memoria contigua


!!

Evolucin: particiones mltiples


"! "!

particiones de tamao fijo (MFT) particiones de tamao variable (MVT) MVT


Memoria fsica Memoria fsica Memoria fsica

MFT
SO Particin 1 Particin 2 Particin 3 Particin 4 SO Particin 1 Particin 2 Particin 3 Particin 4 SO

22

Memoria contigua: estructuras de datos


!!

Mecanismos de gestin de la memoria contigua


"! "!

"!

Tabla de descripcin de particiones (TDP) El S.O. gestionar una lista de huecos libres en memoria y seleccionar qu procesos pueden cargarse en memoria para ejecutarse Primitivas internas de pedir y liberar memoria

23

Memoria contigua: cmo reservar espacio a un proceso


!!

POLTICAS DE UBICACIN
"!

El problema general se conoce como la gestin de memoria dinmica


!! !! !!

Primer hueco (first-fit) Mejor hueco (best-fit) Peor hueco (worst-fit)

"!

"!

las polticas de primer hueco y mejor hueco son similares en rendimiento; y mejores que la de peor hueco Otras polticas: siguiente ajuste, buddies

24

Memoria contigua: proteccin


!!

Pareja de registros base y lmite


5000
lmite

80000
base

CPU

dir. lgica 1234 no

<
excepcin

dir. fsica 81234

memoria

MMU

25

Memoria contigua: proteccin


!!

Registrar los derechos de acceso en la propia memoria


"!

A cada direccin se le aade un nmero de bits para identificar al propietario


!! !!

Problema: costoso Mejora: asociar estos bits a bloques de memoria fsica

"! "!

Comprobacin: tiempo de ejecucin SO # Clave maestra nica que le da acceso sin restricciones a todos los bloques de memoria

26

Compartir zonas de memoria


!!

Confiar los objetos compartidos al SO


"!

"!

Forma de acceder a estos objetos: llamadas al sistema Inconvenientes:


!! !!

SO grande y monoltico, lo que hace ms difcil su desarrollo, mantenimiento y verificacin 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)


!!

Mantener mltiples copias de los objetos compartidos


"!

"!

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

28

Comparticin
!!

!!

Utilizar particiones de memoria compartidas (comunes) Proteccin?


"!

Registros base/lmite: requerira conjuntos separados de pares de registros base/limite dedicados para acceder a los espacio de memoria privado y compartido
!!

Implica la existencia de algn mecanismo que indique en cada acceso que conjunto de registros emplear

29

Comparticin
!!

Claves de proteccin: requerira controlar los bloques compartidos para que en los conmutaciones de contexto se cambien las claves de proteccin
"!

Necesidad de llevar la cuenta de que bloques estn siendo compartidos y por quin

!!

MVT => Permite que particiones adyacentes en memoria fsica puedan solaparse
"!

Comparticin de datos y cdigo (dos procesos)

30

La fragmentacin de la memoria
!!

Es el gran problema de la memoria contigua


"! "!

Fragmentacin interna (MFT) Fragmentacin externa (MVT)

31

Fragmentacin: soluciones
!!

!! !!

Permitir que un proceso puede ubicarse en zonas de memoria no necesariamente contiguas Y si no se puede lo anterior # compactacin Es posible siempre?
"!

"!

Si la reubicacin es esttica y se efecta durante el ensamblado o la carga, no puede haber compactacin Esta slo es posible si la reubicacin es dinmica y se efecta en tiempo de ejecucin
!!

Slo requiere mover el programa y los datos y modificar el registro base para que refleje la nueva direccin base

32

Compactacin
!!

Estrategia a seguir
"!

Seleccionar una estrategia ptima de traslados


!!

Raras veces es implementado debido al gasto en que se incurre al evaluar las opciones

"!

Reubicar todas las particiones en un extremo de la memoria


!!

El recargo por copia es generalmente ms alto que el de un traslado ms selectivo Copiar en disco los procesos que tienen que cambiar de lugar

"!

Compactacin + intercambio
!!

33

Segmentacin
!!

!!

Un programa se puede descomponer en varios segmentos de memoria (cdigo, datos, pila...) Con el hardware adecuado, podemos ubicar esos segmentos en zonas de memoria no contiguas.
T.seg.

S1 S3 S2

34

Segmentacin (2)
!!

!!

!!

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

35

Hardware de segmentacin
Tabla de segmentos (S)

lmite

base

S
dir. lgica

D
s dir. fsica

<
no

Excepcin: direccin ilegal


36

Tabla de segmentos
!!

Registros
"!

Problema: muchos segmentos Registro base de la tabla de segmentos (RBTS) Registro de longitud de la tabla de segmentos (RLTS)

!!

Memoria
"! "!

37

Tabla de segmentos
!!

Proceso de traduccin: direccin lgica (s,d)


"! "!

"! "!

Se comprueba que s<RLTS Se calcula la direccin de la entrada de la tabla de segmentos (RBTS+s) y se lee dicha entrada Se coteja el desplazamiento con la longitud del segmento Se calcula la direccin fsica del byte deseado como la suma de la base del segmento y el desplazamiento

!!

!!

Proceso de traduccin: requiere dos referencias a memoria por cada direccin lgica Solucin: usar un conjunto de registros asociativos para guardar las entradas de la tabla de segmentos que se usaron mas recientemente

38

Segmentacin: ventajas
!! !! !!

!!

Atena el problema de la fragmentacin Permite definir protecciones selectivamente Permite comparticin de zonas de memoria de forma eficaz Todo ello sin aadir complejidad a los algoritmos de gestin de espacio

39

Segmentacin: inconvenientes
!!

!! !!

!!

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

40

Paginacin
!! !!

!!

!!

!!

Tcnica que soluciona la fragmentacin externa La idea: Trocear la memoria disponible en pginas de tamao fijo (ej. 4Kb). Un programa puede residir en varias pginas no contiguas Las pginas disponibles en memoria se llaman marcos de pgina (page frames). Toda direccin lgica se descompone en dos partes: nmero de pgina y desplazamiento. 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 4k 8k 12k 16k 20k 24k 28k 32k 36k 40k 44k 48k

m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11

Memoria fsica
0

Proceso 1 (10k)
Pg0 Pg1 Pg2

4k 8k

S0 SO P1-Pg1 P1-Pg2

Tabla de pginas Proceso 1

12k 16k 20k

Marco 10 3 6

10k/4k=2.5 ! 3 pginas

24k 28k 32k 36k 40k 44k 48k

P1-Pg0

Fragmentacin interna!!

48k/4k=12 marcos

43

Paginacin: gestin del espacio libre


!!

!!

La gestin del espacio libre consiste simplemente en saber qu marcos estn libres El SO posee una tabla de marcos de pginas (TMP)
"!

Implementacin?

44

Paginacin/Marcos Libres

45

Paginacin: traduccin de direcciones


Traduccin de direcciones: direcciones de 16 bits y tamao de pgina 4kbytes
16-12=4bits
Nmero de pgina Desplazamiento dentro de la pgina

4k=212

12 bits

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)

CPU

P
dir. lgica

F
dir. fsica

Memoria fsica

47

Estructura de la tabla de pginas


!! !! !!

Depende del SO Denominador comn


"!

Una tabla de pginas para cada proceso

cmo localiza el SO la tabla de pginas de un proceso?


"!

BCP
!! !!

Contador de instrucciones, registros, info. de E/S, etc... Y Puntero a la tabla de pginas

!!

Qu ocurre en un cambio de contexto?


"! "!

Despachador cargar los registros con los valores del nuevo proceso y 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


!!

Conjunto de registros dedicados


"!

Ejemplo: Computador DEC PDP-11


!!

la direccin consiste en 16 bits y el tamao de pgina es de 8k)


16 bits Direccin 3 bits 13 bits

!!

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


!!

Esquema de registros
"!

Problema: tablas de pginas grandes Mantener la tabla de pginas en memoria Registro base de la tabla de pginas (RBTP) que apunta a la TP
!!

!!

Solucin
"! "!

!!

Cambio de contexto: ms rpido (slo cambiar el valor de este registro) Gran inconveniente: tiempo de traduccin

50

Paginacin Traduccin de direcciones

51

Implementacin en hardware de la tabla de pginas


!!

Solucin: usar un TLB (translation lookahead


buffer)
"! "! "!

Pequeo cache especial en hardware Cada registro consta de dos partes: clave y valor Funcionamiento:
!!

Se presenta una clave y, si encuentra alguna coincidencia, devuelve el valor correspondiente

"!

Permite bsquedas rpidas pero el hardware es costoso

52

TLB: cmo funciona


!!

Funcionamiento: acceso posicin i


"! "!

"!

Obtiene el nmero de pgina donde se encuentra i Si est en TLB # Obtenemos el marco de pgina donde se encuentra sino, acceso a la tabla de pginas y actualizar TLB
!!

Si TLB llena # Sustitucin de una de las existentes

!!

OJO, cambio de contexto


"!

Desalojar (borrar) el TLB

53

TLB: esquema general

54

TLB: tasa de aciertos


!!

Tasa de aciertos
"!

"! "!

porcentaje de las veces que un nmero de pgina se encuentra en los registros asociativos relacionada con el nmero de registros asociativos 16-512 => pueden obtenerse tasas de aciertos entre 80 y 98%. Motorola 68030 => TLB de 22 entradas Intel 80486 => TLB de 32 entradas
!!

!!

Ejemplos
"! "!

Sus fabricantes dicen que tiene una tasa de aciertos del 98%

55

Tabla de pginas invertidas


!!

!!

Problema: tamao que puede llegar a ocupar la tabla de pginas Idea: usar una tabla de pginas invertida
"!

"!

"!

Tiene una entrada por cada marco real de la memoria Cada entrada consiste en la pgina virtual almacenada en dicho marco y el proceso al que pertenece 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


!!

Ventajas
"!

Reduce la cantidad de memoria necesaria Tiempo de bsqueda en la tabla de pginas invertida Soluciones:
!! !!

!!

Desventaja
"!

"!

Tabla de dispersin (hash) Registros asociativos (cach)

58

Paginacin: inconvenientes
!!

Pequeo inconveniente: fragmentacin interna


"!

Tamao de las pginas?


!!

Pequeo
"! "!

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

!!

Grande
"! "!

!!

Tendencia en los ltimos aos


"!

"!

59

Paginacin: proteccin

!!

!!

Las pginas pueden tener asignados bits de proteccin (ej. lectura, escritura, ejecucin) Bit de validez/no validez
"!

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


!!

Un proceso casi nunca utiliza todo su intervalo de direcciones


"!

En estos casos sera un desperdicio crear una tabla de pginas con entradas para todas las pginas del intervalo de direcciones

!!

Algunos sistemas: registro de longitud de la tabla de pginas (RLTP)


"!

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
!!

!!

Varios procesos podran tener la misma memoria fsica apuntada en sus respectivas tablas de pginas 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


!!

!!

Sistemas modernos => espacio de direcciones lgico muy grande (232 a 264) Problema: tamao de la tabla de pginas
"!

"!

Por ejemplo, si tamao de pgina es de 4k, un proceso podra requerir hasta 4 Mb de espacio fsico para la tabla de pginas 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


!!

!!

La paginacin y la segmentacin pueden combinarse (ej. MULTICS, 80386). Motivacin: aprovecharse de las ventajas que ofrecen los esquemas por separado
"!

"!

Segmentacin: flexibilidad y facilidad para la organizacin lgica Paginacin: mejorar el problema de la fragmentacin

68

Esquema combinado segmentado/ paginado: 80386

69

Vous aimerez peut-être aussi