Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJosé Francisco Caballero Hidalgo Modificado hace 8 años
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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.