La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

La memoria virtual If it’s there and you can see it - it’s real

Presentaciones similares


Presentación del tema: "La memoria virtual If it’s there and you can see it - it’s real"— Transcripción de la presentación:

1 La memoria virtual If it’s there and you can see it - it’s real If it’s not there and you can see it - it’s virtual If it’s there and you can’t see it - it’s transparent If it’s not there and you can´t see it - you erased it! IBM poster explaining virtual memory, circa 1978

2 Características memoria virtual
programa 1M computadora 512K en RAM Programas muy grandes no caben en memoria disponible: solución: dividir programa en partes (capas) capa 0: se ejecuta primero termina se llama la capa 1 Capas se mantienen en disco (zona de swap) y se intercambian con la memoria por medio del sistema operativo

3 Aspectos a tomar en cuenta
Responsabilidades: Intercambio capas disco/memoria: sist. operativo Dividir programa: programador Originalidad división programa responsabilidad del sistema método diseñado por Fotheringham (1961) método conocido como memoria virtual Principio Sistema operativo mantiene en memoria aquellas partes del programa que se usen (referencien) y el resto permanece en disco direcciones generadas dentro de un programa mediante índices, registros base, de segmento y otros, se denominan espacio direcciones virtuales las direcciones de la memoria disponible (memoria física) se conocen con el nombre de direcciones físicas

4 Métodos si no hay memoria virtual: con memoria virtual paginación
la dirección virtual es la dirección física con memoria virtual es necesario saber que dirección física le corresponde a la dirección virtual Métodos paginación segmentación

5

6 La paginación - Espacio direcciones virtuales se divide en unidades
llamadas páginas. - Las unidades correspondientes en memoria física se llaman marcos para páginas - Las páginas y los marcos tienen siempre el mismo tamaño. - Fallo de página: pagina no asociada con algún marco

7 . pag 0 pag 2 pag n mapa de memoria memoria física memoria virtual
disco

8 1 2 3 4 5 6 7 1 2 marca válido no - válido A 3 4 B 1 4 v 5 C i 2 6 6 v
1 2 marca válido no - válido A 3 A 4 B 1 4 v 5 C 1 i 2 6 C 2 6 v 3 D 7 3 i 8 A B E 4 4 i 9 F C D E F 5 9 v 5 i 10 6 F G 6 i 11 7 H 7 tabla de páginas 12 memoria lógica 13 disco memoria física (RAM) 14 15

9 memoria RAM disco 1 2 3 4 5 6 7 programa A 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 programa A 8 9 10 11 12 13 14 15 16 17 18 19 programa B 20 21 22 23 memoria RAM disco

10 memoria lógica para el usuario 1
bit de validez / no validez marco H cargar M J M memoria lógica para el usuario 1 3 v 1 monitor 4 v 2 5 v 1 3 i 2 D Tabla de páginas para el usuario 1 B 3 H cargar M 4 bit de validez / no validez marco 5 J M A 3 v 6 A 1 B 4 v 7 E 2 C 5 v memoria física 3 D i memoria lógica para el usuario 2 Tabla de páginas para el usuario 1

11 1 2 i víctima f v f 4 3 memoria física
Intercambiar a disco la página víctima bit de validez / no validez marco 1 cambiar a no válido 2 i víctima f v f 4 3 restablecer la tabla por la nueva página tabla de páginas Inter cambiar a la memoria la página adecuada memoria física

12 } } Ejemplo paginación 0- 4k 2 0- 4k 4K- 8K 1 4K- 8K 8K-12K 6 8K-12K
Direcciones en la Espacio de memoria fisica direcciones virtuales 0- 4k 2 0- 4k 4K- 8K 1 4K- 8K 8K-12K 6 8K-12K 12K-16K 12K-16K 16K-20K 4 16K-20K 20K-24K 3 20K-24K 24K-28K x 24K-28K 28K-32K x } 28K-32K 32K-36K x 36K-40K 5 40K-44K x 44K-48K 7 Marco para página 48K-52K x Página virtual 52K-56K x 56K-60K x } 60K-64K x

13 Página virtual = 2 se utiliza como un índice en la tabla de Dirección virtual páginas. de entrada (16 bits) Bit presente/ausente (8196) 1 2 110 3 4 El ajuste de 12 5 bits se copia en 6 forma directa de la entrada a 7 la salida Tabla de 8 páginas 9 10 11 12 13 14 15 16 páginas de 4K Dirección física Dirección física Dirección física de salida de salida (15 bits) de salida (24580) (24580) (24580)

14 (a) Una dirección de 32 bits con dos campos para la tabla de páginas.
de segundo nivel Hacia las páginas Tabla superior: c/entrada = 4M => se tienen 4G de direcciones virtuales 232 = 4,294,967,296 = 4G Tabla de páginas de nivel superior PT 1 1 Bits 2 10 10 12 3 4 PT 1 PT 2 Offset 5 6 7 (a) 1023 1 2 3 Tabla de 4 páginas para 5 los 4 M supe- 6 riores de la 7 memoria 1023 (b) (a) Una dirección de 32 bits con dos campos para la tabla de páginas. (b) Tablas de páginas de dos niveles

15 Ejemplo direccionamiento
Espacio direcciones virtuales: 232 = 4,294,967,296 = 4G Ejemplo dirección virtual: 0x = => PT1 = 1 PT2 = 3 Offset = 4 4M -1 tabla 0 4M 12292 (dir. abs 4,206,592) a 16383 (dir. abs 4, 210,687) x PT2 = 3 PT1 = 1 1 8M x contiene el número de marco de la página con dirección 0x tabla 1 : tabla 1023

16 Compartiendo páginas - Posibilidad de compartir código en común - Importante en tiempo compartido ed1 ed2 ed3 datos1 3 4 6 1 Tabla Páginas de p1 datos 1 ed1 datos 3 ed2 datos2 ed3 Contexto del proceso p1 1 2 3 ed1 ed2 ed3 datos2 4 3 4 6 7 Tabla Páginas de p2 5 Contexto del proceso p2 6 7 8 9 ed1 ed2 ed3 datos3 3 4 6 2 Tabla Páginas de p3 10 Contexto del proceso p3

17 Desempeño paginación por demanda
Paginación por demanda puede tener un efecto importante sobre el desempeño de un sistema Necesario calcular el tiempo de acceso efectivo Tiempo acceso memoria (am) varía entre 10 y 200 nanosegundos Si no hay fallos: tiempo acceso efectivo es el mismo que el tiempo de acceso a memoria Si ocurre un fallo hay que leer del disco la página y luego acceder a la palabra deseada Entonces: si p es la probabilidad de que ocurra un fallo, cabe esperar que esta probabilidad es cercana a 0 el tiempo efectivo de acceso (tea) es: Para calcular lo anterior necesitamos saber cuánto tiempo toma resolver un fallo de página

18 Secuencia fallo de página
1. Notificación al sistema operativo 2. Guardar los registros del usuario y estado del proceso 3. Determinar que la interrupción fue un fallo de página 4. Verificar que la referencia a la página fue válida y determinar la posición de la página en disco 5. Leer del disco a un marco libre a. Esperar en la fila de espera de este dispositivo, hasta que se atienda la solicitud de lectura b. Esperar durante el tiempo de búsqueda y/o latencia del dispositivo c. Iniciar la transferencia de la página a un marco libre 6. Durante la espera asignar la CPU a algún otro usuario 7. Interrupción del disco (E/S terminada) 8. Guardar los registros y el estado de proceso del otro usuario (si se llevó a cabo el paso 6) 9. Determinar que la interrupción vino del disco 10. Corregir la tabla de páginas y las demás tablas de modo que indiquen que la página ya esta en memoria 11. Esperar que la CPU se asigne otra vez a este proceso 12. Restaurar los registros de usuario, el estado de proceso y la nueva tabla de páginas y reanudar la ejecución interrumpida

19 Tiempo servicio fallo página
Tiene tres componentes Atender la interrupción de fallo de página Traer la página a la memoria Reiniciar los procesos Primera y última tarea podrían tomar entre 1 y 100 microsegundos cada una Tiempo intercambio: promedio latencia disco duro: 15 microsgs tiempo de búsqueda: milisgs tiempo de transferencia: milisg total: milisgs Tiempo total paginación: aprox. 25 milisgs Solo se considera tiempo de servicio si hay una cola de procesos hay que considerar el tiempo de espera para que el dispositivo este libre Si tiempo acceso memoria es de 100 nanosegs, el tiempo de acceso efectivo es: tae = (1-p) x (100) + p ( 25 milisegs) (1-p) x p x 25,000,000 , 999,900 x p

20 Entonces ??? Tiempo de acceso efectivo es directamente proporcional a la frecuencia de los fallos de página Si un acceso de cada 1000 causa un fallo de página, el tiempo de acceso efectivo será de 25 microsegs ¡¡¡ Desempeño se reduce en un factor de 250 a causa de la paginación por demanda !!! Si se desea una degradación de menos del 10%, se necesita que: 110 > ,000,000 x p 10 > 25,000,000 x p p > Para mantener en un nivel razonable la reducción del desempeño sólo se puede permitir fallos de página en menos de uno de cada 2,500,000 accesos a memoria Es importante mantener baja la frecuencia de fallos de página, de lo contrario el tiempo de acceso aumentará y frenará la ejecución de procesos, Ejemplos: disco fragmentado y poca RAM en Windows 95 vs área de swap en Linux

21 El reemplazo de páginas
Adoptan el enfoque: si no hay marcos libres, se busca uno ocupado pero que no se este usando y lo liberamos Un marco se libera escribiendo su contenido en el espacio de intercambio y modificando la tabla de páginas (y todas las demás) de tal forma que indiquen que la página ya no esta en la memoria La rutina de atención de fallos de página se modifica de la siguiente forma: 1. Encontrar la página deseada en el disco 2. Hallar un marco libre a. Si hay un marco libre usarlo b. Si no, usar un algoritmo de reemplazo de páginas para escoger un marco víctima c. Escribir la página víctima en el disco; modificar de manera acorde las tablas de páginas y de marcos 3. Leer la página deseada y colocarla en el marco recién liberado; modificar las tablas de páginas y de marcos 4. Reiniciar el proceso usuario interrumpido Si no hay marcos libres, se requieren dos transferencias de página (hacia afuera y hacia adentro), lo que duplica el tiempo de servicio solución: usar un bit de modificación o bit sucio

22 Estructura tabla de páginas
Número de marco de página Caching desactivado Modificado Referenciado Protección Presente/ ausente caching: páginas asociadas a registros de dispositivos referenciado: 1 cuando se hace una referencia a una página para leer o escribir modificado: recuperación marco, si página no ha sido modificada no se escribe a disco protección: tipo acceso permitido, (0 lec/esc, 1 solo lectura) presente/ausente: 1: entrada valida y puede ser utilizada 0: página no cargada en memoria

23 Algoritmos de reemplazo de páginas y algoritmos de asignación de marco
Dos aspectos a cuidar en la implementación de la paginación por demanda: desarrollar un algoritmo de asignación de marco desarrollar un algoritmo de reemplazo de páginas En el primero, si se tienen varios procesos en memoria, hay que decidir cuántos marcos se asignarán a cada uno En el último, si hay que reemplazar páginas hay que seleccionar cuales se reemplazarán

24 Algoritmos de reemplazo de páginas
¿Cómo escoger un algoritmo de reemplazo específico? En general lo que se busca es el algoritmo con la frecuencia de fallos de página más baja Evaluación: Se ejecuta con una serie específica de referencias a memoria y se calcula el número de fallos de página serie específica: serie de referencias serie se puede generar en forma aleatoria o a partir del rastreo de un sistema dado también se necesita saber el número de marcos que se dispone a medida que aumenta el número de marcos, el número de fallos disminuye, la adición de memoria física incrementa el número de marcos

25 Algoritmo Optimo Cuando ocurre fallo página cierto conjunto de páginas se encuentran en memoria En la siguiente instrucción se hará referencia a una de estas páginas (la página que contenga la dirección de uno de los operandos de la instrucción) Otras páginas no se usarán hasta 20, 200 o instrucciones más adelante Cada página se va a etiquetar con: - Número de instrucciones a ejecutar antes de hacer la primera referencia a dicha página Principio algoritmo: - Eliminar página con la máxima etiqueta - Si una instrucción no va a ejecutarse durante millones de instrucciones y otra página se usará hasta dentro de 6 millones: eliminar primera retrasa el fallo de página lo más posible - Eliminar la página que más se va a tardar en ser referenciada Página 1 Etiqueta: 10 Página 2 Etiqueta: 30 Página 3 Etiqueta: 5

26 Algoritmo según el uso no tan reciente (NRU)
Computadoras tiene dos bits de estado asociados a cada página: R: se activa si se hace referencia a la página M: se activa cuando se escribe en la página Bits actualizados en cada referencia a memoria. Si tales bits no existen en hardware se pueden simular en software. Principio Algoritmo: - Al iniciar un proceso el S.O. asigna 0 a R y M de todas las páginas - En forma periódica se limpia el bit R, (para distinguir páginas que no tengan referencia de las que sí). - Fallo de página: S.O. inspecciona todas las páginas y las divide en cuatro categorías, (según valores R y M ): * caso 0: no referenciada, no modificada * caso 1: no referenciada, pero ha sido modificada * caso 2: se ha hecho referencia, pero no modificada * caso 3: se ha hecho referencia y ha sido modificada

27 Algoritmo NRU (cont) Algoritmo NRU elimina página de la primera clase no vacía con el número más pequeño, (número de clase). Si todas tienen el mismo nivel se elimina el que llego primero Hipótesis implícita: Es mejor eliminar una página modificada sin referencia en al menos un intervalo de reloj, que una página en blanco de uso frecuente. Ventajas +Fácil de comprender +Implantación eficiente +Rendimiento que, aún sin ser el óptimo, sí es adecuado con mucha frecuencia.

28 (última página en salir)
Algoritmo FIFO Principio los primeros en entrar, son los primeros en salir. S.O. tiene una lista de todas las páginas en memoria, siendo la primera página la más antigua y la última la más reciente. En un fallo de página se elimina la primera página y se añade la nueva al final de la lista. FIFO es muy pocas veces usada en su forma más pura. A B C D E F H página que se cargó en 1er. lugar (1a. página en salir) página de carga más reciente (última página en salir)

29 Algoritmo de la Segunda Oportunidad
Modificación simple de FIFO evita deshacerse de una página de uso frecuente inspeccionando el bit R de la página más antigua. si (R = 0) => página antigua y no utilizada se reemplaza en forma inmediata si (R=1) => el bit se limpia la página se coloca al final de la lista su tiempo de carga se actualiza A B C D E F G página que se cargó en 1er. lugar página de carga más reciente B C D E F G A Una variante del algoritmo es usar dos bits M y R para decidir si se da una segunda oportunidad

30 Algoritmo de Reemplazo de Reloj
Mantener páginas en una lista circular con forma de reloj. Una manecilla apunta hacia la página más antigua. B C D E F G A H I K J L Al ocurrir un fallo de página se inspecciona la página a la que apunta la manecilla. Si bit R = 0 => página se retira de memoria se inserta nueva página en su lugar en el reloj manecilla avanza una posición si no se busca una página con R = 0. Difiere del anterior sólo por la implementación

31 Algoritmo de la menor uso reciente (LRU)
Páginas uso frecuente en las últimas instrucciones se utilizan con cierta probabilidad en las siguientes. Es probable que las páginas que no hayan sido utilizadas durante mucho tiempo permanezcan sin uso por bastante tiempo. Esto induce al siguiente algoritmo: al ocurrir un fallo de página se elimina la página que no haya sido utilizada durante el tiempo más grande. Nombre estrategia: LRU LRU: realizable en teoría, no es barato. Implementación: necesario mantener una lista de todas las páginas en memoria, en donde la página de uso más reciente este al pri ncipio de la lista y la de uso menos reciente al final. Dificultad: la lista debe actualizarse en cada referencia a la memoria. Búsqueda de la página en la lista, su eliminación y posterior traslado al frente de la misma NO puede ser una operación muy lenta.

32 1a. Solución: caso más sencillo
Requiere de un contador de 64 bits, C, en hardware. se incrementa en forma automática después de cada instrucción. Cada entrada en tabla de páginas debe contener espacio necesario para almacenar el contador. Después de cada referencia el valor actual de C se almacena en la entrada de la tabla de páginas correspondiente a la página a la que se hizo referencia. Fallo de página: => S.O. examina todos los contadores de la tabla de páginas y elige el mínimo, (i.e. página de uso más reciente).

33 Ejemplo solución Valor inicial cont = 0; Referencias: P0, P1, P3, P1
cont = 1; P0 P1 P2 P3 cont = 2; P0 P1 P2 P3 cont = 3; P0 P1 P2 P3 cont = 4; (4+2) Página más recientemente usada: P1, (cont = 6) Página menos usada: P2 , (cont = 0)

34 2a. Solución: caso más sencillo
Máquina con n marcos para página, hardware LRU puede matriz de n x n, matriz inicializada en cero. Referencia al marco k hardware primero activa todos los bits del renglón k desactiva después todos los bits de la columna k. En cualquier instante: renglón con valor binario mínimo es de uso menos frecuente, renglón con el siguiente valor más pequeño es el segundo de uso menos reciente, etc.

35 Ejemplo de LRU con uso de una matriz
Máquina con cuatro marcos, con referencias a las páginas en el orden: 0, 1, 2, 3, 2, 1, 0, 3, 2, 3 Después hacer referencia a la página 0 tenemos la situación siguiente: (a) (b) (d) (d) (f) (g) (h) (i) (j)

36 Simulación LRU en software
LRU utiliza hardware especial. Si no existe tal hardware >>> solución implantar en software Posibilidad usar algoritmo de uso no frecuente o NFU necesita un contador en software asociado a c/página valor inicial = 0; En cada interrupción de reloj, el S.O. examina todas las páginas de la memoria: el bit R (0 o 1) se suma al contador (contadores son un intento por llevar un registro de la frecuencia de referencia de la página ). Principal problema NFU: nunca olvida.

37 Implementación LRU con pila
Mantener una pila de números de página Cuando se hace referencia a una página se saca de la pila y se coloca arriba De este modo, en el tope de la pila siempre esta la página más recientemente utilizada Ya que es necesario sacar entradas de en medio de la pila, la mejor forma de implementar la pila es con una lista doblemente encadenada y con apuntadores al principio y al final Cada actualización es costosa, pero no hay que buscar la página a reemplazar, uno de los apuntadores señala la página LRU Implementación en software o microcódigo Ejemplo: serie referencias: 2 1 7 4 7 2 4 a b pila antes de a pila después de b

38 Algoritmos de conteo Se podría mantener un contador del número de referencias que se han hecho a cada página Se tienen dos esquemas: LFU y MFU Algoritmo LFU Eliminar páginas menos frecuentemente usadas (no confundir LFU con LRU) exige reemplazar la página con la cuenta más baja una página que se ha usado activamente debe tener una cuenta de referencias grande algoritmo castiga a páginas que se usaron mucho durante la fase inicial y luego no se vuelven a usar Algoritmo MFU eliminar páginas más frecuentemente usadas se basa en el argumento de que la página con la cuenta más baja probablemente se acaba de traer a la memoria y todavía no se usa Ni el algoritmo MFU ni el LFU son comunes La implementación de estos algoritmos es relativamente costosa

39 Algoritmo colocación páginas en buffers
Muchos sistemas mantienen una reserva de marcos libres Cuando ocurre un fallo de página, se escoge un marco víctima igual que antes sin embargo la página deseada se coloca en un marco libre de la reserva antes de escribir la víctima en el disco este procedimiento permite al proceso reiniciarse lo más pronto posible, sin esperar a que la página víctima se escriba en el disco cuando la víctima termina de escribirse en el disco, su marco se añade a la reserva de marcos libres Una variante es mantener una lista de páginas modificadas siempre que dispositivo de paginación este ocioso, se escoge una página modificada y se escribe en el disco después de lo cual se apaga su bit de modificación esquema aumenta probabilidad de que una página este limpia cuando se le escoja para ser reemplazada, y no tenga que reescribirse

40 Otra variantes es mantener una reserva de marcos libres, pero recordar cuál página estaba en cada marco el contenido de un marco no se modifica cuando la página que contiene se escribe en el disco entonces es posible reutilizar la página vieja directamente de la reserva de marcos libres si llega a necesitarse antes de que vuelva a usarse ese marco en tal caso, no habrá que efectuar E/S cuando ocurre un fallo de página, primero se determina si la página deseada está en la reserva de marcos libres so no es así, se escoge un marco libre y se coloca en él la nueva página

41 Algoritmo de maduración
Bits R para las páginas 0-5, en la marca de reloj Bits R para las páginas 0-5, en la marca de reloj Bits R para las páginas 0-5, en la marca de reloj Bits R para las páginas 0-5, en la marca de reloj Bits R para las páginas 0-5, en la marca de reloj 1 1 1 1 1 1 Página (a) (b) (c) (d) (e)

42 Asignación de marcos Como repartir la cantidad fija de memoria libre entre los distintos procesos Si se tienen 93 marcos libres y dos procesos ¿cuantos marcos recibe cada proceso? Caso más sencillo: monousuario memoria 128K y páginas de 1K sistema operativo ocupa 35K => 93 marcos libres 93 marcos se colocan en lista de marcos libres proceso inicia y va a recibir los 93 marcos, cuando requiera un 94, se aplica un algoritmo de reemplazo al final proceso regresa los 93 marcos otras opciones: si sistema operativo no usa su espacio de buffers y tablas estos podrían apoyar la paginación de usuarios resumiendo estrategia: se asigna cualquier marco libre al proceso del usuario

43 Número mínimo de marcos
No es posible asignar más del total de marcos disponibles (a menos que se compartan las páginas) Existe un número mínimo de marcos que se pueden asignar número definido por la arquitectura del conjunto de instrucciones contener páginas a las que una sola instrucción pueda hacer referencia (evitar reiniciar instrucción) situación grave: arquitecturas que permiten múltiples niveles de indirección instrucción carga sencilla puede hacer referencia a una dirección indirecta (en otra página) que también puede hacer referencia a una dirección indirecta (en otra página) solución indirecciones: limitar los niveles de indirección, a través de un contador, Número mínimo de marcos por proceso esta definido por la arquitectura, mientras que el número máximo esta definido por la cantidad de memoria física disponible Menos marcos => más fallos de página

44 Algoritmos de asignación
Asignación equitativa: La forma más fácil de dividir m marcos entre n procesos es dar a cada proceso una porción de m/n marcos Por ejemplo 93 marcos y cinco procesos: cada proceso recibirá 18 marcos, los tres marcos restantes pueden usarse como reserva Asignación proporcional diferentes procesos requieren diferentes cantidades de memoria si un proceso (p1) requiere 10K y otro (p2) 127K y hay 62 marcos no es lógico asignar 31 marcos a cada uno se asigna memoria disponible a cada proceso según su tamaño, entonces:

45 Se debe ajustar ai de modo que sea un entero mayor que el número mínimo de marcos requeridos por el conjunto de instrucciones y que la sumatoria no exceda m En el ejemplo anterior: 10/137 x 62 = (p1 tendrá 4 marcos) 127/137 x 62 = 57 (p2 tendrá 10 marcos) Los procesos comparen recursos de acuerdo a su necesidad Tanto en asignación equitativa como en proporcional la asignación a cada proceso puede variar según el nivel de multiprogramación si el nivel se incrementa cada procesos perderá algunos marcos para proporcionar al nuevo proceso si el nivel disminuye los marcos que se habían asignado al proceso que salió se pueden repartir Tanto en asignación equitativa como proporcional un proceso de alta prioridad se trata igual que uno de baja prioridad Para dar prioridad es posible emplear esquema asignación proporcional en el que la asignación de marcos no dependa de tamaños relativos de los procesos si no de su nivel de prioridad

46 Asignación global o local
Otro factor importante de como se asignan los marcos es el reemplazo de páginas Si hay varios procesos compitiendo por los marcos, es posible clasificar algoritmos de reemplazo en reemplazo global y reemplazo local Reemplazo global permite a un proceso seleccionar un marco de reemplazo del conjunto de todos los marcos, incluso si ese marco esta asignado a otro proceso, un proceso puede arrebatarle un marco a otro por ejemplo, procesos con más prioridad problema: un proceso no puede controlar su propia frecuencia de fallos de página (proceso sólo selecciona marcos asignados a otros procesos) Reemplazo local el número de marcos asignado a un proceso no cambia el conjunto de páginas de un proceso que están en la memoria sólo depende del comportamiento de paginación de ese proceso podría obstaculizar ejecución de un proceso por no dejar que aproveche otras páginas de memoria de poco uso Reemplazo global generalmente aumenta el rendimiento de un sistema, y es el más usado

47 La segmentación - Paginación = espacio direcciones unidimensional, (0..max) - Dotar máquina de varios espacios independientes de direcciones, desde 0 hasta cierto máximo. - Los distintos segmentos pueden tener longitudes distintas. - La longitud de cada segmento puede ser distinta - La longitud de un segmento puede variar durante su ejecución - Acceso se hace en dos partes: número de segmento y una dirección dentro de este - Un segmento puede tener la protección adecuada para el tipo de objeto almacenado

48 Espacio de direcciones virtuales
Tabla de La tabla de símbolos se símbolos ha encimado en la tabla del texto fuente Texto fuente Espacio de direcciones utilizado en este momento por la tabla de constantes Tabla de constantes Espacio de direcciones asignado a la tabla de Libre constantes árbol léxico Llamadas a la pila En un espacio unidimensional de direcciones con tablas crecientes, una tabla puede encimarse con otra.

49 Una memoria segmentada permite que cada tabla crezca o se reduzca en
Segmento 4 4 K 8 K 12 K O Llamadas a la pila Segmento 3 4 K 8 K 12 K 16 K O árbol léxico Segmento 2 Constantes Una memoria segmentada permite que cada tabla crezca o se reduzca en Segmento 1 4 K 8 K 12 K O Texto fuente forma independiente de las demás Segmento 4 K 8 K 12 K 16 K O 20 K Tabla de símbolos

50 La tabla de segmentos Tabla de Segmentos limite base s
Memoria Principal CPU ( s, d) base+d d < limite si no trap, error direccionamiento

51 Espacio direcciones virtuales
Ejemplo segmentación Espacio direcciones virtuales 1400 subrutina segmento 0 stack 2400 segmento 3 sqrt() segmento 0 tabla de simbolos main() del programa principal 3200 segmento 1 segmento 3 segmento 4 segmento 2 4300 segmento 2 limite base Tabla de Segmentos 4700 segmento 4 5700 6300 segmento 1 Memoria Principal 6700

52 Compartiendo Segmentos
Memoria Virtual Editor segmento 0 Tabla Segmentos P1 limite base 43062 datos 1 segmento 1 editor Espacio direcciones virtuales de P1 68348 datos 1 72773 Editor segmento 0 limite base Tabla Segmentos P2 90003 datos 2 segmento 1 datos 2 98553 Espacio direcciones virtuales de P2

53 Combinando paginación y segmentación
dirección virtual s d d < (long. seg.) d STBR + s no p d’ longitud base segmento tabla-páginas trap (base tabla) + p Memoria Principal f f d’ dirección física Tabla de páginas para segmento s

54 Esquema MULTICS - Direcciones virtuales: 18 bits de número de segmento
16 bits de offset - Necesarias igual número de entradas en tabla segmentos y segmentos (no debe de haber entradas vacías) - Segmentos: palabras de 64K - Paginar los segmentos: cualquier marco vacío puede ser usado para una determinada página Descriptor del segmento: 18 9 3 3 Direcciones en memoria princi- pal de la tabla de paginación Longitud del seg- mento (en páginas) Tamaño página: 0: 1024 palabras 1: 64 palabras bits diversos 0: segmento esta paginado 1: segmento no paginado bits protección Dirección virtual 34 bits: Número de segmento Número de página Ajuste dentro de la página 18

55 Interpretación de una dirección en MULTICS
Dirección lógica s1 s2 d1 d2 s1 s2 tabla de páginas de la tabla de segmentos d1 página de la tabla de segmentos d2 tabla de páginas del segmentos página del segmento

56 Comparación paginación segmentación
Motorola 68000: paginación Intel 8086: segmentación Considerando Paginación Segmentación ¿Necesita saber el programador si está NO SI utilizando esta técnica? ¿Cuántos espacios lineales de direcciones 1 Muchos existen? ¿Puede el espacio total de direcciones SI SI exceder el tamaño de la memoria física? ¿Pueden distinguirse los procedimientos y los datos, además de protegerse en NO SI forma independiente? ¿Pueden adecuarse con facilidad las NO SI tablas con tamaños fluctantes? ¿Se facilita el uso de procedimientos NO SI compartidos entre los usuarios?

57 ~ ~ ~ ~ Cerrado en un bit de memoria Solicitando En tránsito
Entrada del mapa central Libre Número de bloque en disco Número del dispositivo en disco Código del orden del bloque Indice en la tabla de procesos Texto / datos / pila Indice de la siguiente entrada Ajuste dentro del segmento Indice de la entrada superior ~ Entradas del mapa central, uno por cada marco de página ~ Memoria para páginas Memoria para páginas 3 2 Memoria para páginas 1 Núcleo de UNIX 4.3BSD Memoria para páginas Memoria principal ~


Descargar ppt "La memoria virtual If it’s there and you can see it - it’s real"

Presentaciones similares


Anuncios Google