Administración De Memoria: Funciones Y Operaciones

Transcription

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesAdministración de memoria: Funciones yoperacionesGunnar WolfGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesÍndice1Introducción2Espacio de direccionamiento3El MMU4Espacio en memoria5Resolución de direccionesGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEl administrador de memoriaEs otra de las partes fundamentales de un sistema operativoEn toda computadora basada en von Neumann, la memoria esel único almacenamiento a que tiene acceso directo elprocesadorTodo otro almacenamiento tiene que pasar a través decontroladores externosTípicamente manejado a través de memoria mapeada o deacceso directoTodo proceso que ejecutemos debe estar en memoriaEl administrador de memoria es el encargado de permitir quevarios procesos la compartanGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesNotación: Sistemas binario, decimal, hexadecimal¡Importante!Para comprender bien este tema, así como el siguiente, esimportante tener un buen dominio de conceptos básicos de lossistemas de numeraciónParticularmente el binario, en segundo término el hexadecimalAspectos principales:Potencias de 2Representación numérica en los diferentes sistemasMáscaras de bitsGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesLa memoria cachéEl manejo del caché es casi transparente para el sistemaoperativoBusca resolver el diferencial (creciente) de velocidad entre elCPU y la memoriaLa memoria de alta velocidad que maneja el caché es muchomás caraComienza a entrar en juego la velocidad de los electrones sobrepistas de cobreVimos ya que el OS tiene que saber al respecto: Afinidad deprocesos a CPUCuando se produce una falla de caché (no tiene copia de ladirección solicitada), es necesario detener al CPUInsertando una burbuja o NOOP stall (detención)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direcciones¿Por qué el caché?: Localidad de referenciaSe ha observado que prácticamente todos los procesos responden alprincipio de localidad de referencia:Localidad temporal Es probable que un recurso que fue empleadorecientemente vuelva a ser empleado en un futurocercano.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 forma secuencial.(Caso especial de Localidad espacial)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesIlustrando la localidad de referenciaFigura: Patrones de acceso a memoria (Silberschatz, p.350)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesÍndice1Introducción2Espacio de direccionamiento3El MMU4Espacio en memoria5Resolución de direccionesGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesAbstracción de la memoriaLa memoria se presenta ante el CPU como un arreglodireccionableCada byte tiene una dirección única y consecutivaEn algunas arquitecturas, las solicitudes deben estar alineadas(por ejemplo, a 64 bits), y no estarlo causa ua trampa o falta,incurriendo en demorasSin embargo, las direcciones siguen siendo de cada bytePara operar sobre bits específicos, tenemos que pedir el byte,trabajar sobre de él y enviarlo de vuelta — Como una unidad.Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEspacio de direccionamiento: ¿Hasta dónde puedes contar?Cada arquitectura de procesador tiene un espacio dedireccionamiento determinadoSiempre es una potencia de 2, y casi siempre en númeroscerrados (16, 32, 64 ¡Ojo! ¿24, 48?)Es el máximo de memoria que dicho procesador puede verVirtual Lo máximo que la arquitectura ofrece como unadirección de memoriaFísico Lo máximo que un procesador específico puededireccionar (limitado por su número de pines)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesProcesadores de 16 bits de direccionamientoUn 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, ZilogZ80, MOS 6502 y 6510Se conocen como procesadores de 8 bits (registros /aritmética)Implicaciones: ¿Tamaño y uso de os apuntadores?Intel 8086/8088: Direcciona hasta 20 bits (1024KB)Pero al ser una arquitectura real de 16 bits, requiere emplearsegmentación para alcanzar toda su memoriaIntel 80286: espacio de direccionamiento de 24 bits (16 MB)Pero su mercado era el mismo que el del 8086/8088, y porciertas restricciones de su arquitectura, casi nunca se utilizó enestos modosGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesProcesadores de 32 bits de direccionamientoHoy en día, los procesadores dominantes son de 32 o 64 bits(aritmética)Un procesador de 32 bits puede direccionar hasta 4GB — 232bytes (4,294,967,296 bytes), casi siempre coincide con 32 bitsde aritméticaHoy en día es una cantidad ya rebasadaPor medio de PAE (Extensión de Direcciones Físicas, PhysicalAddress Extension), puede extenderse hasta 252 (aunquetípicamente 236 , 64GB)PAE requiere un nivel adicional de indirección (lo veremoscuando cubramos paginación), por lo que pierde un poco derendimiento, y cada proceso sigue viendo sólo hasta 4GB.Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesProcesadores de 64 bits (direccionamiento 48 bits)Los procesadores de 64 bits típicamente manejandireccionamiento de 48 bits281,474,976,710,656 bytes, 256TBUn direccionamiento real de 64 bits tendría por límite los 16exabytes — 264 bytes (18,446,744,073,709,551,616 bytes)El hardware actual está limitado por un criterio económico aentre 234 y 248 bits, 16GB y 256TBEl costo de más de 256TB RAM hace extremadamenteimprobable que sea requerido en suficientes procesadores depropósito generalEn un sistema actual de escritorio, es muy poco probablellegar a requerir incluso más de 16GBServidores: no demasiado fuera de lo común 256TBCada bit de direccionamiento necesario requiere un pin en elCPU, por tanto, tiene un costo económico directoGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direcciones¿Más allá?¿Qué tan lejos podemos llegar?El número total de átomos en el universo está estimado encerca de 280¿Cuánto espacio (físico) necesitamos para nuestra memoria?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?Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesÍndice1Introducción2Espacio de direccionamiento3El MMU4Espacio en memoria5Resolución de direccionesGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direcciones¿Qué es / qué hace el MMU?Casi todos los sistemas operativos modernos requieren de unaunidad de manejo de memoria (MMU)Hardware, hoy es parte integral del CPUIntermediario hacia el bus de acceso a memoriaTrabaja muy de cerca con el sistema operativoEncargado de funciones de control de permisos, seguridad, ytraducción de direcciones“Vigilando” todos los accesos a memoria que ejecuta el códigoExisten sistemas operativos multitarea que pueden funcionarsin MMUPagan como precio la confiabilidad del sistemaGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direcciones¿Traducción de direcciones?Es común que un sistema requiera más memoria de la que estádirectamente disponibleMás memoria de la que existe físicamenteMás memoria de la que el hardware puede direccionarUn 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 tengo prohibido?A lo largo de esta unidad iremos viendo las estrategias pararesponder a esto.Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesPermisosEl MMU verifica que un proceso no tenga acceso a datos deotroA menos que sea expresamente permitido (mediante solicitudesal sistema operativo)Hacer esta verificación desde el sistema operativo mismoincurriría en costos demasiado grandesUna verificación estática no puede ser suficientementeexhaustivaDirecciones construidas al vueloModos indirectos de referencia a memoria.Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesProtección de acceso: Primera aproximaciónLa 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 procesoRegistro límite Cantidad de memoria que pertenece a este procesoa partir del registro baseNOTA: Esto asume que los bloques de memoria asignados a cadaproceso sean contiguosGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesRegistros base y límite: Ejemplo (1)A un proceso le fue asignado un espacio de 64K (65535 bytes)A partir de la dirección 503808 (492K)Esto se traduce a:El registro base contiene 503808 (0x7B000)El registro limite contiene 65535 (216 , 0xFFFF)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesRegistros base y límite: Ejemplo (2)Figura: Espacio de direcciones válidas para el proceso 3 definido por unregistro base y un registro límiteGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesRegistros base y límite: Ejemplo (3)Comportamiento del MMUSolicita acceso a direcc 503808 Falla:Violación de segmento (segmentation fault)Solicita acceso a 503808 direcc 569343 OKSe otorga acceso a la direcciónSolicita acceso a 569343 direcc Falla:Violación de segmento (segmentation fault)Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesÍndice1Introducción2Espacio de direccionamiento3El MMU4Espacio en memoria5Resolución de direccionesGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEstructura de un proceso en memoriaPara ejecutar un proceso, el SO casi nunca se limita a volcar elejecutable a memoriaExcepto en sistemas antiguos: Formato .COM de MS-DOS,archivos a.out reales de Unixes antiguosUn proceso tiene diversas regiones de memoria, con usos muydiferentes:Pila de llamadasEspacio de libresSección de datosSección de textoGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesSección de textoImagen en memoria de las instruccionesLas direcciones más bajas del espacio asignadoEl procesador va avanzando sobre este espacio mediante elregistro de instrucciónSu contenido normalmente no debería cambiarAunque hay código legal auto-modificable. . .Afortunadamente, cada vez menosGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesSección de datosEspacio fijo preasignado para variables globalesSe fija en tiempo de compilaciónSu tamaño no puede cambiarAunque los datos sí cambienGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEspacio 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ámicasEn C: malloc, freeEn C : new, deleteEn lenguajes con gestión automática, es monitoreado por losrecolectores de basuraCrece hacia arribaGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesPila de llamadas (Stack)Estructuras representando la serie de funciones que han sidollamadas dentro del proceso, incluyendo:ParámetrosDirecciones de retornoVariables localesetc.Ocupa la parte más alta del espacio en memoriaCrece hacia abajoIndica el punto actual de ejecución del programaEquivalente a decir «aquí»Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesÍndice1Introducción2Espacio de direccionamiento3El MMU4Espacio en memoria5Resolución de direccionesGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direcciones¿Qué es la resolución de direcciones?Cuando escribimos un programa, sus funciones y variables sonreferidas por nombreEl compilador va substituyendo los nombres por la dirección enmemoria a donde debe referirseExcepto en bibliotecas de ligado dinámico. . . Que abordaremosmás adelantePero en un sistema multiproceso, el compilador nonecesariamente sabe dónde estará el espacio de memoriaasignado al procesoLas direcciones indicadas en el texto del programa deben sertraducidas (o resueltas) a su ubicación definitivaEsto puede ocurrir en tres momentos. . .Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEn tiempo de compilaciónEl texto de programa tiene la dirección absoluta de datos yfuncionesMuy común en arquitecturas no multiprocesadasEn las PC tempranas, el formato ejecutable .COM es unvolcado de memoria con las direcciones absolutasFormato limitado a un segmento de memoria (64K — 16 bits,¿Recuerdan?)Hoy en día vemos esto en sistemas embebidos,microcontroladores, o de función específicap.ej. ArduinoP.ej. la variable contador queda traducida en la imagen endisco como su dirección: 510200Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEn tiempo de cargaEl sistema operativo tiene una rutina llamada cargador(loader)Le asiste frecuentemente el ligador (linker), para incluir en lasección de texto todas las bibliotecas externas que requieraAnaliza el texto del programa que va cargando, y actualiza alas referencias a memoria para apuntar al lugar correctoAgregando el desplazamiento (offset) necesario (la direcciónbase)Depende de que el compilador indique la ubicación de cadauna de las variables y funcionesP.ej. contador queda traducida como un desplazamiento:inicio 5986Al cargarse, inicio es resuelto a 504214Gunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesEn tiempo de ejecuciónEl programa nunca hace referencia a ubicaciones absolutas dememoriaEl código generado por el compilador siempre indica base ydesplazamiento (offset)Permite que el proceso sea reubicado en la memoria inclusoestando ya en ejecuciónRequiere de apoyo en hardware (MMU)P.ej. la variable contador queda traducida como undesplazamiento: inicio 5986inicio se mantiene como etiqueta durante la ejecución y esresuelta cada vez que se requieraGunnar WolfAdministración de memoria: Funciones y operaciones

IntroducciónEspacio de direccionamientoEl MMUEspacio en memoriaResolución de direccionesProceso de compilación y cargaFigura: Proceso de compilación y carga de un programa, indicando el tipode resolución de direcciones (Silberschatz, p.281)Gunnar WolfAdministración de memoria: Funciones y operaciones

Introducción Espacio de direccionamiento El MMU Espacio en memoria Resolución de direcciones Índice 1 Introducción 2 Espaciodedireccionamiento 3 ElMMU 4 Espacioenmemoria 5 Resolucióndedirecciones Gunnar Wolf Administración de memoria: Funciones y operaciones