administración de memoria: funciones y...
TRANSCRIPT
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Administración de memoria: Funciones yoperaciones
Gunnar Wolf
Facultad de Ingeniería, UNAM
2013-04-01
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Índice
1 Introducción
2 Espacio de direccionamiento
3 El MMU
4 Espacio en memoria
5 Resolución de direcciones
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
El administrador de memoria
Es otra de las partes fundamentales de un sistemaoperativoEn toda computadora basada en von Neumann, lamemoria es el único almacenamiento a que tiene accesodirecto el procesador
Todo otro almacenamiento tiene que pasar a través decontroladores externosTípicamente manejado a través de memoria mapeada ode acceso directo
Todo proceso que ejecutemos debe estar en memoriaEl administrador de memoria es el encargado de permitirque varios procesos la compartan
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Notación: Sistemas binario, decimal, hexadecimal
¡Importante!
Para comprender bien este tema, así como el siguiente, esimportante tener un buen dominio de conceptos básicosde los sistemas de numeración
Particularmente el binario, en segundo término elhexadecimal
Aspectos principales:Potencias de 2Representación numérica en los diferentes sistemasMáscaras de bits
Hay tarea al respecto.
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
La memoria caché
El manejo del caché es casi transparente para el sistemaoperativoBusca resolver el diferencial (creciente) de velocidad entreel CPU y la memoria
La memoria de alta velocidad que maneja el caché esmucho más caraComienza a entrar en juego la velocidad de los electronessobre pistas de cobre
Vimos ya que el OS tiene que saber al respecto: Afinidadde procesos a CPUCuando se produce una falla de caché (no tiene copia dela dirección solicitada), es necesario detener al CPU
Insertando NOOP →stall (detención)
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
¿Por qué el caché?: Localidad de referencia
Se ha observado que prácticamente todos los procesosresponden al principio de localidad de referencia:
Localidad temporal Es probable que un recurso que fueempleado recientemente vuelva a ser empleado enun futuro cercano.
Localidad espacial La probabilidad de que un recurso aún norequerido sea accesado es mucho mayor si fuerequerido algún recurso cercano.
Localidad secuencial Un recurso, y muy particularmente lamemoria, tiende a ser requerido de formasecuencial.(Caso especial de Localidad espacial)
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Ilustrando la localidad de referencia
Figura: Patrones de acceso a memoria (Silberschatz, p.350)
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Índice
1 Introducción
2 Espacio de direccionamiento
3 El MMU
4 Espacio en memoria
5 Resolución de direcciones
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Abstracción de la memoria
La memoria se presenta ante el CPU como un arreglodireccionableCada byte tiene una dirección única y consecutiva
En algunas arquitecturas, las solicitudes deben estaralineadas (por ejemplo, a 64 bits), y no estarlo causa uatrampa o falta, incurriendo en demorasSin embargo, las direcciones siguen siendo de cada byte
Para operar sobre bits específicos, tenemos que pedir elbyte, trabajar sobre de él y enviarlo de vuelta — Comouna unidad.
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Espacio de direccionamiento: ¿Hasta dónde puedescontar?
Cada arquitectura de procesador tiene un espacio dedireccionamiento determinado
Siempre es una potencia de 2, y casi siempre en númeroscerrados (8, 16, 32, 64)
Es el máximo de memoria que dicho procesador puede verVirtual Lo máximo que la arquitectura ofrece como
una dirección de memoriaFísico Lo máximo que un procesador específico
puede direccionar (limitado por su númerode pines)
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Procesadores de 16 bits
Un procesador con espacio de direccionamiento de 16 bitspuede referirse directamente a hasta 216 (65,536) bytes.Principales procesadores de este tipo: Intel 8080 y 8085,Zilog Z80, MOS 6502 y 6510Intel 8086/8088: Direcciona hasta 20 bits (1024KB)
Pero al ser una arquitectura real de 16 bits, requiereemplear segmentación para alcanzar toda su memoria
Intel 80286: espacio de direccionamiento de 24 bits (16MB)
Pero su mercado era el mismo que el del 8086/8088, ypor ciertas restricciones de su arquitectura, casi nunca seutilizó en estos modos
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Procesadores de 32 bits
Hoy en día, los procesadores dominantes son de 32 o 64bitsUn procesador de 32 bits puede direccionar hasta 4GB —232 bytes (4,294,967,296 bytes)
Hoy ya está dentro del rango de lo alcanzablePor medio de PAE (Extensión de Direcciones Físicas,Physical Address Extension), puede extenderse hasta 252
(aunque típicamente 236, 64GB)PAE requiere un nivel adicional de indirección (loveremos cuando cubramos paginación), por lo que pierdeun poco de rendimiento, y cada proceso sigue viendo sólohasta 4GB.
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Procesadores de 64 bits
Un procesador de 64 bits puede direccionar hasta 16exabytes — 264 bytes (18,446,744,073,709,551,616 bytes)El hardware actual está limitado por un criterioeconómico a entre 240 y 248 bits, 1TB y 256TB
El costo de más de 256TB RAM hace extremadamenteimprobable que sea requerido en suficientes procesadoresde propósito generalCada bit de direccionamiento necesario requiere un pinen el CPU, por tanto, tiene un costo directo
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
¿Más allá?
¿Qué tan lejos podemos llegar?El número total de átomos en el universo está estimadoen cerca de 280
¿Cuánto espacio (físico) necesitamos para nuestramemoria?
Por más que avance la miniaturización¿Cuánto ancho de banda podemos esperar tener?
¿Cómo podemos esperar llenar 64 bits de datos?
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Índice
1 Introducción
2 Espacio de direccionamiento
3 El MMU
4 Espacio en memoria
5 Resolución de direcciones
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
¿Qué es / qué hace el MMU?
Casi todos los sistemas operativos modernos requieren deuna unidad de manejo de memoria (MMU)
Hardware, hoy es parte integral del CPU
Trabaja muy de cerca con el sistema operativoEncargado de funciones de control de permisos,seguridad, y traducción de direcciones“Vigilando” todos los accesos a memoria que ejecuta elcódigoExisten sistemas operativos multitarea que puedenfuncionar sin MMU
Pagan como precio la confiabilidad del sistema
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
¿Traducción de direcciones?
Es común que un sistema requiera más memoria de la queestá directamente disponible
Más memoria de la que existeMás memoria de la que el hardware puede direccionar
Un proceso no tiene por qué conocer los detalles de laasignación de memoria — Le damos una vista virtualsimplificada
¿Cuántos bloques de memoria me asignaron?¿Cuál es la ubicación de cada uno de ellos?¿Qué pasa si intento escribir (o leer) de donde tengoprohibido?
A lo largo de esta unidad iremos viendo las estrategiaspara responder a esto.
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Permisos
El MMU verifica que un proceso no tenga acceso a datosde otro
A menos que sea expresamente permitido (vía el sistemaoperativo)Hacer esta verificación desde el sistema operativo mismoincurriría en costos demasiado grandesUna verificación estática no puede ser suficientementeexhaustiva
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Protección de acceso: Primera aproximación
La arquitectura nos ofrece dos registros de uso específico, y sumodificación requiere una operación privilegiada / modo
supervisor:
Registro base Apunta a la primer dirección de memoria quepertenece a este proceso
Registro límite Cantidad de memoria que pertenece a esteproceso a partir del registro base
NOTA: Esto asume que los bloques de memoria asignados acada proceso sean contiguos
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Registros base y límite: Ejemplo (1)
A un proceso le fue asignado un espacio de 64K (65535bytes)A partir de la dirección 504214 (492K)
Esto se traduce a:
El registro base contiene 504214El registro limite contiene 65535
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Registros base y límite: Ejemplo (2)
Figura: Espacio de direcciones válidas para el proceso 3 definido porun registro base y un registro límite
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Registros base y límite: Ejemplo (3)
Comportamiento del MMU
Solicita acceso a direcc < 504214 →Falla:Violación de segmento (segmentation fault)
Solicita acceso a 504214 < direcc < 569749 →OKSe otorga acceso a la dirección
Solicita acceso a 569749 < direcc →Falla:Violación de segmento (segmentation fault)
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Índice
1 Introducción
2 Espacio de direccionamiento
3 El MMU
4 Espacio en memoria
5 Resolución de direcciones
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Estructura de un proceso en memoria
Para ejecutar un proceso, el SO casi nunca se limita avolcar el ejecutable a memoria
Excepto en sistemas antiguos: Formato .COM deMS-DOS, archivos a.out reales de Unixes antiguos
Un proceso tiene diversas regiones de memoria, con usosmuy diferentes:
Pila de llamadasEspacio de libresSección de datosSección de texto
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Sección de texto
Imagen en memoria de las instruccionesLas direcciones más bajas del espacio asignadoEl procesador va avanzando sobre este espacio medianteel registro de instrucción
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Sección de datos
Espacio fijo preasignado para variables globalesSe fija en tiempo de compilaciónSu tamaño no puede cambiar
Aunque los datos sí cambian
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Espacio de libres (Heap)
Espacio empleado para la asignación dinámica de memoriaAsignado en tiempo de ejecuciónEn lenguajes que requieren manejo manual de la memoria,aquí se manejan todas las estructuras dinámicas
En C: malloc, freeEn C++: new, delete
En lenguajes con gestión automática, es monitoreado porlos recolectores de basuraCrece hacia arriba
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Pila de llamadas (Stack)
Estructuras representando la serie de funciones que hansido llamadas dentro del proceso, incluyendo:
ParámetrosDirecciones de retornoVariables localesetc.
Ocupa la parte más alta del espacio en memoriaCrece hacia abajo
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
Índice
1 Introducción
2 Espacio de direccionamiento
3 El MMU
4 Espacio en memoria
5 Resolución de direcciones
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
¿Qué es la resolución de direcciones?
Cuando escribimos un programa, sus funciones y variablesson referidas por nombreEl compilador va substituyendo los nombres por ladirección en memoria a donde debe referirse
Excepto en bibliotecas de ligado dinámico. . . Queabordaremos más adelante
Pero en un sistema multiproceso, el compilador nonecesariamente sabe dónde estará el espacio de memoriaasignado al procesoLas direcciones indicadas en el texto del programa debenser traducidas (o resueltas) a su ubicación definitivaEsto puede ocurrir en tres momentos. . .
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
En tiempo de compilación
El texto de programa tiene la dirección absoluta de datosy funcionesMuy común en arquitecturas no multiprocesadasEn las PC tempranas, el formato ejecutable .COM es unvolcado de memoria con las direcciones absolutas
Formato limitado a un segmento de memoria (64K — 16bits, ¿Recuerdan?)
Hoy en día vemos esto en sistemas embebidos,microcontroladores, o de función específica
p.ej. Arduino
P.ej. la variable contador queda traducida en la imagenen disco como su dirección: 510200
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
En tiempo de carga
El sistema operativo tiene una rutina llamada cargador(loader)
Le asiste frecuentemente el ligador (linker), para incluiren la sección de texto todas las bibliotecas externas querequiera
Analiza el texto del programa que va cargando, y actualizaa las referencias a memoria para apuntar al lugar correcto
Agregando el desplazamiento (offset) necesario (ladirección base)
Depende de que el compilador indique la ubicación decada una de las variables y funcionesP.ej. contador queda traducida como undesplazamiento: inicio + 5986
Al cargarse, inicio es resuelto a 504214
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones
En tiempo de ejecución
El programa nunca hace referencia a ubicacionesabsolutas de memoria
El código generado por el compilador siempre indica basey desplazamiento (offset)
Permite que el proceso sea reubicado en la memoriaincluso estando ya en ejecuciónRequiere de apoyo en hardware (MMU)P.ej. la variable contador queda traducida como undesplazamiento: inicio + 5986
inicio se mantiene como etiqueta durante la ejecucióny es resuelta cada vez que se requiera