X-Git-Url: https://git.llucax.com/z.facultad/75.00/informe.git/blobdiff_plain/7cbea236e3150a98f5a5d7e43637efe006a135a8..b9bd72d41bc4bec9ec5c5811083e8897227d930f:/source/resumen.rst diff --git a/source/resumen.rst b/source/resumen.rst index 1a58b3c..5bcda9e 100644 --- a/source/resumen.rst +++ b/source/resumen.rst @@ -1,48 +1,57 @@ -.. Resumen del trabajo - ESTADO: TERMINADO, CORREGIDO, REVISADO - - .. _resumen: Resumen ============================================================================ -**RESUMEN** - -El problema del manejo de memoria ha sido un factor clave en los lenguajes de -programación desde que empezaron a forjarse los primeros lenguajes con un -mínimo nivel de abstracción, dado que la administración de memoria explícita -ha sido un flagelo constante en el mundo de la informática, provocando -pérdidas de memoria que degradan el rendimiento de programas de larga vida -y siendo la principal fuente de problemas de seguridad, entre otros. - -Es por esto que desde la primera aparición de lenguajes de alto nivel, se -buscó abstraer al programador de administrar la memoria explícitamente, -desarrollando un área de investigación por mérito propio denominada -**recolección de basura** (o *garbage collection* en inglés). Se trata de un -servicio (provisto generalmente por el lenguaje) que permite auto-detectar -cuando una celda de memoria ha dejado de ser utilizada por el programa para -poder ser reciclada en el futuro, liberando al programador de llevar cuenta -del tiempo de vida de una celda y su liberación explícita cuando ésta deja de -utilizarse. - -D es un lenguaje de programación multi-paradigma, que soporta programación de -bajo nivel pero provee construcciones de muy alto nivel también, incluyendo un -*recolector de basura*. Dadas las amplias y variadas características del -lenguaje, D propone un nuevo desafío en cuanto al diseño de un recolector de -basura, y si bien D ya cuenta con un recolector que hace lo necesario para -funcionar de forma aceptable, su diseño e implementación son relativamente -sencillas comparadas con el estado del arte de la recolección de basura en -general. - -El objetivo de este trabajo es explorar los problemas del recolector de basura -actual, evaluar cuales son de mayor importancia para la comunidad, analizar la -viabilidad de algoritmos y optimizaciones para mejorarlo, implementar la -solución y proveer todos los elementos necesarios para que la solución pueda -ser adoptada por el lenguaje. Esto último es de vital importancia para este -trabajo: la solución tiene que tener buenas probabilidades de ser aceptada por -la comunidad de D. - - -.. vim: set ts=3 sts=3 sw=3 et tw=78 : +.. raw:: latex + + \pagestyle{empty} + \section*{Resumen} + +El manejo de memoria es un problema recurrente en los lenguajes de +programación; dada su complejidad es muy propenso a errores y las +consecuencias de dichos errores pueden ser muy graves. La *recolección de +basura* es el área de investigación que trata las técnicas de manejo +automático de memoria. D_ es un lenguaje de programación compilado, con tipado +estático y multi-paradigma que combina el poder de lenguajes de programación +de bajo nivel, como C, con la facilidad de los de alto nivel, como Python_ +o Java_. D_ provee recolección de basura pero ha sido frecuentemente criticada +por sus varias falencias. Dadas las particularidades del lenguaje, plantea un +desafío casi único en cuanto al diseño de un recolector. + +Este trabajo hace un recorrido por el estado del arte en recolección de basura +teniendo en cuenta los requerimientos de D_; analiza la implementación del +recolector actual y propone mejoras con el objetivo principal de minimizar los +tiempos de pausa. Finalmente se construye un banco de pruebas para verificar +los resultados, que muestran una disminución de hasta 200 veces en el tiempo +de pausa del recolector y de hasta 3 veces en el tiempo total de ejecución. + + +.. raw:: latex + + \vfill + \section*{Agradecimientos} + +A mis viejos y hermanos por soportarme y apoyarme, a Ali por estar siempre +para darme un empujoncito cuando me estanco, a Rosita por introducirme en el +tema, aguantar mis baches y ayudarme a mantener el foco, a Albertito por los +aportes técnicos invaluables a cambio de helado, a la gente que hizo la +innumerable cantidad de Software Libre que usé en este trabajo por +simplificarme enormemente la vida, y a la gente que me estoy olvidando por +hacer eso que me estoy olvidando que hizo. + +.. raw:: latex + + \vspace{1in} + \epigraph{¡Es basura! ¡Es basura! ¡Es basura!}{Jay Sherman} + + \clearpage + \setcounter{page}{1} + \pagenumbering{arabic} + \pagestyle{normal} + + +.. include:: links.rst + +.. vim: set ts=3 sts=3 sw=3 et tw=78 spelllang=es :