Gestion de Memoria de una computadora

61
1 Memoria Virtual Prof. Giovana Garrido Respecto a la Memoria Principal TAREAS DEL S.O. •Seguimiento de espacio y direcciones de memoria utilizadas y por quién. •Decidir qué procesos se cargarán en la memoria. •Asignar y liberar espacio de memoria. GENERALIDADES: Memoria Ram: matriz grande de palabras o bytes. Cada palabra tiene su propia dirección. Permite acceso rápido, compartido por la CPU y los periféricos. Único dispositivo de almacenamiento que la CPU puede direccionar y acceder directamente. El programa debe cargarse en Mem. Ram para poder ejecutarse. Almacenamiento volátil.

description

dentro de este documento ud podrá observar como se maneja una memoria dentro de una computadora.

Transcript of Gestion de Memoria de una computadora

1

Memoria Virtual

Prof. Giovana Garrido

Respecto a la Memoria Principal

•TAREAS DEL S.O.

•Seguimiento de espacio y

direcciones de memoria

utilizadas y por quién.

•Decidir qué procesos se

cargarán en la memoria.

•Asignar y liberar espacio de

memoria.

GENERALIDADES:

Memoria Ram: matriz grande de palabras o bytes.

Cada palabra tiene su propia dirección.

Permite acceso rápido, compartido por la CPU y los

periféricos.

Único dispositivo de almacenamiento que la CPU puede

direccionar y acceder directamente.

El programa debe cargarse en Mem. Ram para poder

ejecutarse.

Almacenamiento volátil.

2

Memoria virtual

Es un método mediante el cual, un sistema operativo simula tener mas memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la maquina.

Métodos:

Técnicas de “paginación”.

Técnicas de “segmentación”.

Una combinación de ambas técnicas.

Se utiliza la paginación como método de administración de memoria básica y algún mecanismo de intercambio.

Memoria virtual

En las tablas de paginas se agrega un campo mas a cada entrada: el bit valido/invalido (p).

En los procesadores 80386 y posteriores, que indica si la página a la que se está haciendo referencia en un momento dado se encuentra en la memoria principal (válido) o en el disco duro (inválido). Cuando el sistema operativo haga referencia a una página inválida, deberá ir al disco duro y cargarla a memoria principal para continuar el procesamiento.

3

Fundamentos

El código y los datos de los procesos en ejecución han de estar en memoria principal Limitando el tamaño de los programas

Empleo de mecanismos de carga dinámica

Es imprescindible?... Un proceso no utiliza todo su código/datos (al mismo tiempo)

Podemos tener en memoria únicamente aquello que sea imprescindible

El resto puede permanecer en el área de intercambio

Los programas pueden no estar completamente en memoria

La memoria virtual supone una separación entre memoria lógica y física El proceso ve un espacio de direcciones virtual

Este espacio es tan grande como desee

Esquema de la memoria virtual

4

Espacio de direcciones virtual

Soporte hardware

Como sabemos si una pagina esta en memoria o en disco?

Empleamos el bit de validez de las paginas

Valido => pagina residente en memoria

Invalido...

Pagina invalida

Pagina en disco

En ambos casos => interrupción hardware de fallo de

pagina

5

Tratamiento de fallo de pagina

1. Comprobamos la dirección de la pagina en el PCB

Valida => continuamos

Invalida =ZSIGSEGV

2. Buscamos un marco libre en memoria para alojar la

pagina

3. Cargamos la pagina desde el disco al marco

seleccionado

4. Marcamos la pagina como valida en la tabla de paginas

5. Reiniciamos la instrucción interrumpida

Espacio de direcciones virtual

6

Copia durante escritura: ejemplo

Ciclo de vida de página compartida y en

fichero

7

Ciclo de vida de página privada y en fichero

Ciclo de vida de página anónima

8

Paginación

Consiste en considerar el espacio de direcciones lógicas de

cada proceso como un conjunto de bloques de tamaño

consistente llamados paginas. Cada dirección lógica manejada

para un proceso estará conformada por un par de valores

[pagina: desplazamiento].

Implementación de mecanismos de

paginación

La tabla de paginas se implementa completamente en hardware (ventaja: se obtiene una alta velocidad de acceso a memoria. Desventaja: resulta problemática cuando la tabla de páginas debe ser grande).

Implementar la tabla de páginas en la memoria principal (ventaja: la tabla de paginas puede crecer según se requiera. Desventaja: la velocidad de acceder a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.

9

Paginación

La memoria física se divide en marcos de igual tamaño

El SO mantiene una tabla de marcos

La memoria de los procesos se divide en paginas del mismo

tamaño que los marcos

El SO carga las paginas en marcos no necesariamente contiguos

Emplea la tabla de marcos para identificar marcos libres

Fragmentación externa... no hay

Fragmentación interna...

Promedio de media pagina desperdiciada

Si reducimos el tamaño de pagina, reducimos la fragmentación...

Pero necesitamos mas espacio para la meta información de paginas!

Paginación

Las direcciones lógicas se dividen en

Numero de pagina (p)

Desplazamiento de pagina (d)

Los números de pagina (p) representan índices en una

tabla de paginas

Sus entradas contienen la dirección física de la pagina

El hardware traduce la dirección lógica en física consultándola

10

Paginación

dir. lógica: nº página + desplazamiento

Tabla de páginas (TP):

◘ Relaciona cada página con el marco que la contiene

Número de página Desplazamiento

0 1 ................ 15 16 17 .............................................................................. 63

0

...

N

...

Número de página ...

...

Número Marco Página

...

Direccionamiento

Tamaño de página potencia de 2

Direccionamiento más sencillo

Fácil Traducción

Dirección lógica y relativa (respecto al inicio ) coinciden

11

Traducción hardware

Modelo de traducción

12

Ejemplo

Tabla de paginas

Se almacena en la memoria principal

Su ubicación se determina por el registro base de la tabla

de paginas (PTBR)

En los cambios de contexto...

Se cambia el valor de PTBR para que emplee la tabla de paginas

del proceso en ejecución

As cambiamos rápidamente el espacio de direcciones de un

proceso a otro

13

Tabla de páginas (TLB)

Problema: la tabla de paginas esta en memoria...

Dos accesos a memoria por cada operación sobre la misma

Solution: Translation Look-aside Buer (TLB)

Memoria asociativa de consulta de traducción

Almacena el resultado de las ultimas traducciones

Si acierta (se encuentra la pagina) se obtiene el marco físico

Si falla (no se encuentra la pagina) se recurre a la tabla de

paginas

TLB: esquema

14

TLB: cambios de contexto

Si se produce un cambio de contexto...

Las entradas de la TLB contienen traducciones de otros

procesos

Si las usaremos sin mas, tendremos traducciones validas pero

incorrectas

Soluciones

Borrar la TLB en cada cambio de contexto

TLB con identificadores de espacio de direcciones (ASID)

Protección de memoria

Las entradas de la tabla de paginas incluyen bits de

protección

“Lectura y escritura" o “solo lectura": indica si se puede

escribir en la pagina

Ejecución: indica si se puede ejecutar el código de la

pagina

“Valido o invalido": indica si la pagina se encuentra o no

en el espacio de direcciones del proceso

15

Validez de paginas

Límite de tabla de paginas

Problema

Los procesos rara vez emplean todo el rango de direcciones

disponible

No es útil crear tablas de pagina con todas las traducciones

posibles (validas e invalidas)

Solución

Tener un registro de longitud de tabla de paginas (PTLR)

Indica el tamaño de la tabla de paginas

Las paginas que no estén en la tabla, se consideran invalidas

16

Estructura de la tabla de paginas

Las tablas de paginas pueden ser realmente grandes

Ej: direcciones de 32 bits, paginas de 4KB, 4 bytes por

entrada

232=212 = 1048576 marcos

1048576 marcos 4 bytes = 4MB

Hay que dividir la tabla de paginas

Paginación jerárquica

Paginamos la tabla de paginas obteniendo dos niveles

p1 indexa la tabla de paginas externa; el valor resultante indica la pagina donde se encuentra la parte de la tabla de paginas interna que buscamos

p2 es un desplazamiento en la pagina indicada por la tabla de paginas externa; su valor es un índice relativo a esa región de la tabla de paginas interna que indica el marco de pagina final

d indica el desplazamiento respecto al marco de pagina final

17

Paginación jerárquica: esquema

Paginación jerárquica: traducción

18

Tablas de paginas invertidas

Alternativa a la paginación multinivel

Una única tabla de paginas

Una entrada por cada marco de pagina

El índice indica la dirección del marco

Cada entrada almacena...

ASID

Numero de pagina

Desplazamiento

La traducción se realiza mediante búsqueda

Problema

Rendimiento

Memoria compartida...

Tablas de paginas invertidas: traducción

19

Segmentación Un método de asignación de memoria es la manera mediante la cual

el Sistema Operativo lleva el control de la memoria tratando de que sea lo más eficiente posible. Los métodos de asignación más comunes son:

Segmentación: Este método consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos. El tamaño de cada segmento será el requerido según la petición, por ejemplo el tamaño del proceso a cargar.

Visión multidimensional de la memoria

La memoria se divide en segmentos de tamaño variable

Cada uno tiene una secuencia lineal de direcciones

Direcciones lógicas en forma de tuplas

<num segmento, desplazamiento>

Métodos de asignación de memoria

El tamaño máximo para un segmento estará determinado por la capacidad de direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone para almacenar una dirección.

El acceso a cada elemento individual en la memoria se hace mediante una dirección de memoria que se integra por dos elementos: una dirección de segmento y una de desplazamiento.

20

Segmentación

La combinación (suma) de la dirección de segmento y la de desplazamiento generan la dirección de memoria absoluta a acceder.

Dado que en cada proceso se manejan direcciones lógicas, el sistema operativo debe obtener una dirección lógica. El sistema operativo debe también asegurarse de que cada dirección lógica esté dentro del rango de direcciones empleado por el proceso.

Direccionamiento

La memoria real es unidimensional

Necesitamos traducir las tuplas lógicas a direcciones

físicas

Usamos una tabla de segmentos

Una entrada por cada segmento

El índice indica el numero de segmento

Cada entrada contiene

Dirección base del segmento

Tamaño del segmento

Bits de protección

21

Segmentación: traducción

Segmentacion: ejemplo

22

Paginación: Esquema de traducción

CPU

Tabla de páginas

dirección

lógica

dirección

física

Memoria

0

p d f d

Página

(virtual)

desplazamiento

Página

(física)

-marco-

p

f

Paginación: Fragmentación interna

memoria asignada > memoria requerida

◘Puede desperdiciarse parte de un marco asignado.

◘Espacio desperdiciado medio (por región de proceso) es de ½ página.

T. Páginas Pr. 1

Página 0

Página 1

Página M

Marco 2

Marco 3

Marco N

..............

T. Páginas Pr. 2

Página 0

Página 1

Página P

Marco 4

Marco 1

Marco 0

..............

Marco 0

Memoria

Marco 1

Marco 2

Marco 3

Marco 4

Marco N

Pág. 1 Pr. 2

............

Pág. 0 Pr. 1

Pág. 1 Pr. 1

Pág. M Pr. 1

Pág. 0 Pr. 2

Pág. P Pr. 2

23

Ejemplo de compartición

datos 27

6

5

ed 24

ed 13

2

datos 11

0

3

4

6

1

tabla de páginas

para P

proceso 1

datos 1

ed 2

ed 3

ed 1

3

4

6

2

tabla de páginas

para P

proceso 3

datos 3

ed 2

ed 3

ed 1

3

4

6

7

tabla de páginas

para P2

proceso 2

datos 2

ed 2

ed 3

ed 1

8

9

10

datos 3

ed 3

3

1

Paginación: Tamaño de página

Condicionado por diversos factores contrapuestos:

◘ Potencia de 2 y múltiplo del tamaño del bloque de disco

◘ Mejor pequeño por:

◘ Menor fragmentación

◘ Se ajusta mejor al conjunto de trabajo

◘ Mejor grande por:

◘ Tablas más pequeñas

◘ Mejor rendimiento del dispositivo de E/S

◘ Compromiso (entre 2K y 16K)

◘ Restricciones hardware (MMU).

24

El tamaño de página viene definido por el hardware y suele ser una potencia

de 2 que varía entre 512 y 16M Ej simplificado: Direccionamiento de un

espacio virtual de 64K, distribuido en 16 páginas de 4K:

010001110000100011000000000101000111000000000000

1111110001010000

0123456789

101112131415

página

virtual

página

física

Desplazamiento

(12 bits)

0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0

0 0 0 0 0 0 0 0 0 1 0 01 1 0

bit presente/ausente

Ejemplo de Paginación

Direcciones virtuales de 16

bits

Espacio de direcciones virtual

de 64KB

32KB de memoria física

Páginas de 4KB

16 páginas virtuales

8 marcos de página

25

Implantación de mecanismos de

memoria virtual• Existen 2 métodos para cargar programas en memoria:

• Demanda de página: consiste en iniciar la ejecución de

los procesos sin páginas cargadas, estas se irán cargando

conforme el proceso las demande.

• Prepaginación: consiste en que el sistema operativo

predice cuales páginas se ocuparán durante la ejecución

de un proceso.

Paginación bajo demanda

Cargamos las paginas en memoria cuando sean necesarias

Empleamos un intercambiador (paginador) perezoso

Ya no intercambiamos la memoria completa de los procesos

En su lugar, intercambiamos solo paginas

Reducimos...

Uso de memoria

Uso de E/S

Tiempo de intercambio

26

Paginación por demanda

Segmentación pura no adecuada para memoria virtual

◘ tamaño de segmentos variable

Paginación y segmentación paginada sí lo son:◘ Bloque transferido –› Página

◘ M. virtual + Paginación –› Paginación por demanda

Estrategia de implementación: Uso del bit de validez

◘ Página no residente se marca como no válida

◘ En acceso: Excepción de fallo de página S.O. trae la página correspondiente de mem. secundaria

S.O. debe diferenciar entre pág. no residente y pág. inválida

Prepaginación: Traer páginas por anticipado (no por demanda)◘ En fallo de página se traen además otras páginas que se considera que

necesitará el proceso

◘ Beneficiosa dependiendo de si hay acierto en la predicción

Rendimiento en paginación bajo demanda

El rendimiento del sistema se ve fuertemente influenciado

por

Algoritmo de sustitución de paginas => Como

seleccionamos las paginas a sustituir?

Algoritmo de asignación de marcos => Como repartimos

los marcos libres?

27

Fallo de página

Problema: espacio de direcciones virtual más grande que la memoria física

Bit presente/ausente ) controlar qué páginas están presentes en memoria

¿Qué sucede si no hay asociación página/marco? ) =>

Fallo de página

1. La MMU detecta que la página no tiene correspondencia

2. La MMU provoca un fallo de página (interrupción)

3. S.O. escoge un marco que no se esté usando mucho (si es

necesario vuelve a escribir su contenido en disco)

4. Trae la nueva página a ese marco

5. Modifica la tabla de páginas

6. Reinicia la instrucción

Fallo de página

28

Tratamiento del fallo de página

Tratamiento de excepción (dirección de fallo disponible en reg.)◘ Si dirección inválida –› Aborta proceso o le manda señal

◘ Si no hay ningún marco libre (consulta T. marcos)

Selección de víctima (Alg. de reemplazo): pág P marco M

Marca P como inválida

Si P modificada (bit Mod de P activo)

Inicia escritura P en mem. secundaria

◘ Hay marco libre (se ha liberado o lo había previamente):

Inicia lectura de página en marco M

Marca entrada de página válida referenciando a M

Pone M como ocupado en T. marcos (si no lo estaba)

Fallo de página puede implicar dos operaciones en disco

Estructuras Hardware

Dado que ante un fallo de página el Hardware simplemente produce un

error (trap), bastará simplemente con añadir dos bits en la tabla de

páginas.

El bit p que indica si la página referenciada está o no cargada en

memoria principal (0 no cargada, 1 si).

El bit m que indica si la página cargada ha sido o no modificada, y por

tanto debe salvarse en caso de ser seleccionada para reemplazo ante un

fallo de página (0 no modificada, 1 si).

De esta forma la entrada en la Tabla de Páginas queda:

P M Marco (F)C

29

Estructuras Hardware

Dir Lógica

S P D

STPtr

+ C B L <

No

Segmentation

Error

Si

+ C P M F

P?

No

Trap (SO debe

reemplazar)

+

Dir. Física

Tablas de Páginas

Son tablas que contienen (para cada proceso) el número de marco que

corresponde a cada página virtual del proceso.

Establece la correspondencia entre direcciones virtuales y físicas (entre las

páginas virtuales y los marcos de página):

Para un funcionamiento óptimo el tamaño de la página y el marco debe ser potencia

de 2

La dirección virtual se divide en número de página virtual y desplazamiento

El número de página virtual se usa como índice para consultar la tabla de páginas

La entrada correspondiente de la tabla de páginas indica el número de marco de

página (si está en memoria)

El número de marco de página se anexa al desplazamiento para formar una dirección

física

30

Tablas de Páginas

4 bits de página y 12 bits de ajuste

Tablas de Páginas

- Estructura de una entrada de la Tabla de Procesos

Número de marco

bit presente (1) ausente (0)

protección (permisos) del marco (RWX)

bit Modificado (1) o no (0) -lo usa el intercambiador

para saber si debe copiar el marco a disco o no-

bit Referenciado (1) o no (0) -lo usa el manejador para

decidir qué entrada de la Tabla liberar- Se actualiza

periódicamente

Caching Desactivado/Activado (lo veremos en E/S)

No usado

31

Paginación con TLBs (HW)

Marco 1

Marco 2

Marco 3

Marco 4

Marco 5

Marco 6

Marco 7

Marco 8

P

Memoria

Tabla de páginas

Marco 5

D

RPBTP

RLTP

M D

TLB

A

X

V

C

P

T

S

R

3

24

89

19

5

18

5

10

Procesador P D

Paginación de la TDP

P D

Tabla 1

Tabla 2

Tabla 3

Tabla 4

Tabla 5

Tabla 6

Tabla 7

Tabla 8

Dir

Memoria

Directorio de páginas

D

RPBTP

RLTP

M D

Dir

Tabla de páginas

Dirección virtual

Marco 1

Marco 2

Marco 3

Marco 4

Marco 5

Marco 6

Marco 7

Marco 8

P

32

Búsqueda directa y asociativa en entradas en la tabla de páginas

Traducción de direcciones lógicas a físicas mediante tabla de páginas

Fundamento de la memoria virtual

M. virtual: SO gestiona niveles de m. principal y m. secundaria

Sube por demanda; Baja por expulsión

Aplicable por proximidad de referencias

Procesos sólo usan parte de su mapa en intervalo de tiempo

Parte usada (cjto de trabajo) en m. principal (cjto residente)

Beneficios:

Aumenta el grado de multiprogramación

Permite ejecución de programas que no quepan en mem. Ppal

No adecuada para sistemas de tiempo real

Basada en paginación: Uso del bit de validez

Página no residente se marca como no válida

En acceso: Excepción de fallo de página

33

Políticas de administración

Localización

Extracción

Ubicación:

Cualquiera, aunque puede usarse coloración de páginas

Reemplazo

Actualización

Escritura diferida

Reparto de espacio

Política de localización: posibles ubicaciones

34

Política de extracción: Fallo de página

Si dirección inválida →Aborta proceso o le manda señal

Si no hay ningún marco libre (consulta T. marcos)

Reemplazo: pág P marco M → P inválida

Si mod → escribir fichero o swap

Hay marco libre (se ha liberado o lo había previamente):

Inicia lectura de página en marco M

Conecta entrada de TP a M

Fallo de página en modo sistema no siempre es error:

Acceso a página de usuario no residente

Prepaginación: trae páginas por anticipado (no por

demanda)

Creación de tablas de páginas por demanda

35

Algoritmos de descarga (Reemplazo)

Se utiliza para determinar cuales páginas serán descargadas hacia el disco duro cuando se quiera cargar nuevas paginas y no haya memoria libre. Existen 3 algoritmos básicos: FIFO, LRU y Optimo.

Tipo de reemplazo: local o global

También en caché de sistemas de ficheros

Objetivo: Minimizar la tasa de fallos de página.

Poca sobrecarga y MMU estándar

Reemplazo de paginas

Ante un fallo de pagina

Podemos encontrarnos sin marcos libres

Debemos sustituir alguna pagina

1. Seleccionamos una pagina a descargar y la movemos a

disco

2. Marcamos dicha pagina como invalida en las tablas de

pagina

3. Cargamos la pagina fallida en el marco liberado

4. Marcamos la pagina fallida como valida en las tablas de

paginas

5. Reiniciamos el proceso de usuario

36

Reemplazo de paginas: procedimiento

Algoritmos de Reemplazo FIFO

FIFO: Consiste en tener un contador de tiempo para cada

pagina para descargar las mas viejas.

Mantenemos el orden de carga de las paginas

Seleccionamos la pagina mas antigua para sustituir

Sencillo de implementar, pero el rendimiento...

La pagina mas antigua podrá ser la mas frecuentemente

referenciada

Anómala de Belady => La tasa de fallos puede incrementarse

según aumenta la cantidad de memoria

37

Algoritmos de Reemplazo optima de paginas

Algoritmo Optimo (MIN): Consiste en descargar la o las páginas

que no se necesitarán en el periodo de tiempo más largo en el

futuro. Esta implementación es imposible.

Se sustituye la pagina que tarde mas en volver a ser utilizada

Garantiza la tasa de fallos mas baja posible

No esta sujeto a la anómala de Belady

Problemas...

Es imposible saber cuanto tardara una pagina en ser referenciada

Se emplea como referencia para medir la calidad de los algoritmos

Reemplazo de paginas: optimización

La sustitución implica dos transferencias de paginas

Una transferencia de descarga

Una transferencia de carga

Podemos evitarlo?

Si la pagina no ha sufrido modificación y aun esta en disco?

Nuevo bit de control en la tabla de paginas: pagina modificada

(o sucia)

Pagina de solo lectura

Podemos obviar la descarga

38

Algoritmos de Reemplazo de paginas LRU

LRU (Least Recently Used): Consiste en descargar las

últimas páginas usadas (se usa el pasado para predecir el

futuro). Lo utiliza Windows.

Se sustituye la pagina menos utilizada

Se trata de una estimación de la sustitución optima

No esta sujeta a la anómala de Belady (algoritmo de pila)

Problemas...

Como mantener un orden LRU?

Hiperpaginación (Thrashing)

Tasa excesiva de fallos de página de proceso o de sistema

Con asignación fija: Hiperpaginación en proceso

Con asignación variable: Hiperpaginación en el sistema

39

Sobrepaginacion (thrashing)

Si un paginador global reduce mucho el numero de marcos de un

proceso...

Se alcanza el numero mnimo de marcos; proceso suspendido

Se queda con pocos marcos

Empieza a generar fallos de pagina = roba marcos

El resto de procesos pierden paginas = roban marcos

La CPU comienza a estar desocupada = aumenta el nivel de

multiprogramación

Los nuevos procesos requieren marcos = roban marcos

Resultado

Se invierte mas tiempo en paginar que en procesamiento

Degradacion total del sistema

Solución para acelerar el acceso a los marcos cuando las tablas

de procesos son muy grandes (búsqueda lenta) y/o están

organizadas en niveles (requiere múltiples accesos a memoria)

Se basa en la observación de que los procesos acceden

normalmente a un número pequeño de páginas (y

esporádicamente al resto)

Solución: dotar a los ordenadores con hardware (Memoria

Asociativa) para asociar algunas páginas de uso frecuente con

páginas físicas sin necesidad de acceder a la tabla de páginas. El

tamaño de la memoria asociativa suele ser de 8 a 32 entradas.

Proporción de encuentros: Proporción de accesos a la

Memoria Asociativa que son exitosos (la Página Virtual buscada

se encuentra en la Memoria)

MEMORIA ASOCIATIVA/TLB (translation lookaside buffer)

40

MEMORIA ASOCIATIVA/TLB (translation

lookaside buffer)

Dispositivo hardware que traduce direcciones virtuales a

físicas sin acceder a la tabla de páginas.

Está en el interior de la MMU

Consiste en un número pequeño de entradas (casi nunca más

de 64)

Cada entrada contiene información sobre una página:

No de página

Bit de modificado

Bit de protección

No de marco de página

Bit de validez

Memoria asociativa/TLB

Funcionamiento:

Dirección virtual ) se comprueba, en paralelo, si su

número de página está presente en el TLB

Si está:

Si no viola los bits de protección ) el número de marco se toma del

TLB

Si viola los bits de protección ) Fallo de protección

Si no está ) Fallo del TLB

La MMU consulta la tabla de páginas

Desaloja una entrada del TLB

La sustituye por la nueva entrada

¿Qué pasa con el TLB en los cambio de contexto?

41

CPU

Tabla de páginas

dirección

lógica

dirección

física

Memoria

0

p d f d

Memoria Asociativa

fallo

encontrada

p

¿Válido?

(0,1)

1 #página

¿Modificado?

(0,1)

protección #marco0

Acciones del Manejador de Memoria:

PVpresente

Válido?

accede marco

no

Trampa al SOpor errorde acceso

no Fallo de página

Busca en tabla

de Páginas

PVpresente

nopermiso

Lee marco

no

Fallo de página

Trampa al SOpor errorde acceso

Intercambio

desde disco

Extrae entradaantigua

Introduce la nuevaPV en la memoria

asociativa

Permiso?

no

(sigue arriba)

(viene de abajo)

42

Tablas de páginas multinivel

Fundamento

Tablas de páginas muy grandes con muchas entradas nulas

Fragmentar tabla y acceder mediante tabla maestra

Tablas de páginas organizadas en M niveles:

Entrada de TP de nivel K apunta a TP de nivel K+1

Entrada de último nivel apunta a marco de página

Dirección lógica especifica la entrada a usar en cada nivel:

1 campo por nivel + desplazamiento

Si todas las entradas de una TP son inválidas

No se almacena esa TP e inválida entrada de TP superior

Esquema de traducción con 2 niveles

43

Ventajas de Tablas de páginas multinivel

Si proceso usa una parte pequeña de su espacio lógico

Ahorro en espacio para almacenar TPs

Ejemplo: Proceso que usa 12MB superiores y 4MB

inferiores

2 niveles, pág. 4K, dir. lógica 32 bits (10 bits/nivel), 4B/entrada

Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)

Ventajas adicionales:

Permite compartir TPs intermedias

Sólo se requiere que esté en memoria la TP de nivel superior

Facilita implementación de superpáginas

Entrada de primer nivel de superpágina apunta a m. física

Ventajas de Tablas de páginas multinivel

44

Tablas de páginas invertidas

En una arquitectura de 64 bits, las tablas de páginas

pueden ser enormes:

Con páginas de 4 KB ) => ¡¡ tablas de 2^52 entradas !!

Si páginas muy grandes ) => demasiada fragmentación interna

Si cada entrada 8 bytes (64 bits) ) => ¡¡ 32 Petabytes para la

tabla de páginas !!

Tablas de páginas multinivel demasiado complejas por la gran

cantidad de niveles necesarios

Solución: tabla de páginas invertida

Tablas de páginas invertidas

Características:

Una entrada por cada marco de página de la memoria física

Con direcciones virtuales de 64 bits, 4KB/página y 512 MB de RAM,

sólo se necesitan 131.072 entradas

Cada entrada indica qué proceso y qué página virtual de dicho

proceso están en el marco correspondiente

Problema: la traducción de direcciones virtuales a físicas es

mucho más difícil:

Cada vez que un proceso “n” referencia a su página “p”, hay que

buscar una entrada “(n, p)” en toda la tabla invertida para averiguar el

marco

Solución: TLB + tabla de dispersión

45

Tablas de páginas invertidas

Tamaño de páginas:

◘ Si son pequeñas se evita la fragmentación interna, pero

el tamaño de la tabla crece, y con él

los tiempos de búsqueda al tener que buscar en tablas más

grandes y por no optimizar la copia de páginas a/desde disco

y las necesidades de almacenamiento (cada proceso tiene una

tabla de proceso propia).

Ej: direccionamiento con 32 bits (memoria lógica de

232=4Gb),tamaño de página: 4Kb (212)1 millón (232 /212) de

páginas. Tamañó de la tabla: 4(bytes) x 220 = 4Mb

En la actualidad se usan tamaños de página de 2-4 Kb

El tiempo de asociación debe ser reducido.

Soluciones basadas completamente en hardware (utilizando registros)

son las más rápidas, pero esto sólo es válido

si las tablas son pequeñas

Aspectos de diseño para los sistemas de

paginación

46

Aspectos de diseño para los sistemas de

paginación

Gestión del conjunto de trabajo

Paginación por demanda: las páginas sólo se cargan cuando se necesitan, y no por adelantado (paginación pura)

Localidad de referencia: en cualquier fase de su ejecución, un proceso sólo referencia a una fracción relativamente pequeña de sus páginas

Proceso hiperpaginado: proceso que pasa más tiempo resolviendo fallos de página que ejecutando instrucciones

Conjunto de trabajo: conjunto de páginas que un proceso ha usado en las últimas N instrucciones o unidades de tiempo

Prepaginación o paginación anticipada: la carga de páginas antes de ser solicitadas

Aspectos de diseño para los sistemas de

paginación

Gestión del conjunto de trabajo, continuación: Modelo de conjunto de trabajo ) establece que el

conjunto de trabajo de un proceso debe estar en memoria antes de ejecutarlo: prepaginación

Algoritmo de reemplazo de páginas del conjunto de trabajo:

Para cada página hay (al menos) dos elementos de

información: el tiempo aproximado del último acceso y el bit R

Cada tic de reloj se limpia el bit R

En un fallo de página, para cada página:

Si R=1, se actualiza el tiempo del último acceso

Si R=0 y edad > τ => reemplazar (pero continúa el recorrido)

Si R=0 y edad < τ => recordar el tiempo más pequeño y seguir

Si no éxito: la más antigua con R=0; sino cualquiera con R=1

47

Aspectos de diseño para los sistemas de

paginación Políticas de asignación local y global

¿Cómo repartir la memoria entre los procesos ejecutables ?

Local: se asigna un número de marcos fijo a cada

proceso

Global: se asignan, dinámicamente, los marcos de

página entre los distintos procesos ejecutables

Aspectos de diseño para los sistemas de

paginación

Políticas de asignación local y global

Los algoritmos locales son más propensos a la hiperpaginación y pueden desperdiciar memoria

Los algoritmos globales funcionar mejor. Ahora bien ¿cómo se decide cuántos marcos se asignan a cada proceso?

Algoritmo de frecuencia de fallos de página ) cuándo hay que reducir o aumentar el no de marcos asignados a un proceso

Calcula la tasa de fallos de página de cada proceso

Trata de mantener la tasa de fallos de página dentro de unos límites razonables

Observación: no dice nada sobre qué paginas sustituir

Otros aspectos:

Decidir el número mínimo de marcos a asignar a un proceso

Cómo realizar el reparto de marcos entre los procesos

48

Aspectos de diseño para los sistemas de

paginación

Tamaño de página

Páginas pequeñas

Menos fragmentación interna

Tablas de páginas más grandes

Páginas grandes

Más fragmentación interna

Tablas de páginas más pequeñas

Factor a tener en cuenta: velocidad de lectura/escritura de disco

Tamaños típicos: 4KB u 8KB

Aspectos de diseño para los sistemas de

paginación

Compartición de páginas

Compartir código (ej.: varios usuarios ejecutan el mismo

programa):

Llevar control de páginas compartidas para saber qué hacer si un

proceso termina o una página se reemplaza

Compartir datos:

Como mecanismo de comunicación entre procesos

Cuando sólo se leen. Se pueden modificar también, pero entonces =>

mecanismo de copia en escritura (ej.: creación de procesos con fork en

UNIX):

Páginas de datos se comparten en modo ”sólo lectura”

Si escritura => fallo de protección => S.O. hace copia de la página de

datos para el que escribe, activa permiso de copia y reinicia la instrucción

49

Aspectos de diseño para los sistemas de

paginación

Políticas de lectura y escritura de páginas

Lectura (ya visto)

Por demanda: cuando se produce un fallo de página (paginación por

demanda)

Por adelantado: en un fallo de página se leen varias páginas, incluida la

que produjo el fallo (prepaginación o paginación anticipada)

Escritura

Por demanda: cuando se expulsa una página que está modificada

Por anticipado: por ejemplo, cada X segundos (demonio de

paginación)

Si, además, se liberan páginas => Caché de páginas

Aspectos de diseño para los sistemas de

paginación

Control de carga

A veces no es posible evitar la hiperpaginación (todos los procesos piden más memoria y no se puede asignar a uno sin perjudicar a otro)

Solución: intercambio ) suspender procesos y liberar sus páginas, pero sin dejar la CPU inactiva ) Hay que controlar el grado de multiprogramación

Anclaje de marcos de memoria

Cuando intervienen en una operación de E/S por DMA que no ha finalizado

A tener en cuenta, sobre todo, en algoritmos globales

Administración del espacio de intercambio

Asignación estática por proceso, cuando éste se inicia

Asignación dinámica (los procesos pueden crecer)

50

Política de reparto de espacio

Estrategia de asignación fija (reemplazo local)

Nª marcos asignados a proceso (cjto residente) es constante

No se adapta a las distintas fases del programa

Comportamiento relativamente predecible

Arquitectura impone nº mínimo

Estrategia de asignación dinámica

Nº marcos varía según evolución de proceso(s)

Asignación dinámica + reemplazo local

comportamiento relativamente predecible

Asignación dinámica + reemplazo global

comportamiento difícilmente predecible

Políticas de control de carga

Estrategia del conjunto de trabajo

Páginas usadas por proceso en últimas N referencias

Si conjunto de trabajo decrece se liberan marcos

Si conjunto de trabajo crece se asignan nuevos marcos

si no hay disponibles: suspender proceso(s)

Requiere MMU específica

Estrategia basada en frecuencia de fallos de página (PFF)

Control de carga y reemplazo global

No control de hiperpaginación

Algoritmo de control de carga empírico

Si nº marcos frecuentemente debajo de umbral

51

Estrategia basada en frecuencia de fallos

Si tasa < inferior se liberan marcos aplicando reemplazo

Si tasa > límite superior se asignan nuevos marcos

Si no marcos libres se suspende algún proceso

Memoria virtual con segmentación

Segmentación

Proporciona a un proceso varios espacios de direcciones

completamente independientes => Segmentos

Cada segmento:

Una sucesión lineal de direcciones, desde 0 hasta un máximo

Tiene una longitud distinta y variable

Puede crecer o disminuir independientemente

Puede tener una protección diferente (lectura, ejecución,. . . )

Direcciones de dos dimensiones => Tabla de segmentos

Número del segmento

Dirección del segmento

52

Segmentación: Esquema de traducción

memoria

tabla de segmentos

límite base

s d

dirección lógica

Excepción

> +SI

NO

1. La MMU toma la parte

asociada al número de

segmento y lo busca

en la TS.

2. Se verifica si el

desplazamiento está

dentro de los límites

3. Indexa el byte dentro

de la memoria física.

Sumando el

desplazamiento base.

1

2

3

Facilita la protección y la compartición de objetos =>

procedimientos, funciones, estructuras de datos, etc.) de forma

individual

Problema: Fragmentación externa

segmentación

53

Direccionamiento

◘ Dirección lógica = Nº Segmento + desplazamiento

Traducción de direcciones

◘ Se realiza dinámicamente en cada referencia a memoria

◘ Necesita un hardware especial que realiza la traducción

Nº segmento dirección lógica índice tabla segmentos

Dirección física = Dirección base de la entrada + desplazamiento de la

dirección lógica

Facilita la compartición

Se comparten unidades lógicas, segmentos, permitiendo compartir datos,programas, subrutinas, etc.

El uso compartido es uno de los argumentos más importantes en favor de la segmentación

¿Cómo pueden dos o más procesos compartir un segmento?

Facilita la protección

Se puede asociar a cada segmento uno o varios bits de protección ( basadaen los registros base y límite)

Se pueden establecer distintos derechos de acceso (rwx) a cada módulo del proceso

Estos derechos suelen guardarse en la TDS

Facilita la ampliación de memoria.

Si esta estructura se encuentra en un segmento específico para ella,basta con ampliar el tamaño del segmento

54

Segmentación (HW)

Procesador S D

Base 1

Base 2

Base 3

Base 4

Base 5

Base 6

Base 7

Base 8

S

Memoria

Límite 1

Límite 2

Límite 3

Límite 4

Límite 5

Límite 6

Límite 7

Límite 8

<

Tabla de segmentos

+

¡¡¡ Error !!!

Base 5

D

RPBTS

RLTS

cpu

límite base

tabla de segmentos

(s, d)

s

<+

si

no

error de direccionamientomemoria física

55

Segmentación

Segmentación paginada

Cada segmento se pagina internamente => ventajas de la

paginación y de la segmentación

Dirección formada por dos partes: segmento y dirección

dentro del segmento:

Segmento => entrada en la tabla de segmentos que nos da la

dirección de la tabla de páginas

Dirección dentro del segmento => dividida en 2 partes:

Número de página =>entrada de la tabla de páginas que da el marco

de página correspondiente

Desplazamiento dentro de la página

56

Segmentación paginada

Ejemplos prácticos Algoritmos de reemplazo

de páginas

Algoritmo FIFO: Primero en entrar, primero en

salir

Reemplaza la página que entró hace más tiempo en memoria

(la primera que entró)

Es muy malo, al no tener en cuenta el uso de las páginas

57

Ejemplos prácticos Algoritmos de reemplazo

de páginas

Algoritmo óptimo

Reemplaza la página que más tiempo va a tardar en necesitarse

Irreal: el orden de las referencias a memoria no se uede

saber de antemano

Ejemplos prácticos Algoritmos de reemplazo

de páginas

Algoritmo LRU (Least Recently Used)

Buena aproximación al algoritmo óptimo

Selecciona la página que no ha sido utilizada hace más tiempo

58

Resumen

Paginación

Elimina fragmentación externa

Aprovecha eficientemente la memoria

Segmentación

Visible al programador

Soporte para compartición y protección

Segmentación con paginación

Combina las ventajas de ambas

Método básico

División del espacio de direcciones del usuario en segmentos

División de cada segmento en páginas

◘ Dirección lógica

Desde el punto de vista del usuario

Número de segmento | desplazamiento

Desde el punto de vista de la máquina

Nº segmento | nº página | desplazamiento

Traducción de

direccionesEstructuras de datos utilizadas para cada proceso

Una tabla de segmentos

Una tabla de páginas por segmento

59

Ejemplo de Segmentación con Paginación (MULTICS)

Cada programa dispone de una memoria virtual de hasta 218 segmentos, cada uno

de hasta 64K (218) palabras. Cada segmento es un espacio virtual independiente

que puede paginarse, con 64 (26) páginas de 1K (210)

Las direcciones físicas son de 24 bits, con las páginas alineadas con fronteras de 64

bytes

Una dirección virtual en MULTICS sería

18 6

Nº segmento Nº página Ajuste

10

Dirección dentro

del segmento

Cada programa mantiene una tabla de segmentos, que a su vez reside en un

segmento que puede estar paginado. Cada entrada de la tabla se segmentos

tiene los siguientes campos.

Dirección de la tabla de páginas

en la memoria física

Lóngitudde segmentoen páginas

Tamaño de página:

0 = 1024 palabras

1 = 64 palabras

0 = segmento paginado

1 = segmento no paginado

18 9 111 3 3

Bits diversos

Bits de protección

60

Conversión de direcciones:

18 6

Nº segmento Nº página Ajuste

10

Tabla de Segmentos

descriptor

Nº segmento#marco

Nº página

Tabla de páginas

Memoria

palabra

ajuste

Casos

Gestión de Memoria en

LINUX

WINDOWS

61

Referencia

Sistemas Operativos. ITIG. Alvaro Valdenebro. GSyC

Sistemas operativos. Pilar González. Departamento de

Ingeniería y Tecnología de Computadores. DITEC.

Sistemas Operativos una visión aplicada. Jesús Carretero.

2da Edición.