Más Sobre Segmentación

SEGMENTOS COMPARTIDOS

Un editor de texto, no se carga en varias veces, sino que se comparte el programa, pero se independizan los datos de cada archivo.

 

SEGMENTACIÓN CON PAGINACIÓN

 

La segmentación con paginación intenta unir lo mejor de los dos esquemas anteriores.

La segmentación proporciona soporte directo a las regiones del proyecto y la paginación permite un mejor aprovechamiento de la memoria y una base para construir un esquema de memoria virtual.

Un segmento está formado por un conjunto de páginas y, por tanto, no tiene que estar contiguo en memoria.

La MMU utiliza una tabla de segmentos, tal que cada entrada de la tabla apunta a una tabla de paginas.

Requiere un hardware mas complejo.

 

El sistema Multics resolvio la fragmentación externa y los largos tiempos de búsqueda paginando los segmentos

Esta solucion difiere de la segmentacion pura en que las entradas de la tabla de segmentos no contiene la direccion base del segmento, mas bien contienen la direccion base de la tabla de paginas para este segmento.

Segmento – Paginación – Desplazamiento (en ese orden)

Segmentación

SEGMENTACIÓN

Esquema de administración de memoria que soporta la visión del usuario de la memoria.

Un programa es una coleccion de segmentos. Un segmento es una unidad logica como por ejemplo:

– Programa principal

– Procedimientos.

-Funciones

-Variables locales, variables globales

-Bloques comunes

-Pila

-Tabla de simbolos, arreglos, etc.

Desplazamiento: posición dentro del segmento.

 

TABLA DE CORRESPONDENCIA DE SEGMENTOS

 

Dirección virtual=(s,d) los segmentos se intercambian como unidades.

 

Programa: núcleo principal, rutinas, datos (tablas, pilas, etc)

 

r=0 si segmento no está en real, 1 si esta

 

Bits de protección: 1-si 0-no

 

R-acceso lectura, W-escritura, E-ejecucion, A-adición (Bits de protección)

 

Bit residencia de segmento = 1

Dir auxiliar si no esta en real = S

Longitud del segmento = 1

Bits de proteccion = R W E A

# marco si esta en real = S’

RENDIMIENTO EN PAGINACION POR DEMANDA CON INTERCAMBIO

RENDIMIENTO EN PAGINACIÓN POR DEMANDA CON INTERCAMBIO

Tasa de fallo de pagina en proporción.

Si p=0 no hay fallo de pagina.

Si p=1, cada referencia es un fallo de página.

 

Tiempo de acceso efectivo con intercambio (EATS)=(1-p)* acceso a memoria +

+ p* (sobrecarga de fallo de pagina).

+ (descarga)

+ carga                                 + reinicio.

Si asumimos un valor global para el tiempo requerido en fallo de pagina (f). tendremos:

 

EATS=(1-p)*t+p*f

 

Dónde:

t: el tiempo de acceso a memoria.

p: la probabilidad de fallo de página y

f: el tiempo de fallo de página.

 

Si suponemos un t=100ns y un disco con latencia = 8ms y tbusqueda= 15ms y t.transferencia=1ms, tendríamos un tiempo promedio de fallo de f=25ms. F=25000000ns.

 

EATS = (1-p)*100+p*(25000000)

100 + 24999900*p (en ns)

Lo cula significa que el tiempo de acceso esta muy relacionado con la tasa e fallos de pagina. (En general t<<f)

EJEMPLO DE PAGINACIÓN DE DOS NIVELES:

EJEMPLO DE PAGINACIÓN DE DOS NIVELES:

Una dirección lógica (en una máquina de 32 bit con tamaño de página de 4K) esta divida en:

– Un numero de pagina de 20bits

-Un desplazamiento de pagina de 12 bits.

Dado que la tabla de pasginas es paginada, el # de pagian adicionalmente se divide en:

-Un numero de pagina de 10 bits.

-Un desplazamiento de pagian de 10 bit.

Asi, la direccion logica es como sigue:

# de pagina        # de pagina       desplazamiento

P1                                 p2                               p3

10                                 10                              12

 

Donde p1, es un indice en la tabla de paginas externa, y p2 es el desplazamiento dentro de la página de la tabla de paginas externa. EAT=(t+Epsilon)Alfa + (3t + Epsiolon)(1-Alfa)

TABLAS MULTINIVEL

VENTAJA DE TABLAS MULTINIVEL

Si un proceso usa una parte pequeña de su espacio lógico: Ahorro en espacio para almacenar TPs.

b=bits

B=Bytes

Si tengo 12 bytes, se tienen 2 a la 12 tamaño de página. Por lo tanto de 4KB

Sea un procesador con una dir lógico de 32b de 2 niveles (10b/nivel). TP de 4KB, entrada a TP es 4B.

Si cada direccion es de 32bits, y la direccion es de 4K, caben 1024 direcciones.

Si el proceso usa 12MB superiores y 4MB inferiores:

Tenemos,

Cada página N(sub2) direcciona 4MB

 

Tamaño tablas de página:

1 TP N(sub1) + 4 TP N(sub2) = 5*4KB = 20KB (frente a 4MB si utilizara todas las paginas).

1TP: un direccionamiento de grupos de paginas. Una tabla.

4TP: son 4 sub tablas.

BUFFER DE TRADUCCIÓN ANTICIPADA (TLB)

BUFFER DE TRADUCCIÓN ANTICIPADA (TLB)

Translation Lookaside Buffer (TLB) es una memoria caché administrada por la MMU, que contiene partes de la tabla de paginación, es decir, relaciones entre direcciones virtuales y reales. Posee un número fijo de entradas y se utiliza para obtener la traducción rápida de direcciones. Si no existe una entrada buscada, se deberá revisar la tabla de paginación y tardará varios ciclos más, sobre todo si la página que contiene la dirección buscada no está en memoria primaria (véase memoria virtual). Si en la tabla de paginación no se encuentra la dirección buscada, saltará una interrupción conocidacomo fallo de página.

Memoria cache: Guardar la referencia de las páginas. La tabla se llama TLB.

La tabla de páginas se mantiene en memoria principal.

El registro base de la tabla de páginas (PTBR) señala la tabla de páginas.

El registro de longitud de tabla de páginas (PRLR) indica el tamaño de la tabla de paginas

Toda memoria virtual puede causar dos accesos a memoria física

Uno para buscar en la tabla de página apropiada.

Uno para buscar los datos solicitados.

Para solventar este problema, la mayoría de esquemas de memoria virtual utilizan una cache especial de alta velocidad para las entradas de la tabla de página.

– Se le denomina buffer de traducción anticipada [traslation lookaside buffer (TLB)], también llamado registros asociativos.

Contiene aquellas entradas de la tabla de páginas que han sido usadas de forma más reciente.

Dada una dirección virtual, el procesador primero examina la TLB

Si la entrada de la tabla de páginas solicitada esta presente (acierto en TLB), entonces se recupera el número de marco y se construye la dirección real.

Si la entrada de la tabla de páginas solicitada no se encuentra (fallo en la TLB), el procesador utiliza el número de página para indexar la tabla de páginas del proceso.

 

Primero comprueba si la página solicitada esta todavía en la memoria principal

Si no se encuentra en la memoria principal, se produce un fallo en la memoria, llamado fallo de página.

 

La TLB se actualiza para incluir esta nueva entrada de la tabla de páginas.

 

Registros asociativos/ tiempo de acceso efectivo sin intercambio. (cache)

 

Épsilon: tiempo de búsqueda asociativa.  Tiempo de búsqueda en la cache.

 

t = tiempo de ciclo de memoria, tiempo de acceso a un dato en memoria.

 

Alfa= tasa de aciertos – porcentaje de veces que un número de página se encuentra en los registros asociativos. Probabilidad de que este en cache.

1-alfa: Probabilidad de que no esté en cache.

EAT = Tiempo de acceso efectivo

EAT= (t + epsilon)alfa + (2t + epsilon )(1-alfa)

 

Traducción de direcciones (A’,A’’)

-si A’ es un registro asociativo, saque el marco #

-De otra forma obtenga el marco # de la tabla de páginas de memoria.

 

PAGINACIÓN

PAGINACIÓN

Paginación: División de la memoria y de los programas en tamaños iguales

Segmentación: División de la memoria en tamaños correspondientes a los componentes del programa y los programas son dividos en sus componentes básicos (ej, sub-rutinas)

“La paginación es a la partición fija como la segmentación a las particiones variables”

EL almacenamiento virtual de un usuario no tiene que ser contiguo ni siquiera en almacenamiento secundario

Conjunto de trabajo (Working Set): Conjunto de líneas de código cargadas en memoria real necesarias para realizar una tarea determinada (para realizar una tarea no se necesitan todas las líneas de código del programa).

 

El espacio de direcciones lógicas de un proceso no necesariamente es contiguo; los procesos se ubican en memoria física donde luego quedan disponibles.

Se divide la memoria física en bloques de tamaño fijo llamados marcos (los tamaños con potencias de 2 entre 512 bytes y 8192 bytes).

Se divide la memoria lógica en bloques del mismo tamaño llamados páginas

Se mantiene el rastro de todos los marcos.

Para correr un programa de tamaño n páginas, se requiere encontrar n marcos libres y cargar el programa.

Se debe poner a punto una tabla para traducir las direcciones físicas a las lógicas.

Se puede presentar fragmentación interna.

El tamaño de las páginas no puede ser muy grande porque se pierde mucho espacio. La pérdida seria del número de páginas menos uno.

 

Tabla de páginas: tabla de equivalencias para pasar de memoria virtual a física. Dice cuales paginas esta en memoria virtual y cuales en real. Ésta tabla existe por cada proceso. y esta se aloja en la memoria real, es ubicada gracias al puntero a tabla de páginas que tiene un registro en el procesador

El espacio virtual se divide en páginas, algunas páginas están en memoria principal: – el SO se encarga de que estén en memoria principal las paginas necesarias.

 

ESQUEMA DE TRADUCCIÓN DE DIRECCIONES

* Las direcciones generadas por la CPU se dividen en:

– Numero de página (p) – utilizado en la tabla de páginas que contienen las direcciones base de cada página en la memoria física,

– El desplazamiento de página (d) – combinado con la dirección base definen la dirección de memoria física que es enviada a la unidad de memoria.

– Traducción: Proceso referencia (p,d), se busca en la tabla de correspondencia de páginas para ver la p’(p real), La dirección real es p’+d. por agilidad tabla de correspondencia en caché.

*Si no hay residencia de la página en memoria principal, sucede una falta de página. r = 0 si página no está en real, 1 si esta.