Gestión de memoria.

Slides:



Advertisements
Presentaciones similares
Introducción a los Sistemas Operativos Memoria Virtual
Advertisements

Sebastián Sánchez Prieto
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Administración de memoria
Gestión de memoria Rina Arauz.
Gestión de Memoria – Parte 2
Arquitectura y Sistemas Operativos Gestión de Memoria Parte 1 1 Gestión de Memoria – Parte 1 Agenda Parte 1 –RequisitosRequisitos –EvoluciónEvolución –Carga.
Gestión de Memoria Principal
Arquitectura de Computadores Clase 21 Memoria Virtual IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería.
Tema 11: Segmentación y Paginación de la Memoria
JANITH SULAY JAIMES PABON GIOVANNY JIMÉNEZ GÓMEZ JOHN ANDRES AYALA ANGARITA SERGIO ANDRES ARAQUE BERMUDEZ GESTIÓN DE ALMACENAMIENTO SECUNDARIO.
G ESTIÓN DE LA MEMORIA Paginación y segmentación.
Memoria virtual. Universidad de SonoraArquitectura de Computadoras2 Introducción Memoria virtual es un mecanismo que permite que la memoria principal.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Vinculación de Instrucciones y Datos a Memoria Tiempo de compilación: si la dirección de memoria se conoce a priori, se puede generar código absoluto;
Organización y Arquitectura de Computadores
COMPUTACION PARALELA GLORIA PATRICIA FLOREZ ANGIE PAOLA ANCHICO.
Estructura de un ordenador. Ronald Valverde Zambrano.
Tema II Unidad de memoria. 2.1 Definiciones y conceptos básicos. 2.2 Jerarquía de memorias. 2.3 Memorias de semiconductor. 2.4 Memorias asociativas. 2.5.
Paginamiento / Paging Sistemas Operativos 16 de Septiembre de 2011.
Una estrategia para evitar la sucesiones repetidas de instrucciones convertir la secuencia en un procedimiento e invocarlo cada vez que se necesite.
PARTICIONES EN UN DISCO DURO Diagnóstico y Mantenimiento INTE 3020 Elena López 15/11/2013.
1 MEMORIAS Fundamentos de Informática Ingeniería Técnica Diseño Industrial.
Areas de memoria del CJ.
Administración de Memoria
Teoría de Sistemas Operativos Archivos
“Administración de memoria”
Memoria Introducción.
ADMINISTRACION DE LA MEMORIA
En la siguiente presentación veremos algunos términos que debemos conocer para iniciar la educación virtual.
Sistema de Bases de Datos
INFORMATICA.
La Memoria Memoria de la computadora es el espacio de almacenamiento en la computadora donde datos va a ser procesada y se almacenan las instrucciones.
Otros temas sobre cachés
Unidad de Procesamiento Central
Computación Curso 2017.
Unidad 3 Isai Galvan Alaniz
Memoria virtual.
MENU SOFWARE Y HADWARE DISPOSITIVOS DE SALIDA DISPOSITIVOS DE ENTRADA
ORGANIZACIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL
Memoria virtual.
CUESTIONARIO INFORMATICO
Qué son y características generales
MEMORIAS. Alba Lus, Esther Escobar, Laura Hierro, Raquel Fdez.
Almacenamiento El computador tiene 2 aspectos
PROGRAMACIÓN 1 INTRODUCCIÓN
Conceptos básicos.
Algoritmos de reemplazo
MEMORIA RAM.
DISCO DURO..
3.4 Administración de memoria Virtual Arteaga Amate Juan Carlos Gómez Cruz Alejandro Leyva Portilla José Ángel.
P P AGINACION FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS.
Sistema de Archivos UNIX Windows
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS.
Tipos de Datos abstractos
CURSO PROGRAMACIÓN BÁSICA SEMANA 2
Dispositivos de almacenamiento
PROYECTO INFORMÁTICO ¿QUÉ ES UN PROYECTO INFORMÁTICO?
SISTEMAS OPERATIVOS MEMORIA VIRTUAL.
Tipos de Datos abstractos
Pipelining Peligros de control.
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial
Memoria Cachés.
Otros temas sobre cachés
Componentes de una computadora
Estructura de un equipo microinformático
Organización del caché
MEDIOS DE ALMACENAMIENTO
DISPOSITIVOS DE ALMACENAMIENTO DE DATOS
Transcripción de la presentación:

Gestión de memoria

Definición La memoria es una amplia tabla de datos, cada uno de los cuales con su propia dirección Tanto el tamaño de la tabla (memoria), como el de los datos incluidos en ella dependen de cada arquitectura concreta Para que los programas puedan ser ejecutados es necesario que estén cargados en memoria principal La información que es necesario almacenar de modo permanente se guarda en dispositivos de almacenamiento secundarios también conocidos como memoria secundaria

Localidad Los procesos tienden a concentrar sus referencias en un intervalo de tiempo en un subconjunto de su espacio de direcciones Según Donald Knuth [1971]: Los programas, normalmente, tienen un perfil muy desigual, con unos pocos picos agudos... También encontramos que menos del 4 por 100 de un programa, generalmente, representa más de la mitad de su tiempo de ejecución Es una propiedad empírica más que teórica La localidad puede ser de dos tipos: Localidad espacial Localidad temporal

Localidad espacial y temporal Localidad espacial: una vez hecha una referencia a una posición de memoria, es muy probable que las localidades cercanas sean también referenciadas. En apoyo a esta observación encontramos: Ejecución secuencial del código Tendencia de los programadores a colocar próximas entre sí las variables relacionadas Acceso a estructuras de datos de tipo matriz o pila Localidad temporal: una vez hecha una referencia a una posición de memoria en un determinado instante t, es muy probable que esa misma posición sea accedida en un instante t + t Justificada por: Formación de ciclos Subrutinas Pilas

Jerarquía de memoria La jerarquización de la memoria es un intento de aumentar el rendimiento de los computadores Para ello se aprovechan los avances tecnológicos en el diseño de memorias y la localidad de los programas Memorias rápidas: tienen un coste elevado y una capacidad pequeña Memorias lentas: son baratas y tienen una capacidad alta CD-ROM - Cintas Registros internos del procesador Menor rapidez mayor tamaño y menor precio Mayor rapidez menor tamaño y mayor precio Caché on-chip L1 Caché externa L2 Memoria principal Discos magnéticos

Fragmentación Fragmentación = memoria desaprovechada Puede ser de dos tipos, interna y externa Fragmentación interna Se debe a la diferencia de tamaño entre la partición de memoria y el objeto residente dentro de ella Se produce siempre que se trabaje con bloques de memoria de tamaño fijo Si el tamaño del objeto no coincide con el de la partición, queda una zona que no se puede aprovechar Fragmentación externa Se debe al desaprovechamiento de memoria entre particiones

Direcciones Simbólicas/Físicas Otros objetos Bibliotecas dinámicas Compilador o Ensamblador Programa fuente Programa objeto Programa ejecutable Enlazador Cargador Bibliotecas Memoria

Reubicación La reubicación hace referencia al hecho de poder localizar a los programas para su ejecución en diferentes zonas de memoria Reubicación estática Se realiza antes o durante la carga del programa en memoria Los programas no pueden ser movidos una vez iniciados Reubicación dinámica Los programas pueden moverse en tiempo de ejecución El paso de dirección virtual a dirección real, se realiza en tiempo de ejecución Necesita hardware adicional (MMU)

Esquemas de gestión de memoria Máquina desnuda Monitor monolítico o residente Asignación de memoria particionada contigua Asignación de memoria particionada no contigua Memoria virtual

Máquina desnuda Memoria Usuario Es la manera más sencilla de gestionar la memoria: no existe ningún gestor El usuario controla toda la memoria El sistema no porporciona ningún servicio Memoria Usuario

Monitor monolítico o residente MEMORIA Protección: MONITOR Dirección límite CPU Sí Dirección>Límite No Error de direccionamiento

Memoria particionada contigua Se asigna una partición de memoria a cada proceso Protección: registros límite o base-límite Fragmentación externa: compactación MFT MVT Sistema multiprogramado con tamaño y número de particiones fijo Sistema multiprogramado con tamaño y número de particiones variable Fragmentación interna y externa Fragmentación externa Desventaja en la asignación dinámica de memoria Ventaja en la asignación dinámica de memoria Problema: intercambio de trabajos con E/S pendiente Requiere algoritmos de gestión de memoria más complejos

Error de direccionamiento Registros límite No soporta reubicación dinámica MEMORIA Límite inferior Límite inferior CPU Programa X <= >= Sí Sí No No Error de direccionamiento

Registros base-límite Soporta reubicación dinámica MEMORIA Límite Base CPU Sí Programa X < + Límite No Error de direccionamiento

Tabla de descripción de particiones 0K 100K 400K 500K 750K 900K 1000K Sistema operativo Pi Pj Pk Número Base Tamaño Estado de la de la de la de la partición partición partición partición 0K 100K ASIGNADA 100K 300K LIBRE 400K 100K ASIGNADA 500K 250K ASIGNADA 700K 150K ASIGNADA 900K 100K LIBRE 1 2 3 4 5

Memoria particionada no contigua Esquemas: Segmentación Paginación Segmentación paginada Paginación segmentada

Segmentación Es un esquema de gestión de memoria con varias ventajas: Permite que los bloques de un proceso (código, datos, pila, DLLs, etc.) puedan estar situados en áreas de memoria no contiguas Suministra reubicación dinámica Aporta protección y uso compartido Las direcciones en estos sistemas tienen dos componentes: número de segmento y offset En el 80x86 mov eax, ds:esi Para localizar el dato se utiliza el selector DS y el desplazamiento SI Los segmentos pueden tener tamaños diferentes

Segmentación (esquema lógico) Espacio de direccionamiento real Espacio de direccionamiento virtual Código Memoria física Dátos Dátos MMU Datos compartidos Datos compartidos Pila Código Pila

Segmentación (HW) < + Procesador D Memoria S D S ¡¡¡ Error !!! Tabla de segmentos RPBTS Base 1 Límite 1 Base 2 Límite 2 S Base 3 Límite 3 Base 4 Límite 4 Base 5 Límite 5 RLTS Base 6 Límite 6 Base 7 Límite 7 Base 8 Límite 8 Base 5

Cuestiones ¿Qué ocurre si la tabla de segmentos es muy grande? Solución: se guarda en memoria apuntada por un registro base (RPBTS) Problema: se necesitan dos referencias por cada acceso, uno a la tabla de segmentos y el otro a la posición referenciada Solución: utilizar registros internos dentro de la CPU (Intel) En estos registros se almacenan las últimas entradas utilizadas de la tabla de segmentos Mientras el segmento no se cambie, la entrada se mantiene en estos registros

Protección y uso compartido Protección basada en los registros base y límite Se pueden establecer distintos derechos de acceso (rwx) a cada segmento del proceso Estos derechos suelen guardarse en la tabla de segmentos de cada proceso El uso compartido es uno de los argumentos más importantes en favor de la segmentación ¿Cómo pueden dos o más procesos compartir un segmento? Basta con que dos entradas en las dos tablas de segmentos (que no tienen por qué coincidir en número) apunten a la misma dirección base

Ventajas e inconvenientes Elimina de fragmentación interna Permite el crecimiento dinámico de los segmentos Aporta protección y uso compartido Permite un enlace y carga dinámicos Inconvenientes: Necesita compactación de memoria En sistemas antiguos se fijaba un tamaño máximo fijo para cada segmento Necesita hardware adicional Los bloques de memoria no son múltiplos enteros de los bloques que se traen desde el disco

Paginación Es un esquema de gestión de memoria en el que la asignación de memoria no es contigua El espacio de direcciones virtuales de un proceso está dividido en bloques de tamaño fijo llamados páginas La memoria física se divide en marcos de página La dirección virtual consta de un número de página virtual y un desplazamiento La traducción de direcciones se lleva a cabo con la ayuda de la tabla de páginas (TDP) La TDP se construye en tiempo de carga del proceso en memoria

Paginación (esquema lógico) Espacio de direccionamiento virtual Espacio de direccionamiento real Memoria física Código A B B MMU C Páginas D D Marcos E F G A C

Paginación (HW) Procesador D Memoria P D M D P Tabla de páginas RPBTP Marco 1 Marco 2 P Marco 3 Marco 4 Marco 5 RLTP Marco 6 Marco 7 Marco 8 Marco 5

Consideraciones Si se piden “s” posiciones de memoria nº páginas asignadas=[s/p] p: tamaño de la página Si el cociente anterior no es entero se produce la llamada fragmentación de página Los marcos libres se suelen mantener en una lista enlazada Si la TDP es muy grande, ésta se debe mantener en memoria principal Para acelerar los accesos se emplean memorias asociativas (TLB)

Paginación con TLBs (HW) Procesador D Memoria P D M D Marco 5 TLB A 3 X 24 V 89 C 19 P 5 Tabla de páginas T 18 RPBTP Marco 1 S 5 Marco 2 R 10 P Marco 3 Marco 4 Marco 5 RLTP Marco 6 Marco 7 Marco 8

Protección y uso compartido Protección basada en bits de acceso de las entradas de la TDP Compartir páginas es bastante sencillo Basta con que dos o más procesos tengan en una de sus entradas de la TDP la misma referencia a un marco La paginación es gestionada por completo por el sistema operativo La paginación elimina la fragmentación externa, pero no la interna Con página grande aumentamos la fragmentación interna pero disminuimos el tamaño de la TDP

Problemas de la paginación Fragmentación interna (ya comentado) Si el número de páginas es grande, la zona de memoria ocupada por la TDP puede ser excesiva Ejemplo: Tamaño de cada entrada de la TDP: 4 bytes Espacio de direccionamiento: 32 bits Páginas de 4 Kbytes Tamaño de la TDP: 4 Mbytes Solución Tabla de páginas paginada Se emplea un directorio de páginas

Paginación de la TDP D Memoria Dir P D M D Dir P Dirección virtual Directorio de páginas Tabla de páginas RPBTP Tabla 1 Marco 1 Dir Tabla 2 Marco 2 Tabla 3 P Marco 3 Tabla 4 Marco 4 Tabla 5 Marco 5 RLTP Tabla 6 Marco 6 Tabla 7 Marco 7 Tabla 8 Marco 8

Segmentación paginada Es posible combinar los esquemas de paginación y segmentación De este modo podemos obtener las ventajas de ambos a costa de complicar el HW Combinaciones: Segmentación paginada Paginación segmentada (no se emplea en la práctica) En la segmentación paginada, cada segmento se divide en páginas En la paginación segmentada, cada página se divide en segmentos

Segmentación paginada (HW) Dirección virtual Memoria S P D M D Tabla de segmentos + RPBTS Tabla de páginas S RLTS Base de la tabla de páginas

Memoria caché Intenta reducir el desajuste entre las velocidades del procesador y de las memorias Su empleo se justifica por la localidad de los programas Es una solución de compromiso entre mejora de rendimiento y precio La idea de emplear memorias caché consiste en mantener en ellas los datos o instrucciones que el procesador necesita en cada momento Si los datos o instrucciones se encuentran en la caché el acceso en muy rápido, si no es así, los datos se traen desde memoria principal en bloques

Diseño de la caché A los bloques de transferencia entre memoria principal y memoria caché se les denomina líneas o vías de caché Decisiones de diseño: ¿Qué tamaño deben tener las líneas de caché? ¿Cómo se sabe si un bloque está en la caché? ¿Cómo se establece la correspondencia entre líneas de caché y bloques de MP? ¿Qué hacer cuando una línea de caché es modificada? ¿Qué estrategia se debe emplear cuando es necesario reemplazar una línea de caché?

Memoria cache Parámetros de un sistema con memoria cache: Política de ubicación Las políticas de ubicación establecen la correspondencia entre los bloques de la MP y de la MCa Política de extracción Determinan cuándo y qué información se envía de MP a MCa Política de reemplazo Determinan cuándo y qué bloque se sustituye de las MCa con política de ubicación asociativa Política de actualización Determinan el instante en que se actualiza la información en MP cuando se produce una escritura en MCa  Problema de coherencia de la MCa

Políticas de ubicación Las políticas de ubicación establecen la correspondencia entre los bloques de la MP y de la MCa Las políticas de ubicación más importantes son: Directa Asociativa Asociativa por conjuntos Ejemplo de aplicación: Establecer la correspondencia entre MP y MCa en un sistema con: Dirección física: 20 bits Tamaño de bloque: 8 bytes = 23 bytes/bloque Capacidad MCa: 1Kbytes= 210 bytes  Nº bloques MCa = Capacidad MP: 1 Mbyte = 220 bytes  Nº bloques de MP =

Políticas de ubicación Correspondencia directa (I): Dirección de MP Etiqueta Bloque de MCa Palabra 10 bits 7 bits 3 bits Memoria principal Bloque 0 Bloque 1 . Bloque 127 Bloque128 Bloque 129 Bloque 131.071 Memoria caché Etiqueta (B0) Etiqueta (B1) Etiqueta (B2) . Etiqueta (B127) Bloque 0 Bloque 1 Bloque 2 Bloque 127 Acierto Fallo Comparador Palabra enviada al procesador

Políticas de ubicación Correspondencia directa (II): Consiste en hacer corresponder a todo bloque i de MP el bloque i mod k de MCa, donde k es el número total de bloques de la MCa Una dirección en MCa consta de: Etiqueta Nº de bloque de MCa Posición en el bloque (palabra) Solución: 23 bytes/bloque 3 bits para la posición dentro del bloque 27 bloques de MCa 7 bits para cada bloque  10 bits para cada etiqueta Ventajas: La lectura permite el acceso simultáneo: al directorio y a la palabra dentro del bloque de MCa Algoritmo de reemplazo trivial Inconveniente: Incremento de la tasa de fallos de la MCa, si dos bloques de MP, que corresponden a un mismo bloque de MCa, se utilizan de forma alternativa

Memoria cache Políticas de ubicación Correspondencia asociativa (I): Memoria principal Bloque 0 Bloque 1 . Bloque 127 Bloque128 Bloque 129 Bloque 131.071 Memoria caché Bloque 2 Acierto Etiqueta (B0) Etiqueta (B1) Etiqueta (B2) Etiqueta (B127) Fallo = Dirección de MP Etiqueta Palabra 17 bits 3 bits Palabra enviada al procesador

Memoria cache Políticas de ubicación Correspondencia asociativa (II): Cualquier bloque de MP puede ubicarse en cualquiera de los bloques de la cache Una dirección en MCa consta de: Etiqueta Posición en el bloque (palabra) Solución: 23 bytes/bloque 3 bits para la posición dentro del bloque 217 bloques de MP  17 bits para cada etiqueta Ventaja: Flexibilidad (permite la implantación de gran variedad de algoritmos de reemplazo) Inconveniente: Coste de las comparaciones

Memoria cache Políticas de ubicación Correspondencia asociativa por conjuntos (I): Memoria principal Fallo Acierto Comparador 0 Comparador 1 Memoria caché Etiqueta (B127) Etiqueta (B0) Etiqueta (B1) Etiqueta (B2) Etiqueta (B3) . Etiqueta (B126) C0 C1 C63 Bloque 0 Bloque 1 Bloque 2 Bloque 3 Bloque 126 Bloque 127 Palabra enviada al procesador . . . Bloque 63 Bloque 64 Bloque 65 Bloque128 Bloque 129 Bloque 131.071 Dirección de MP Etiqueta Conjunto de MCa Palabra 11 bits 6 bits 3 bits

Políticas de ubicación Correspondencia asociativa por conjuntos (II): Consiste en dividir la MCa en C conjuntos de B bloques cada uno Se aplica: Correspondencia directa a nivel de conjunto Correspondencia asociativa a nivel de bloque Un bloque i de MP puede ubicarse en cualquier bloque del conjunto i mod C de MCa Una dirección en MCa consta de: Etiqueta, Conjunto y Posición en el bloque Solución (asignando 2 bloqs./cjto.): 23 bytes/bloque 3 bits para la posición dentro del bloque 26 conjuntos en MCa 6 bits para cada conjunto 11 bits para cada etiqueta El coste de la búsqueda depende del número y longitud de las etiquetas que se tienen que comparar simultáneamente Ventaja: Reduce el coste de la totalmente asociativa proporcionando un rendimiento cercano a esta última

Memoria caché Coherencia: ¿qué ocurre si un dato de la caché se modifica? En tal caso se produce una inconsistencia entre los contenidos memoria caché y memoria principal Problema grave en sistemas multiprocesador Estrategias de actualización: Write back Write through También cabe considerar las estrategias de sustitución de líneas de caché cuando existen varias vías por conjunto Normalmente se emplean cachés separadas para instrucciones y para datos

Ejercicio Sea una computadora que dispone de una memoria principal entrelazada y memorias caché separadas con las siguientes características: §        El tamaño de un bloque de memoria es de 32 bytes §        Memoria principal: §        Capacidad: 256 Mbytes §        Memoria caché: §        Asociativa por conjuntos, estructurada según: §        Memoria caché de instrucciones: 8 Kbytes con 4 bloques por conjunto. §     Memoria caché de datos: 8 Kbytes con 2 bloques por conjunto.