Extracto del material disponible en Estrategias para la recolección de basura (Garbage Collection.

Slides:



Advertisements
Presentaciones similares
Capitulo 7: Procesamiento batch y el Job Entry Subsystem (JES)
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
LOGARITMOS.
2. Manejo de memoria Manejo de memoria estática
Unidad 15 Características de C++ no relacionadas con el DOO.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Configuración de Control
© Dr. Iván E. Calimano Formas, usos, etc.
Administración Memoria
Cuestiones y problemas
Teoría de Sistemas Operativos Memoria
IBD Clase 7.
III - Gestión de memoria
Instrumentación Virtual con LabVIEW
Base de Datos Distribuidas Bases de Datos II Universidad Argentina J. F. Kennedy - Año 2008 Maletin Yahoo => briefcase.yahoo.com Usuario => bd2_jfk Pssw.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
INTRODUCCIÓN A JAVA.
Que el usuario identifique y corrija un conjunto de fallas poco comunes que se presentan al momento de utilizar equipo de computo y software y que garantizan.
Direcciones, Arreglos y Argumentos de Funciones
Introducción a los Sistemas Operativos Memoria Virtual
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Funcionamiento, programación
Ingeniería del Software
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Números enteros.
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Herramientas para el acceso directo a memoria en C++
Material de apoyo Unidad 2 Estructura de datos
Introducción a los Conceptos de Bases de Datos Docente: Ing. Marleny Soria Medina.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Teoría de Sistemas Operativos
Recurrencia Programación II 3-4 de febrero de 2009.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Control del Acceso de los Usuarios
Tema 6: Clases Antonio J. Sierra.
Direcciones físicas y direcciones virtuales (lógicas)
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Tema 10: Gestión de Memoria
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Sistema de archivos Sistemas operativos.
Un archivo virtual es un archivo de uso temporal que es utilizado por los procesos del sistema mientras se están ejecutando dichos procesos.
04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia.
Administración de Memoria
Lenguaje de Programación cap. 1 Estructura del Computador.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Capítulo 7 Gestión de memoria.
Administración de Memoria no contigua
Manejo de Punteros y objetos en memoria dinámica en C++

Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Compiladores II ( /06/ :10) Tema 4. Gestión Compleja de Memoria Asignación Dinámica de la Memoria Lecciones 10,11,12,13.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Punteros Recomendado: 1. Nivelación Funciones
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Sistemas de archivos. Por: Milton Solano Ayala.. introducción Todas las aplicaciones computarizadas necesitan almacenar y recuperar la información: Superando.
Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo.
MEMORIA DINÁMICA.
Administración de Almacenamiento
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
GENERALIDADES DEL NIVEL ISA DE LA MAQUINA VIRTUAL JAVA (JVM) Generalidades del nivel ISA.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Transcripción de la presentación:

Extracto del material disponible en Estrategias para la recolección de basura (Garbage Collection strategies)

Extracto del material disponible en Winter/seg3310/ 2 Terminología Heap: - Es un área de memoria donde los datos pueden ser almacenados y removidos en cualquier orden. - Funciones como ‘malloc’ y ‘free’, o los operadores ‘new’ y ‘delete’ solicitan y liberan localidades de memoria en el heap - En la mayoría de los programas OO “buenos” todos los objetos son almacenados en el heap.

Extracto del material disponible en Winter/seg3310/ 3 Terminología (cont.) Conjunto raíz: - Es un conjunto de objetos accesibles desde el programa - Ej: variables globales, o variables en el programa principal (almacenadas en la pila de ejecución del programa) Objeto heap (también llamados celda o simplemente objeto): - Es una pieza de datos asignada individualmente en el heap Objeto alcanzable: - Es un objetos que puede ser alcanzado transitivamente desde el conjunto raíz de objetos

Extracto del material disponible en Winter/seg3310/ 4 Terminología(cont.) Basura (Garbage): - Son objectos inalcanzables desde los objetos del conjunto raíz pero que no son libres Referencia colgada (Dangling reference): - Es una referencia a un objeto que fue borrado - Puede causar el crash del sistema (con suerte!) - Puede causar bugs misteriosos Aplicación: - El programa usuario

Extracto del material disponible en Winter/seg3310/ 5 Estrategias básicas para la recolección de basura Cuenta de referencias Barrido de marcas Recogida de copias

Extracto del material disponible en Winter/seg3310/ 6 Cuenta de referencias Cada objeto tienen una componente adicional llamada contador de referencias (CR) Cuando un objeto O es creado, CR O es inicializado en uno Cuando a cualquier objeto raíz le es asignada una referencia al objeto O, CR O es incrementado Cuando una referencia al objeto O es borrada o se le asigna un nuevo valor, CR O es decrementado

Extracto del material disponible en Winter/seg3310/ 7 Cuenta de referencias Cualquier objeto con un CR igual a cero es considerado objeto basura y puede ser recolectado Cuando un objeto basura es recolectado, - Se decrementa el CR de todos los objetos referenciados por él - La recolección de un objeto basura puede conducir a la recolección de otros objetos basura

Extracto del material disponible en Winter/seg3310/ 8 Ejemplo (cuenta de referencias) Conjunto raíz Borrado Basura

Extracto del material disponible en Winter/seg3310/ 9 Pros y Contras de la cuenta de referencias Pros:  El recolector de basura (GC) es ejecutado en paralelo con la aplicación (on-the-fly GC)  La memoria liberada es devuelta a la lista de celdas libres rápidamente Contras:  El CR de cada objeto debe ser actualizado cada vez que un puntero es cambiado  Se necesita una componente adicional para cada objeto (el CR)  Falla al devolver a la lista de celdas libres la basura con formato de cadena circular (próx. lámina)

Extracto del material disponible en Winter/seg3310/ 10 Estructura de datos cíclica Eliminada Basura pero no puede ser reclamada

Extracto del material disponible en Winter/seg3310/ 11 Barrido de marcas (Mark-Sweep algorithm) El algoritmo de barrido de marcas es invocado cuando la aplicación requiere memoria pero no hay suficiente espacio libre La aplicación es detenida mientras el barrido de marcas es ejecutado (stop-and-collect GC) - Esto es impráctico para sistemas a tiempo real Se realiza en dos fases:  Fase de marcación: marca todos los objetos alcanzables  Fase de barrido: reclama los objetos basura

Extracto del material disponible en Winter/seg3310/ 12 Ejemplo de barrido de marcas Fase de marcación Fase de barrido Heap

Extracto del material disponible en Winter/seg3310/ 13 Pros y Contras del barrido de marcas Pros:  Las estructuras de datos cíclicas pueden ser recuperadas  Tiende a ser más rápido que la cuenta de referencias Contras:  La aplicación debe detenerse mientras el algoritmo se está ejecutando (stop-and-collect GC)  Cada objeto alcanzable debe ser visitado en la fase de marcación y cada objeto en el heap debe ser visitado en la fase de barrido  Causa fragmentación de la memoria

Extracto del material disponible en Winter/seg3310/ 14 Barrido de marcas con compactación (Mark- Compact algorithm) Similar al barrido de marcas pero no causa fragmentación de la memoria Dos fases: - Fase de marcación: idéntica a la del barrido de marcas - Fase de compactación: - Los objetos marcados son compactados - Los objetos alcanzables son colocados en posiciones contiguas de memoria

Extracto del material disponible en Winter/seg3310/ 15 Ejemplo Fase de marcación Fase de compactación Heap

Extracto del material disponible en Winter/seg3310/ 16 Pros y Contras del barrido con compactación Pros:  Elimina el problema de la fragmentación Contras:  Es un stop-and-collect GC  La implementación de la compactación requiere muchas pasadas sobre los objetos

Extracto del material disponible en Winter/seg3310/ 17 Recogida de copias (Copying Algorithm) La recogida de copias divide el heap en dos áreas iguales llamadas from-space y to-space La aplicación trabaja en el área del from-space El algoritmo visita los objetos alcanzables y los copia contiguamente en el área del to-space - Los objetos sólo necesitan ser recorridos una vez Una vez que la copia es completada, el to-space y el from space invierten sus roles

Extracto del material disponible en Winter/seg3310/ 18 Ejemplo From To From No usado v ã X X X To

Extracto del material disponible en Winter/seg3310/ 19 Pros y Contras de la recogida de copias Pros:  Elimina la fragmentación  La copia es muy rápida - Siempre y cuando el porcentaje de objetos alcanzables es bajo - Sólo visita objetos alcanzables Contras:  Es un stop-and-collect GC  Sólo la mitad del heap está disponible de forma activa  Poco práctico para heaps muy grandes