Sebastián Sánchez Prieto

Slides:



Advertisements
Presentaciones similares
GESTION DE MEMORIA.
Advertisements

III - Gestión de memoria
Administración de memoria
Administración de Memoria Virtual
Administración Memoria
Sistemas Operativos Gestión de Memoria.
Teoría de Sistemas Operativos Memoria
SISTEMAS OPERATIVOS GESTION DE MEMORIA INTEGRANTES Lizeth Chandi
UNIX COMP 240.
GESTION DE DISPOSITIVOS
Sistema operativo Componentes de un sistema operativo
Organización y arquitectura de sistemas de memoria
III - Gestión de memoria
CLASE 3 SOFTWARE DEL MICROPROCESADOR
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
3.4.- Administración de Memoria Virtual.
Organización de la Memoria.
EQUIPO ·# 3 SISTEMAS OPERATIVOS
Introducción a los Sistemas Operativos Memoria Virtual
Modelo de procesos de dos estados
MEMORIA 1.
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
MEMORIA VIRTUAL PAGINACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Windows XP sp3.
ADMINISTRACIÓN DE MEMORIA
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Robiro A. Asuaje L.23/08/20141 Organización de la Memoria SISTEMAS OPERATIVOS. Universidad Centro-Occidental “ Lisandro Alvarado ” Decanato de Ciencias.
Teoría de Sistemas Operativos
Gustavo Andrés Uribe Gómez
Direcciones físicas y direcciones virtuales (lógicas)
Introducción a los SSOO Sebastián Sánchez Prieto.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
Administración de memoria
Gestor de memoria.
Simulador didáctico de jerarquías de memoria
UNIDAD IV ADMINISTRACIÓN DE SISTEMAS CONCEPTOS DE GESTIÓN Y ALMACENAMIENTO.
PAGINACIÓN Y SEGMENTACIÓN
Sebastián Sánchez Prieto
Estructura y Tecnolología de Ordenadores
Estructura y Tecnología de Ordenadores Noviembre 2004.
Administración de Memoria Memoria Virtual
Sistema de archivos Sistemas operativos.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
Asignación de Espacio No Contiguo
Soporte HW para Administración de Memoria Cecilia Hernández
Administración de Memoria
Contenido Estructura del computador Ejecución de instrucciones
Capítulo 7 Gestión de memoria.
Administración de Memoria no contigua
Tema VII Memoria Virtual.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 21 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
COMPONENTES DEL SISTEMA OPERATIVO.
Memoria virtual.
Gestión de Memoria.
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Estructura de los Sistemas Operativos
Gestión de Memoria.
Teoría de Sistemas Operativos Memoria Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Gestión de memoria Rina Arauz.
Arquitectura de Computadores I
Memoria Virtual Msc. Rina Arauz.
Gestión de Memoria – Parte 2
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
1 Tema 10: Administración de la Memoria Sistemas Operativos (Tema 13 en apuntes prof. Rovayo)
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Transcripción de la presentación:

Sebastián Sánchez Prieto Memoria Sebastián Sánchez Prieto

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 Memoria F0B50011 33 F0B50012 C0 F0B50013 BF  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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 COMPROMISO!!! 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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

Direcciones Simbólicas/Físicas Otros objetos Bibliotecas dinámicas Compilador o Ensamblador Programa fuente Programa objeto Programa ejecutable Enlazador Cargador Bibliotecas Memoria  1999-2003 S2P, OGP & IGT

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)  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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é?  1999-2003 S2P, OGP & IGT

Caché de correspondencia directa 1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador 9 6 3 1 2 3 4 5 6 7 1 15 2 3 3 12 4 6 5 1 Fallo 6 2 7 4 TAG  1999-2003 S2P, OGP & IGT

Caché completamente asociativa 1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador 78 3 1 2 3 4 5 6 7 126 1 16 2 20 3 105 4 19 5 Acierto 78 6 79 7 80 TAG  1999-2003 S2P, OGP & IGT

Caché asociativa por conjuntos 1 0 0 1 1 1 0 0 1 1 Dirección generada por el procesador 19 2 3 1 2 3 4 5 6 7 31 16 20 1 12 Acierto 19 2 15 3 1 TAG  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

Gestión de la memoria principal Analizaremos dos de los mecanismos más ampliamente ofrecidos por las arquitecturas actuales: segmentación y paginación En ambos casos debe existir una unidad de manejo de memoria (MMU) encargada de traducir direcciones virtuales a direcciones físicas Cada esquema tiene sus propias ventajas e inconvenientes Ambos aportan protección y posibilidad de compartir información entre procesos Analizaremos también una combinación de los dos esquemas para tratar de obtener las ventajas de ambos  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

Segmentación (esquema lógico) Espacio de direccionamiento virtual Espacio de direccionamiento real Memoria física Código Dátos Dátos MMU Datos compartidos Datos compartidos Pila Código Pila  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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)  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

MMU del Pentium El Pentium soporta segmentación, paginación y segmentación paginada La dirección lógica está compuesta por un número de segmento (selector de segmento) y un desplazamiento El selector de segmento es uno de los siguientes registros: CS, DS, ES, SS, FS, GS 13 1 2 Selector de segmento 16 bits Índice 0-GDT 1-LDT Nivel de privilegio  1999-2003 S2P, OGP & IGT

MMU del Pentium LDT: Local Descriptor Table GDT: Global Descriptor Table Descriptor = entrada en la tabla de segmentos Tamaño del descriptor: 8 bytes Número máximo de entradas en cada tabla: 213 Límite Base 0-15 P DPL Tipo Base 16-23 Base 24-31 G D Límite 16-19 0: Límite en bytes 1: Límite en páginas Granularidad  1999-2003 S2P, OGP & IGT

MMU del Pentium + Selector Offset Dirección lineal 32 bits Límite Base Misc Límite Descriptor Base Misc Límite Base Misc Dirección lineal 32 bits  1999-2003 S2P, OGP & IGT

MMU del Pentium Dirección lineal 32 bits Dir. Pág. Offset Si la paginación está activada 10 bits 10 bits 12 bits Dir. Pág. Offset 32 bits 32 bits Marco de página Directorio de páginas # marco rwx  1999-2003 S2P, OGP & IGT

Memoria virtual Problema: ejecutar programas de mayor tamaño que la memoria disponible Soluciones: Overlays: control directo por parte del programador Memoria virtual: control llevado a cabo por el sistema operativo La memoria virtual se basa en el principio de localidad Los programas no se cargan por completo en memoria Ventajas: Permite aumentar el tamaño de los programas Permite aumentar el grado de multiprogramación Proporciona transparencia cara al usuario Reduce la E/S, ya que evita cargar partes de un programa que raramente se utilizan  1999-2003 S2P, OGP & IGT

Memoria virtual: implementación Para soportar memoria virtual podemos basarnos tanto en segmentación como en paginación Lo más típico es emplear paginación porque se trabaja con bloques de tamaño fijo De este modo, las transferencias desde y hacia el disco se llevan a cabo de un modo mucho más sencillo Los esquemas con memoria virtual basada en segmentación son escasos Decisiones de diseño: ¿Qué tamaño deben tener las páginas? ¿Cómo se sabe si una página está en memoria principal? ¿Qué hacer cuando una página es modificada? ¿Qué estrategia se debe emplear cuando es necesario reemplazar una página?  1999-2003 S2P, OGP & IGT

Memoria virtual basada en paginación principal Memoria secundaria (P0) (P3) (P1) (P0) (P4) OUT IN z x y (P2) (P3) (P4) (P5) Tabla del mapa de páginas Tabla del mapa de archivos  1999-2003 S2P, OGP & IGT

Carga dinámica S. O. Memoria secundaria Memoria principal Tabla de La página está en memoria auxiliar S. O. 3 Programa Memoria secundaria Referencia 2 1 Excepción LOAD M 6 Memoria principal Reiniciar la instr. Tabla de páginas 5 Cargar la página que falla Actualizar la tabla de páginas Marco libre 4  1999-2003 S2P, OGP & IGT

Soporte hardware Requerimientos hardware: Tabla de páginas Bits en los descriptores de página: Bit de validez: determina si la página se encuentra presente o no en memoria principal Bit de referencia: se activa en cada acceso a la página. Lo emplean los algoritmos de reemplazo Bit de modificación: determina si la página ha sido modificada desde que se cargó. Es importante para determinar si es necesario salvar sus contenidos Interruptibilidad de las instrucciones Dispositivo de almacenamiento secundario  1999-2003 S2P, OGP & IGT

Tasa de fallos de página Es la probabilidad de que se produzca un fallo de página p = número de fallos / número total de referencias 0  p  1 En general, cuantos más marcos se asignan a un proceso, menor es p Cuando se produce un fallo se consume un tiempo de servicio de fallo Los tiempos que más afectan son a este tiempo son: Los cambios de contexto Salvar una página modificada a disco (page out) Cargar la página referencia de disco a memoria (page in) El planificador asigna la CPU a otros procesos mientras se realizan las lecturas (page in) y escrituras asociadas al fallo de página  1999-2003 S2P, OGP & IGT