1 / 57

If it’s there and you can see it - it’s real If it’s not there and you can see it

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.

Download Presentation

If it’s there and you can see it - it’s real If it’s not there and you can see it

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. programa 1M Características memoria virtual 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. 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 Aspectos a tomar en cuenta

  4. si no hay memoria virtual: • 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. 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

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

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

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

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

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

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

  12. 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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) 010 1 0 001 1 1 110 110 1 2 000 1 3 100 1 4 El ajuste de 12 011 1 5 bits se copia en forma directa 000 0 6 de la entrada a 000 0 7 la salida Tabla de 000 0 8 páginas 101 1 9 000 0 10 111 1 11 000 0 12 000 0 13 000 0 14 000 0 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) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

  13. PT 1 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 0 1 Bits 2 10 10 12 3 4 PT 1 PT 2 Offset 5 6 7 (a) 1023 0 1 2 3 Tabla de 4 páginas para 5 los 4 M supe- riores de la 6 memoria 7 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

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

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

  16. 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 Desempeño paginación por demanda

  17. 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 Secuencia fallo de página

  18. 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: 8 milisgs tiempo de transferencia: 1 milisg total: 24 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 100 + p x 25,000,000 100 + 24, 999,900 x p Tiempo servicio fallo página

  19. 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 > 100 + 25,000,000 x p 10 > 25,000,000 x p p > 0.0000004 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 Entonces ???

  20. 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 El reemplazo de páginas

  21. Modificado Caching desactivado Presente/ ausente Número de marco de página Referenciado Protección Estructura tabla de páginas 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

  22. 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 Algoritmos de reemplazo de páginas y algoritmos de asignación de marco

  23. ¿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 Algoritmos de reemplazo de páginas

  24. Página 1 Página 2 Página 3 Etiqueta: 10 Etiqueta: 30 Etiqueta: 5 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 1500 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 8 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

  25. 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

  26. 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. Algoritmo NRU (cont)

  27. 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. 0 3 7 8 12 15 18 A B C D E F H Algoritmo FIFO 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)

  28. 0 3 7 8 12 15 18 A B C D E F G 3 7 8 12 15 18 20 B C D E F G A 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 página que se cargó en 1er. lugar página de carga más reciente Una variante del algoritmo es usar dos bits M y R para decidir si se da una segunda oportunidad

  29. A L B K C J D I E H F G 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. 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

  30. 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.

  31. 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).

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

  33. 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.

  34. 0 1 2 3 0 0 1 1 1 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 0 1 2 3 0 0 0 1 1 1 1 0 1 1 2 0 0 0 0 3 0 0 0 0 0 1 2 3 0 0 0 0 1 1 1 0 0 1 2 1 1 0 1 3 0 0 0 0 0 1 2 3 0 0 0 0 0 1 1 0 0 0 2 1 1 0 0 3 1 1 1 0 (a) (b) (d) (d) 0 1 2 3 0 0 0 0 0 1 1 0 0 0 2 1 1 0 1 3 1 1 0 0 0 1 2 3 0 0 0 0 0 1 1 0 1 1 2 1 0 0 1 3 1 0 0 0 0 1 2 3 0 0 1 1 1 1 0 0 1 1 2 0 0 0 1 3 0 0 0 0 0 1 2 3 0 0 1 1 0 1 0 0 1 0 2 0 0 0 0 3 1 1 1 0 (d) (f) (g) (h) 0 1 2 3 0 0 1 0 0 1 0 0 0 0 2 1 1 0 1 3 1 1 0 0 0 1 2 3 0 0 1 0 0 1 0 0 0 0 2 1 1 0 0 3 1 1 1 0 (i) (j) 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:

  35. 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.

  36. 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: 4 7 0 7 1 0 1 0 1 2 1 2 7 1 2 2 1 0 7 4 7 2 0 7 4 Implementación LRU con pila a b pila antes de a pila después de b

  37. 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 Algoritmos deconteo

  38. 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 Algoritmo colocación páginas en buffers

  39. 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

  40. 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 00000000 10000000 10000000 01000000 00000000 00000000 10000000 11000000 10000000 01000000 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 Página 10000000 11000000 11100000 11110000 01111000 11000000 01100000 10110000 00100000 00010000 10001000 10000000 01000000 00100000 01100000 10110000 01011000 10100000 01010000 00101000 (a) (b) (c) (d) (e)

  41. 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 Asignación de marcos

  42. 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 Número mínimo de marcos

  43. 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: Algoritmos de asignación

  44. Se debe ajustar aide 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 = 4 (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

  45. 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 Asignación global o local

  46. 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

  47. En un espacio unidimensional de direcciones con tablas crecientes, una tabla puede encimarse con otra. Espacio de direcciones virtuales La tabla de símbolos se Tabla de ha encimado en la tabla símbolos 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

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

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

More Related