Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República
Instituto de Computación Curso 2010
Veremos
Memoria virtual
1
Recordemos: Jerarquía de Memoria Nivel Superior Registros
Más rápido
Instr. Operandos Cache Bloques Memoria Páginas Disco Archivos Cinta
Más grande Nivel Inferior
Motivación
Nuevamente, queremos una cantidad y costo de almacenamiento similar al del nivel inferior (disco en este caso), con un rendimiento similar al del nivel superior (memoria principal en este caso)
Se pueden ejecutar procesos más grandes que la memoria física disponible. Antiguamente esto era responsabilidad del programador (overlays)
Es posible ejecutar simultáneamente muchos procesos aunque la suma de sus requerimientos de memoria exceda la memoria principal disponible.
Menos riesgo de CPU ociosa esperando por operaciones de E/S
Algunas arquitecturas brindan herramientas para implementar eficientemente este nivel de la jerarquía de memoria
2
Paginación
Memoria principal dividida en frames (marcos) Procesos (instrucciones y datos) divididos en páginas Frames y páginas de igual tamaño
Administrar bloques de tamaño variable es costoso y conduce a fragmentación
El sistema operativo administra la correspondencia entre frames y páginas
Cada proceso direcciona sus datos e instrucciones a través de direcciones lógicas, relativas al inicio del proceso • Dirección lógica = página + desplazamiento
El procesador traduce direcciones lógicas a direcciones físicas utilizando una tabla de páginas, que es administrada por el sistema operativo • Dirección física = frame + desplazamiento
Direcciones lógicas y físicas
3
Memoria Virtual
Paginación a demanda
No se requiere que todas las páginas de un proceso estén en memoria principal
Se cargan bajo demanda
El mecanismo funciona transparentemente al programador, que direcciona mediante direcciones virtuales o lógicas.
• Procesos potencialmente más grande que memoria principal • Se acelera el inicio de ejecución de procesos
Fallo de Página
Página requerida no está en memoria Sistema operativo debe traer la página nueva (swap in) Puede ser necesario descartar una página para hacer lugar (swap out) Seleccionar página a descartar basándose en la historia reciente
Mapa de Direcciones
V = {0, 1, . . . , n - 1} espacio virtual de direcciones n>m M = {0, 1, . . . , m - 1} espacio físico de direcciones Existe una función MAP ( V --> M + {vacío} ) que toma los valores: MAP(a) = a‘
si el dato apuntado por la dirección virtual a está presente en la dirección física a' tal que a' pertenece a M
MAP(a) = vacío si el dato apuntado por la dirección virtual a no está presente en M fallo por falta de ítem a Espacio V manejador del fallo Procesador
a
Mecanismo Traslación de Direcc.
0
Memoria Principal
Memoria Secundaria
a'
dirección física
Responsabilidad del sistema operativo
4
Estructura de la Tabla de Páginas (1/2)
Tabla de páginas
Tamaño variable, potencialmente muy grande. Ej. para 4GB con páginas de 512 bytes, 232/29=223 páginas
Traducción de dirección virtual a dirección física
No se puede alojar en la CPU -> en memoria
Pero se debe limitar el uso de memoria principal para almacenar Tablas de Páginas….
…en general se almacenan en memoria virtual Algunas arquitecturas organizan las tablas de páginas en niveles (directorio / tabla de páginas) Tabla invertida
Estructura de la Tabla de Páginas (2/2)
Invertida: se utiliza un hash para indizar en la tabla
Tabla de hash usa encadenamiento (chaining)
Recordar: n> m n bits
Ventaja: porción fija de memoria real para tablas
Una entrada para cada frame de memoria física m bits
En principio, cada referencia a memoria virtual causa dos accesos a memoria física
Lectura de la tabla de páginas para obtener dirección física Acceso a la dirección física obtenida
Para acelerar el acceso se utiliza una cache especial para la tabla de páginas
TLB Menor tiempo de acceso, menor tiempo de traslación
El uso de TLBs permite reducir el #ciclos/accesos a la cache mediante la superposición del acceso a la cache con el acceso al TLB
Operación del TLB y el Cache
Dirección virtual
Bits más significativos usados para buscar en el TLB Bits menos significativos índice en la cache
Acceso superpuesto al TLB y la cache funciona solamente si los bits de direcciones usados como índice en la cache no cambian como resultado de la traslación de DV
Caches con pocas líneas o conjuntos / tamaño de página grande
6
Fallo de Página
Página no está residente en memoria El Hardware detecta la situación y genera una trap, atendida por el sistema operativo
elegir una página a descartar (posiblemente salvándola en disco (bit dirty)) traer la página del disco actualizar la tabla de páginas retornar el control al programa para reintentar el acceso a memoria
Diseño de un Sistema de Memoria Virtual
Tamaño de los bloques de información que son transferidos desde almacenamiento secundario hacia memoria principal (tamaño de frames/páginas)
Qué región de memoria principal debe alojar el nuevo bloque
política de alojamiento
Si la memoria principal está llena y es necesario traer un nuevo bloque, se debe liberar espacio
política de reemplazo Bit de “acceso”
7
Tamaño de Página
Páginas pequeñas aprovechan mejor los frames de memoria física (menos fragmentación interna) Páginas más grandes
Tablas de páginas más pequeñas Posibilita operativa simultánea de cache y TLB Amortizan mejor el costo de acceso a almacenamiento secundario (pero se corre el riesgo de transferir información innecesaria) Para un tamaño de TLB fijo, páginas más grandes implican una mayor cantidad de direcciones virtuales que se traducen mediante TLB
Thrashing
Demasiado tiempo invertido en operaciones de swap y poco “trabajo real” del sistema
Soluciones
Más memoria real Menos procesos en ejecución Buenos algoritmos de reemplazo (sistema operativo)
8
Por qué memoria virtual?
Generalidad
Administración de bloques de tamaño variable es costoso y lleva a fragmentación
Protección
posibilidad de correr programas más grandes que el tamaño de la memoria física
Manejo del Almacenamiento
aplicar permisos diferenciados a regiones del espacio de direcciones (R/O, Ex, . . .)
Flexibilidad
porciones del programa pueden ubicarse en cualquier lado, sin relocalización
Por qué memoria virtual?
retener en memoria sólo las porciones de código/datos que se necesiten
E/S Concurrente
(2/2)
Eficiencia del almacenamiento
(1/2)
ejecución de otros procesos mientras se carga/descarta una página
Rendimiento
impacto en multiprogramación
9
Una idea fija: mejorar el rendimiento
Algunas ideas que ya revisamos
Incrementar la frecuencia del reloj • Pero…los tiempos de acceso a memoria y E/S pueden ser un cuello de botella…
Ancho de los registros Ancho del bus de datos
Ancho del bus de direcciones
• Mayor tasa de transferencia • NO mejora la velocidad de acceso pero se puede direccionar más memoria directamente… • Más memoria física, menos swap de memoria virtual