La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad Central de Venezuela Memoria Virtual.

Presentaciones similares


Presentación del tema: "Universidad Central de Venezuela Memoria Virtual."— Transcripción de la presentación:

1 Universidad Central de Venezuela Memoria Virtual

2 2/87 Implementación de la tabla de páginas La tabla de páginas se mantiene en memoria El Registro Base de la Tabla de Págians (RBTP) apunta a la tabla de páginas El Registro Límite de la Tabla de Páginas (RLTP) indica el tamaño de la tabla de páginas

3 3/87 Implementación de la tabla de páginas En este esquema cada acceso a datos/instrucciones requiere dos accesos a memoria. Uno para la tabla de páginas y otro para el dato/instrucción. El problema de los dos accesos a memoria puede ser resuelto mediante el uso de un cache especial de búsqueda rápida en hardware denominado memoria asociativa o búferes de traducción anticipada (TLBs)

4 4/87 Implementación de la tabla de páginas Algunas TLBs almacenan identificadores del espacio de direcciones (ASIDs - address- space identifiers) en cada entrada del TLB – identificando unívocamente a cada proceso para proveer entradas en la TLB de varios procesos distintos de forma simultánea. Adicionalmente proporciona mecanismos de protección del espacio de direcciones correspondiente a ese proceso

5 5/87 Associative Memory Memoria asociativa – búsqueda en paralelo Traducción de la dirección (p, d)  Si p esta en un registro asociativo, se obtiene el # Marco  De otra forma se obtiene el # Marco desde la tabla de páginas en memoria # Página# Marco

6 6/87 Hardware de paginación con TLB

7 7/87 Tiempo de acceso efectivo Búsqueda asociativa =  unidades de tiempo Asumiendo que el tiempo de un ciclo de memoria es de 1 microsegundo Tasa de aciertos – porcentaje de veces que un número de página se encuentra en los registros asociativos; tasa relacionada al número de registros asociativos Tasa de aciertos =  Tiempo de Acceso Efectivo (TAE) TAE = (1 +  )  + (2 +  )(1 –  ) = 2 +  – 

8 8/87 Protección de Memoria La protección de memoria es implementada asociando un bit de protección con cada marco Un bit Valido-invalido adjuntado a cada entrada en la tabla de páginas:  “valido” indica que la página asociada se encuentra en el espacio de direcciones lógicas del proceso, y por tanto es una página legal  “invalido” indica que la página no esta en el espacio de direcciones lógicas del proceso

9 9/87 Bit Válido (v) o Invalido (i) en una tabla de páginas

10 10/87 Páginas compartidas Código compartido  Una copia del código (reentrante) de solo lectura compartida entre los procesos (i.e., editores de texto, compiladores, sistemas de ventanas)  El código compartido debe aparecer en la misma posición en el espacio de direcciones lógicas de todos los procesos Código y datos privados  Cada proceso mantiene una copia separada del código y los datos  Las páginas para el código privado y los datos pueden aparecer en cualquier parte dentro del espacio de direcciones lógicas

11 11/87 Ejemplo de páginas compartidas

12 12/87 Estructura de la tabla de páginas Paginación Jerárquica Tablas de Páginas Hash Tablas de Páginas Invertidas

13 13/87 Tablas de Páginas Jerárquicas Se divide el espacio de direcciones lógico en múltiples tablas de páginas Una técnica simple es una tabla de páginas de dos niveles

14 14/87 Esquema de tabla de páginas en dos niveles

15 15/87 Ejemplo de paginación de dos niveles Una dirección lógica (sobre una máquina de 32 bits con tamaño de página de 4K) es dividida en:  un número de página que consiste de 20 bits  un desplazamiento de página que consiste de 12 bits Puesto que la tabla de páginas está paginada, el número de páginas se divide a su vez en:  un número de página de 10-bit  un desplazamiento de página de 10 bit Así, una dirección lógica tendría la estructura siguiente: where p i is an index into the outer page table, and p 2 is the displacement within the page of the outer page table número de página desplazamiento de página pipi p2p2 d 10 12

16 16/87 Esquema de traducción de direcciones

17 17/87 Esquema de páginación de tres niveles

18 18/87 Tablas de páginas hash Comunes en espacios de direcciones > 32 bits El número de página virtual se utiliza como valor hash dentro de la tabla de páginas. Esta tabla de páginas contiene una cadena de elementos que tienen como valor hash a la misma posición. Los números de página virtual son comparados en esta cadena en búsqueda de una correspondencia. Si una correspondencia es encontrada, el marco físico asociado es extraído.

19 19/87 Tablas de páginas hash

20 20/87 Tabla de páginas invertida Una entrada por cada página real de memoria Cada entrada consiste de la dirección virtual de la página almacenada en esa posición de memoria real, con información acerca del proceso que posee dicha página (ASID, pid) Decrementa la necesidad de memoria para almacenar cada tabla de páginas, pero incrementa el tiempo necesario para buscar en la tabla cuando una referencia a página ocurre Usa una tabla hash para limitar la búsqueda a una — o a lo sumo unas pocas — entradas de la tabla de páginas

21 21/87 Arquitectura de la tabla de páginas invertida

22 22/87 Fundamentos de la Memoria Virtual Memoria Virtual – separación de la memoria lógica del usuario de la memoria física.  Sólo una parte del programa necesita estar en la memoria para la ejecución  El espacio de direcciones lógicas puede por lo tanto se mucho más grande que el espacio de direcciones físicas  Permite espacios de direcciones que puedan ser compartidos por varios procesos  Permite una creación de procesos más eficiente La memoria virtual puede ser implementada por medio de:  Paginación por demanda  Segmentación por demanda

23 23/87 Memoria virtual que es más grande que la memoria física 

24 24/87 Espacio de direcciones virtuales

25 25/87 Librerías compartidas usando memoria virtual

26 26/87 Paginación por demanda Traer una página a memoria solo cuando es necesario  Menos necesidad de E/S  Menos necesidad de memoria  Respuesta más rápida  Más usuarios La página es necesaria  es referenciada  referencia inválida  abortar  no está en memoria  traer a memoria Intercambiador perezoso (Lazy swapper) – nunca intercambia una página a la memoria a menos que la página sea necesitada  El intercambiador que trata con páginas es paginador

27 27/87 Transferencia de una Memoria Paginada a Espacio de disco Contiguo

28 28/87 Bit Válido-Inválido Con cada entrada de la tabla de páginas se encuentra asociado un bit de válido – inválido (v  en memoria, i  no en memoria) Inicialmente el bit válido–inválido es establecido a i en todas las entradas Ejemplo de una vista de la tabla de páginas: During address translation, if valid–invalid bit in page table entry is I  page fault v v v v i i i …. # Marcobit válido-inválido tabla de páginas

29 29/87 Tabla de páginas cuando algunas páginas no estan en memoria principal

30 30/87 Fallo de página Si hay una referencia a una página, y es la primera referencia a la misma esto lanzará una interrupción al SO: fallo de página 1. El SO revisa en otra tabla interna (PCB) para decidir:  Referencia inválida  abortar  No está en memoria 2. Obtiene un marco libre 3. Intercambia la página dentro del marco asignado 4. Se reestablece la tabla interna y la tabla de páginas para indicar el nuevo estado 5. Se establece el bit de validación = v 6. Se reinicia la instrucción que causó el fallo de página

31 31/87 Fallo de página (Cont.) Reiniciar instrucción  mover bloque  auto incrementar/decrementar la posición

32 32/87 Pasos en el manejo de un fallo de página

33 33/87 Desempeño de la paginación por demanda Tasa de fallo de página 0  p  1.0  si p = 0 no hay fallos de página  si p = 1, cada referencia es un fallo Tiempo de acceso efectivo (TAE) TAE = (1 – p) x tiempo de acceso a memoria + p (servir la interrupción de fallo de página + intercambiar la página hacia afuera + intercambiar la página hacia adentro + reiniciar el proceso )

34 34/87 Ejemplo de paginación por demanda Tiempo de acceso a memoria = 200 nanosegundos Tiempo promedio de servicio a un fallo de página = 8 milisegundos TAE = (1 – p) x 200 + p (8 milisegundos) = (1 – p) x 200 + p x 8,000,000 = 200 + p x 7,999,800 Si solo un acceso de cada 1.000 provoca un fallo de página, entonces TAE = 8.2 microseconds. Esto significa una ralentización en un factor de 40!!

35 35/87 Creación de procesos La memoria virtual permite otros beneficios durante la creación de procesos: - Copia durante la escritura - Archivos mapeados en memoria (posteriormente)

36 36/87 Copia durante la escritura La copia durante la escritura permite que los procesos padre e hijo compartan inicialmente las mismas páginas en memoria Si alguno de los procesos modifica una página compartida, solo entonces la página es copiada Permite una creación de procesos más eficiente ya que sólo las páginas modificadas son copiadas Las páginas libres son asignadas desde un conjunto compartido (pool) de páginas rellenas de ceros

37 37/87 Antes de que el proceso 1 modifique la página C

38 38/87 Después de que el proceso 1 modifique la página C copia de página C

39 39/87 ¿Qué sucede si no hay un marco libre? Sustitución de páginas – encontrar alguna página en memoria, pero no en uso realmente, e intercambiarla hacia afuera  algoritmo  desempeño – se quiere un algoritmo que resulte en el número mínimo de fallos de página La misma página puede ser traída dentro de la memoria varias veces

40 40/87 Sustitución de páginas Impedir la sobreasignación de memoria modificando la rutina de servicio de fallo de página para incluir sustitución de páginas Usar el bit modify (sucio) para reducir la sobrecarga por transferencias de páginas – solo las páginas modificadas son escritas al disco La sustitución de páginas completa la separación entre la memoria lógica y la memoria física – una gran memoria virtual puede ser provista sobre una pequeña memoria física

41 41/87 Necesidad de la sustitución de páginas

42 42/87 Sustitución básica de páginas 1. Hallar la ubicación de la página deseada dentro del disco 2. Localizar un marco libre: - Si hay un marco libre, utilizarlo - Si no hay ningún marco libre, utilizar un algoritmo de sustitución de páginas para seleccionar un marco victima 3. Traer la página deseada dentro del marco (recien) libre; actualizar las tablas de páginas y de marcos 4. Reiniciar el proceso

43 43/87 Sustitución de páginas

44 44/87 Algoritmos de sustitución de páginas Se quiere la más baja tasa de fallo de páginas Se evalua el algoritmo ejecutándolo sobre una cadena particular de referencias a memoria (cadena de referencia) y calculando el número de fallos de página sobre dicha cadena En todos nuestros ejemplos, la cadena de referencia es 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

45 45/87 Gráfica de fallos de página vs. el número de marcos

46 46/87 Algoritmo First-In-First-Out (FIFO) Cadena de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 marcos (3 paginas pueden estar en memoria al mismo tiempo por proceso) 4 marcos B elady’s Anomaly: more frames  more page faults 1 2 3 1 2 3 4 1 2 5 3 4 9 fallos de página 1 2 3 1 2 3 5 1 2 4 5 10 fallos de página 4 43

47 47/87 Sustitución de páginas FIFO

48 48/87 FIFO ilustrando la anomalía de Belady

49 49/87 Algoritmo óptimo Reemplazar la página que no vaya a ser utilizada durante el período de tiempo más largo Ejemplo con 4 marcos 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 How do you know this? Used for measuring how well your algorithm performs 1 2 3 4 6 fallos de páginas 4 5

50 50/87 Sustitución óptima de páginas

51 51/87 Algoritmo LRU (least recently used – menos recientemente utilizada) Cadena de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 Implementación con contadores  Cada entrada en la tabla de páginas tiene un contador; cada vez que la página es referenciada, se copia el valor del reloj en el contador  Cuando una página necesita ser sustituida, se realiza una búsqueda sobre los contadores para determinar cuál debe ser cambiada 5 2 4 3 1 2 3 4 1 2 5 4 1 2 5 3 1 2 4 3

52 52/87 Sustitución de páginas LRU

53 53/87 Algoritmo LRU (Cont.) Implementación de pila – mantener una pila de números de página en una lista doblemente enlazada:  Página referenciada: se mueve al tope de la pila requiere modificar seis apuntadores (peor caso)  No se necesita buscar para sustituir

54 54/87 Uso de una pila para registrar las referencias más recientes a las páginas

55 55/87 Algoritmos de aproximación a LRU Bit de referencia  Con cada página se asocia un bit, inicialmente = 0  Cuando la página es referenciada el bit se establece a 1  Se sustituye aquella que es 0 (si existe alguna) Sin embargo, no podemos conocer el orden de utilización de las páginas Segunda oportunidad  Se necesita el bit de referencia  Se implementa normalmente usando una cola circular (alg. del reloj)  Si la página ha ser reemplazada (en el orden del reloj) posee el bit de referencia = 1 entonces: establecer el bit de referencia a 0 mantener la página en memoria reemplazar la siguiente página (en el orden del reloj), sujeto a las mismas reglas

56 56/87 Algoritmo de sustitución de páginas de segunda oportunidad (reloj)

57 57/87 Algoritmos basados en contador Mantener un contador de el número de referencias que han sido realizadas a cada página Algoritmo LFU (least frequently used, menos frecuentemente utilizada): reemplaza la página con el contador más pequeño Algoritmo MFU (most frequently used, más frecuentemente utilizada): se basa en el argumento de que la página que tenga el valor del contador más pequeño acaba probablemente de ser cargada en memoria y todavía tiene que ser utilizada

58 58/87 Asignación de marcos Cada proceso necesita un número mínimo de páginas Ejemplo: IBM 370 – 6 páginas para manejar la instrucción SS MOVE:  la instrucción es de 6 bytes, puede abarcar 2 páginas  2 páginas para manejar desde  2 páginas para manejar hasta Dos esquemas principales de asignación  asignación fija  asignación por prioridad

59 59/87 Asignación fija Asignación equitativa – Por ejemplo, si hay 100 marcos y 5 procesos, darle a cada proceso 20 marcos. Asignación proporcional – Asignar de acuerdo al tamaño de los procesos

60 60/87 Asignación por prioridad Usar un esquema de asignación proporcional utilizando prioridades en lugar del tamaño Si el proceso P i genera un fallo de página,  seleccionar para la sustitución uno de sus marcos  seleccionar para la sustitución un marco de un proceso con el número de prioridad inferior

61 61/87 Asignación global vs. local Sustitución global – el proceso selecciona un marco de reemplazo del conjunto de todos los marcos; un proceso puede tomar un marco de otro Sustitución local – cada proceso selecciona desde solo su propio conjunto de marcos asignados

62 62/87 Sobrepaginación (Thrashing) Si un proceso no tiene “suficientes” páginas, la tasa de fallos de página es muy alta. Esto conduce a:  baja utilización del CPU  el SO piensa que es necesario incrementar el grado de multiprogramación  otro proceso es añadido al sistema Sobrepaginación  un proceso está ocupado intercambiando páginas adentro y afuera

63 63/87 Sobrepaginación (Cont.)

64 64/87 Paginación por demanda y sobrepaginación ¿Por qué la paginación por demanda funciona? Modelo de localidad  Los procesos migran desde una localidad a otra  Las localidades pueden solaparse ¿Por qué la sobrepaginación ocurre?  tamaño de localidad > tamaño total de memoria

65 65/87 Localidad en un patrón de referencias a memoria

66 66/87 Modelo de conjunto de trabajo   ventana del conjunto de trabajo  un número fijo de referencias a página Ejemplo: 10.000 instrucciones WSS i (conjunto de trabajo del Proceso P i ) = número total de páginas referenciadas en el más reciente  (varia en el tiempo)  si  es demasiado pequeño no abarcará la localidad completa  si  es demasiado grande abarcará varias localidades  si  =   abarcará el programa entero D =  WSS i  total de marcos demandados si D > m  Sobrepaginación Política: si D > m, entonces suspender uno de los procesos

67 67/87 Modelo de conjunto de trabajo

68 68/87 Guardar la pista del conjunto de trabajo Aproximar con una interrupción de temporizador a intervalos fijos + un bit de referencia Ejemplo:  = 10.000  Interrupción de temporizador después de cada 5000 unidades de tiempo  Mantener en memoria 2 bits para cada página  Siempre que haya una interrupción de temporizador copiar y establecer los valores de todos los bits de referencia a 0  Si uno de los bits de memoria es = 1  la página está en el conjunto de trabajo ¿Por qúé esto no es completamente exacto? Mejora = 10 bits e interrumpir cada 1000 unidades de tiempo

69 69/87 Esquema de frecuencia de fallos de página Establecer un tasa de fallos de página “aceptable”  Si la tasa actual es demasiado baja, el proceso pierde el marco  Si la tasa actual es demasiado alta, el proceso obtiene el marco

70 70/87 Archivos mapeados en memoria La E/S de archivos mapeados en memoria permite que la E/S de archivos sea tratada como accesos rutinarios a memoria por medio de correspon- der (mapear) un bloque de disco sobre una página en memoria Un archivo se lee inicialmente utilizando paginación por demanda. Una porción del tamaño de una página del archivo es leido desde el sistema de archivos dentro de una página física. Las subsecuentes lecturas/escrituras hacia/desde el archivo son tratadas como accesos ordinarios a memoria. Simplifica el acceso al archivo al manipular la E/S al archivo a través de la memoria en lugar de las llamadas al sistema read() write() También permite a diversos procesos mapearse al mismo archivo permitiendo que las páginas en memoria sean compartidas

71 71/87 Archivos mapeados en memoria

72 72/87 Memoria compartida en Windows utilizando E/S mapeada en memoria

73 73/87 Asignación de la memoria del kernel Se trata de forma diferente a la memoria de usuario A menudo se asigna desde un conjunto compartido (pool) de memoria libre  El kernel solicita memoria para estructuras de tamaños variables  Alguna memoria del kernel necesita estar ubicada en forma contigua

74 74/87 Descomposición binaria (sistema de amigos – buddy system) Asigna memoria desde segmentos de tamaño fijo que consisten de páginas físicamente contiguas La memoria es asignada usando un asignador de potencias de 2  Se satisfacen las solicitudes en unidades cuyo tamaño es una potencia de 2  La solicitudes cuyas unidades no tengan el tamaño apropiado se redondean hasta la siguiente potencia de 2 más alta  Cuando se requiere una asignación más pequeña que la que esta disponible, el segmento actual se divide en dos subsegmentos de la siguiente potencia de 2 más baja Se continua hasta que un segmento de tamaño apropiado se encuentra disponible

75 75/87 Descomposición binaria

76 76/87 Asignación de franjas Estrategia alternativa Una franja esta formada por una o más páginas físicamente contiguas Una cache consiste de una o más franjas Una única cache por cada estructura de datos del kernel distinta  Cada cache se rellena de objetos – instancias de la estructura de datos Cuando se crea una cache, se rellena con un cierto número de objetos marcados como libres Cuando es necesario almacenar información en dichas estructuras, los objetos asignados de la cache se marcan como usados Si una franja está llena de objetos usados, el siguiente objeto es asignado desde una franja vacía  Si no hay franjas vacías, una nueva franja es asignada Beneficios incluyen la no pérdida de memoria debido a la fragmentación, y la rápidez en satisfacer las solicitudes de memoria

77 77/87 Asignación de franjas

78 78/87 Otras consideraciones – Prepaginación Prepaginación  Para reducir el gran número de fallos de página que ocurren al inicio de un proceso  Se prepaginan todas o algunas de las páginas que un procesos puede necesitar, antes que ellas sean referenciadas  Pero si se prepaginan páginas que no son usadas, se desperdicia E/S y memoria  Asuma que s páginas son prepaginadas y una fracción α de esas páginas son usadas ¿Es el costo de s*α fallos de página ahorrados > o < que el costo de prepaginar s*(1- α) páginas innecesarias? si α es cercano a cero  no es aconsejable la prepaginación

79 79/87 Otras consideraciones – Tamaño de página La selección del tamaño de página debe ser tomada en consideración:  fragmentación  tamaño de la tabla de páginas  sobrecarga por E/S  localidad

80 80/87 Otras consideraciones – Alcance de la TLB Alcance de la TLB – La cantidad de memoria accesible desde la TLB Alcance de la TLB = (tamaño de la TLB) X (tamaño de la página) Idelamente, el conjunto de trabajo de cada proceso esta almacenado en la TLB  De otra forma existe un alto grado de fallos de página Incrementar el tamaño de página  Esto puede conducir a un aumento de la fragmentación ya que no todas las aplicaciones requieren un tamaño de página grande Proveer múltiples tamaños de página  Esto permite las aplicaciones que requieren tamaños de página más grandes tengan la oportunidad de usarlos sin un aumento de la fragmentación

81 81/87 Otras consideraciones – Estructura de los programas Estructura de los programas  Int[128,128] data;  Cada fila es almacenada en una página  Programa 1 for (j = 0; j <128; j++) for (i = 0; i < 128; i++) data[i,j] = 0; 128 x 128 = 16,384 fallos de página  Programa 2 for (i = 0; i < 128; i++) for (j = 0; j < 128; j++) data[i,j] = 0; 128 fallos de página

82 82/87 Otras consideraciones – Interbloqueo de E/S Interbloqueo de E/S – Las páginas deben algunas veces ser bloqueadas en memoria Considerar páginas de E/S que son usadas para copiar un archivo desde un dispositivo. Éstas deben ser bloqueadas para evitar que sean seleccionadas para ser sacadas por un algoritmo de sustitución de páginas

83 83/87 Razón por la cual los marcos utilizados para E/S deben permanecer en memoria

84 84/87 Ejemplos de Sistemas Operativos Windows XP Solaris

85 85/87 Windows XP Utiliza paginación por demanda con clustering. El clustering carga, junto a la que genera el fallo, las páginas que la rodean. Los procesos tienen asignados un mínimo del conjunto de trabajo y máximo del conjunto de trabajo El mínimo del conjunto de trabajo es el número mínimo de páginas que se garantiza que el proceso tendrá en memoria A un proceso se le puede asignar tantas páginas como indique su máximo del conjunto de trabajo Cuando la cantidad de memoria libre cae por debajo de un umbral, se realiza un ajuste automático del conjunto de trabajo para restaurar el valor por encima del umbral El ajuste del conjunto de trabajo elimina páginas de procesos que le han asignado más páginas de las que indica mínimo del conjunto de trabajo

86 86/87 Solaris Maintains a list of free pages to assign faulting processes Lotsfree – threshold parameter (amount of free memory) to begin paging Desfree – threshold parameter to increasing paging Minfree – threshold parameter to being swapping Paging is performed by pageout process Pageout scans pages using modified clock algorithm Scanrate is the rate at which pages are scanned. This ranges from slowscan to fastscan Pageout is called more frequently depending upon the amount of free memory available

87 87/87 Solaris 2 Page Scanner


Descargar ppt "Universidad Central de Venezuela Memoria Virtual."

Presentaciones similares


Anuncios Google