Memoria Principal - cursos.delaf.cl · Operating System Concepts – 8th Edition 8.4 Silberschatz,...
Transcript of Memoria Principal - cursos.delaf.cl · Operating System Concepts – 8th Edition 8.4 Silberschatz,...
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Memoria Principal
8.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Administración de Memoria
Antecedentes
Intercambio
Asignación de memoria contigua
Paginación
Estructura de la tabla de páginas
Segmentación
8.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Objetivos
Proveer de distintas descripciones de formas de organizar la memoria física
Discutir técnicas de administración de memoria, incluyendo paginación y segmentación
8.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Antecedentes
Programa debe ser traído (desde el disco) a la memoria y ser ubicado como proceso para su ejecución
Memoria principal y registros son solo de almacenamiento, la CPU puede accederlas directamente
La unidad de memoria solo ve un flujo de direcciones y solicitudes de lectura, o bien direcciones, datos y solicitudes de escritura
Registros se accesan en un ciclo de CPU (o menos)
La memoria principal puede tomar varios ciclos para ser accedida
Cache se sitúa entre la memoria principal y los registros de la CPU
Protección de la memoria es requerida para asegurar una correcta operación
8.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Registro Base y Límite
Un par de registros de base y límite definen el espacio de direcciones lógicos
8.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Protección usando Registros Base y Límite
8.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Enlace de direcciones
Existe Inconveniente de tener como primera dirección física de un programa de usuario la dirección 0000
¿Cómo esto puede ser un problema?
Además, las direcciones son representadas de diferentes maneras en diferentes etapas de la vida del programa
Las direcciones en el código fuente usualmente son simbólicas
Direcciones del código compilado se enlazan a direcciones reubicables
i.e. “14 bytes desde el comienzo de este módulo”
Enlazador (linker) o cargador (loader) enlazarán direcciones reubicables a direcciones absolutas
i.e. 74014
Capa mapa enlaza un espacio de direcciones a otro
8.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Enlace de Instrucciones y Datos a Memoria
El enlace de instrucciones y datos a direcciones de memoria puede suceder en 3 etapas diferentes
Tiempo de compilación: Si la posición de la memoria es conocida a priori, código absoluto puede ser generado; se deberá recompilar si la locación cambia
Tiempo de carga: Debe generar código reubicable si la locación de la memoria no es conocida en tiempo de ejecución
Tiempo de ejecución: enlace postergado hasta que se ejecuta el proceso, esto si el proceso puede ser movido durante su ejecución desde un segmento de memoria a otro
Necesita suporte del hardware para hacer el mapeo de las direcciones (e.g., registro base y límite)
8.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Pasos de procesamiento de un programa
8.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Direcciones Lógicas vs Físicas
El concepto de espacio de direcciones lógicas vinculado a un espacio de direcciones físicas es fundamental para la gestión adecuada de la memoria
Direcciones lógicas – generadas por la CPU; también conocidas como direcciones virtuales
Direcciones físicas – direcciones que son vistas por la unidad de memoria
Direcciones lógicas y físicas son las mismas en tiempo de compilación y tiempo de carga; difieren en tiempo de ejecución
Espacio de direcciones lógicas es el conjunto de todas las direcciones lógicas generadas por un programa
Espacio de direcciones físicas es el conjunto de todas las direcciones físicas generadas por un programa
8.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Unidad de administración de memoria
“Memory Management Unit (MMU)” es el dispositivo de hardware que durante el tiempo de ejecución mapea las direcciones virtuales a físicas
Existen diferentes métodos, los cuales serán vistos en este capítulo
Considerar un esquema simple donde el valor del registro de reubicación es añadido a cada una de las direcciones generadas por el proceso del usuario cuando es enviado a la memoria
Registro base ahora se llama registro de reubicación (relocation register)
MS-DOS en Intel 80x86 usaba registros de reubicación
El programa de usuario trabaja con direcciones lógicas; este nunca ve la dirección física
Enlace en tiempo de ejecución ocurre cuando una referencia es hecha a una locación en la memoria
Direcciones lógicas están enlazadas a direcciones físicas
8.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Usando el registro de reubicación
8.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Carga dinámica
Rutinas no son cargadas hasta que son llamadas
Mejor uso del espacio de memoria; rutinas no usadas nunca serán cargadas
Todas las rutinas se mantienen en disco
Útil cuando grandes cantidades de código es necesario para manejar casos poco frecuentes
No se requiere soporte especial de parte del Sistema Operativo
Implementado a través del diseño del programa
Sistema operativo ayuda entregando las bibliotecas para implementar la carga dinámica
8.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Enlace dinámico
Enlace estático – bibliotecas del sistema y el código del programa son combinados por el cargador en una imágen binaria del programa
Enlace dinámico – enlace es pospuesto hasta el tiempo de ejecución
Pequeñas piezas de código, colilla (stub), usadas para ubicar las rutinas de las librerías en la memoria
Stub se reemplaza con la dirección de la rutina, y la ejecuta
Sistema operativo verifica si la rutina esta en el espacio de memoria del proceso
Si no esta en el espacio de memoria, la agrega al espacio
Enlace dinámico es particularmente útil para bibliotecas
Sistema también conocido como bibliotecas compartidas
8.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Intercambio
Un proceso puede ser intercambiado temporalmente fuera de memoria a un almacén de respaldo, y luego puesto nuevamente en memoria para continuar su ejecución
Espacio total de memoria de los procesos puede exceder la memoria física Almacen de respaldo – disco lo suficientemente rápido y grande como para aceptar copias de
todas las imagenes de memoria de los usuarios; debe proveer acceso directo a dichas imagenes de la memoria
Roll out, roll in – variante de intercambio usada por el algoritmo de planificación basado en prioridad; procesos de baja prioridad son intercambiados fuera de la memoria de tal forma que procesos con prioridad superior puedan ser cargados y ejecutados
La mayor parte del tiempo de intercambio es tiempo de transferencia; el tiempo total de transferencia es directamente proporcional a la cantidad de memoria intercambiada
Sistema mantiene una cola de procesos listos que tienen una imagen de memoria en disco ¿Es necesario que el proceso de intercambio vuelva a colocar la imagen de la memoria en las
mismas direcciones físicas? Depende del método de enlace utilizado
Enlace en tiempo de ejecución se comportará diferente a enlace en tiempo de compilación Versiones modificadas de intercambio encontradas en los diferentes sistemas (i.e., UNIX, Linux,
and Windows)
Intercambio normalmente desactivado
Se inicia si se alcanza el umbral de memoria asignada
Desactivado una vez la demanda de memoria disminuye el umbral
8.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Vista esquemática del intercambio
8.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Tiempo involucrado para hacer intercambio
Si el siguiente proceso a poner en la CPU no esta en memoria se necesita hacer un intercambio hacia memoria principal
El contexto involucrado en el cambio puede ser alto
Proceso de 100MB que requiere ser intercambiado desde un disco a 50MB/s
Más la latencia del disco de 8 ms
Tiempo de intercambio desde el disco a memoria principal 2008 ms
Más el intercambio de un proceso del mismo tamaño hacia el disco
Tiempo total de 4016ms (> 4 segundos)
Puede ser reducido si se reduce la memoria intercambiada – esto conociendo cuanta memoria realmente será utilizada
Llamadas al sistema utilizadas para informar de uso de memoria al sistema operativo son request memory y release memory
8.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Asignación contigua
La memoria principal suele estar en dos particiones:
La que contiene al sistema operativo, usualmente mantenida en las direcciones bajas de la memoria (al inicio)
Procesos de usuarios son mantenidos en la zona alta de la memoria
Cada proceso contiene una sola sección contigua de memoria
Los registros de reubicación son usados para proteger un proceso de usuario de los otros, y para evitar cambiar código o datos del espacio de memoria del sistema operativo
Registro base contiene el valor de la dirección física más baja
Registro límite contiene el rango de direcciones lógicas – cada dirección lógica debe ser menor al límite del registro
La MMU mapea direcciones lógicas de forma dinámica
8.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Soporte de HW para reubicación
8.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Asignación contigua (Cont.)
Asignación de particiones múltiples
Grados de multiprogramación limitado por el número de particiones
Agujero – bloque de memoria disponible; agujeros de varios tamaños están dispersos a través de la memoria
Cuando un proceso llega, este es asignado a memoria de un agujero lo suficientemente grande como para acomodarlo
Procesos que salen liberan particiones, particiones libres adyacentes son combinadas
Sistema operativo mantiene información sobre:a) particiones asignadas b) particiones libres (agujeros)
OS
process 5
process 8
process 2
OS
process 5
process 2
OS
process 5
process 2
OS
process 5
process 9
process 2
process 9
process 10
8.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Partición dinámica
8.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Partición fija
8.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Asignación de memoria en partición fija
8.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Asignación dinámica de memoria
Primer ajuste (First-fi)t: Asigna el primer agujero donde se satisface la solicitud
Mejor ajuste (Best-fi)t: Asigna el más pequeño que satisface; busca en toda la lista Produce el menor número de restos
Peor ajuste (Worst-fi)t: Asigna el más grande; busca en toda la lista Produce el mayor número de restos
¿Cómo se satisface una solicitud de tamaño N desde una lista de agujeros libres?
¿Cuál es mejor en términos de aprovechamiento del espacio?
8.25 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Fragmentación
Fragmentación externa – memoria total que existe para satisfacer la petición alcanza, pero no esta contigua
Fragmentación interna – memoria asignada puede ser ligeramente superior a la memoria solicitada; esta diferencia de tamaño es memoria interna de una partición, pero que no esta siendo usada
8.26 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Fragmentación (Cont.)
Se reduce la fragmentación externa por compactación
Se mueve la memoria de tal forma de dejar un solo bloque de memoria libre
Compactación es posible solamente si la reubicación es dinámica; y es hecha en tiempo de ejecución
Problemas de I/O
Se deben evitar trabajos en memoria mientras se hacen las operaciones de I/O
Compactación requiere tiempo
Ahora se debe considerar que el almacén de respaldo (disco) tiene los mismos problemas de fragmentación
8.27 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Paginación
El espacio de direccionamiento lógido de un proceso puede ser no contiguo; al proceso se le asigna memoria física cuando ésta última está disponible
Se divide la memoria física en bloques fijos llamados marcos (frames)
Tamaño es potencia de 2, entre 512 bytes y 16 Mbytes
Se divide la memoria lógica en bloques del mismo tamaño llamados páginas (pages)
Se mantiene el registro de todos los marcos libres
Para correr un programa de N páginas se necesitan encontrar N marcos libres para cargar el programa
Se mantiene una tabla de páginas con la traducción de direcciones lógicas a físicas
Almacén de respaldo (disco) también se divide en páginas
Sigue existiendo fragmentación interna.
8.28 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Esquema de traducción de direcciones
Direcciones generadas por la CPU son divididas en:
Número de página (p) – usado como un índice en la tabla de páginas que contiene la dirección base de cada página en la memoria física
Offset de la página (d) – combinado con la dirección base para definir la dirección de memoria física que es enviada a la unidad de memoria
page number page offset
p d
8.29 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
HW de paginación
8.30 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Relación páginas lógicas y físicas
8.31 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Ejemplo de paginación
n=2 m=4 32-byte memory and 4-byte pages
2^n = 4 (frame size) 2^m = 16 (logical address)
8.32 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Marcos libres
Before allocation After allocation
8.33 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Implementación de la Tabla de Páginas
Tabla de páginas es mantenida en memoria principal
Page-table base register (PTBR) apunta a la base de la tabla de páginas
Page-table length register (PTLR) indica el tamaño de la tabla de páginas
En este esquema cada dato/instrucción requiere dos accesos a memoria
Uno para la tabla de páginas y otro para el dato o instrucción
El problema de hacer dos accesos puede ser solucionado mediante el uso de una búsqueda rápida mediante un cache llamado memoria asociativa o translation look-aside buffers (TLBs)
TLBs son tipicamente pequeñas (64 to 1,024 entradas)
Si se busca un valor que la TLB no tiene, el valor es cargado en la TLB para un acceso más rápido la próxima vez
Políticas de reemplazo deben ser consideradas (por ejemplo: no se accede hace X tiempo)
Algunas entradas pueden ser ancladas para tener acceso rápido de forma permanente
8.34 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Memoria Asociativa (TLB)
Memoria asociativa – búsqueda paralela
Traducción de direcciones (p, d)
Si p es un registro asociativo se obtiene el frame
Sino, se obtiene el frame a partir de la tabla de páginas en memoria (y se carga la entrada en la TLB para uso futuro)
Page # Frame #
8.35 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
HW paginación usando TLB
8.36 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Protección de memoria
La protección de la memoria es implementada por la asociación de un bit a cada frame para indicar si el acceso a dicho frame es solo lectura o lectura y escritura
Se podrían agregar más bits para indicar por ejemplo que la página es solo para ejecución u otros permisos que se estimen
Bit válido-inválido asociado a cada entrada en la tabla de páginas:
“válido” indica que la página asociada está en el espacio de direcciones lógicas del proceso
“inválida” indica que la página no está en el espacio de direcciones lógicas del proceso
En caso de violación de una página se producira un “fallo de página” y dicha página se deberá traer desde el almacén de respaldo (disco) a memoria principal para ser utilizada.
8.37 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Bit válido (v) o inválido (i) en la tabla de páginas
8.38 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Páginas compartidas
Código compartido
Una copia de solo lectura del código es compartida entre los procesos (i.e., text editors, compilers, window systems)
Similar a múltiples hebras compartiendo el mismo espacio de proceso
Al igual que con hebras, útil para IPC si las páginas se comparten en modo lectura y escritura
Código y datos privados
Cada proceso mantiene una copia separada de código y datos
8.39 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Ejemplo de páginas compartidas
8.40 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Segmentación
Esquema de administración de la memoria que soporta la vista de la memoria del usuario
Un programa es una colección de segmentos Un segmento es una unidad lógica como:
main program
procedure
function
method
object
local variables, global variables
common block
stack
symbol table
arrays
8.41 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Vista de usuario de un programa
8.42 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Vista lógica de Segmentación
1
3
2
4
1
4
2
3
user space physical memory space
8.43 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Arquitectura de Segmentación
Dirección lógica consiste de la tupla:
<número de segmento, offset/desplazamiento>
Tabla de segmentos – mapea direcciones físicas; cada entrada en la tabla tiene:
base – contiene la dirección de inicio del segmento en la memoria física
límite – especifica el largo del segmento
Segment-table base register (STBR) apunta a la tabla de segmentos en la memoria
Segment-table length register (STLR) indica el número de segmentos usados por un programa
número de segmento s es legal si s < STLR
8.44 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Arquitectura de Segmentación (Cont.)
Protección
Con cada entrada en la tabla de segmento se puede asociar:
Bit de validación Privilegios de lectura, escritura o ejecución
Compartición de código ocurre a nivel de segmento, pudiendo compartir cantidades más pequeñas
Como los segmentos tienen tamaño variable, la asignación de memoria es un problema de asignación de almacenamiento dinámico
Se elimina la fragmentación interna.
8.45 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
HW de Segmentación
8.46 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Ejemplo de Segmentación