administración de memoria: funciones y...

34
Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones Administración de memoria: Funciones y operaciones Gunnar Wolf Facultad de Ingeniería, UNAM 2013-04-01

Upload: vandan

Post on 21-Sep-2018

217 views

Category:

Documents


0 download

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

Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones

Proceso de compilación y carga

Figura: Proceso de compilación y carga de un programa, indicandoel tipo de resolución de direcciones (Silberschatz, p.281)