• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 2
  • Tagged with
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

[en] FINALIZERS AND CYCLES IN WEAK TABLES / [pt] FINALIZADORES E CICLOS EM TABELAS FRACAS

ALEXANDRA BARRETO ASSAD DE BARROS 06 December 2007 (has links)
[pt] Referências fracas e finalizadores constituem uma alternativa elegante para se obter controle sobre a interação entre a aplicação e o coletor de lixo. No entanto, em alguns contextos, finalizadores são desnecessários, pois é possível estender o mecanismo de referências fracas a fim de dar suporte a finalização. Neste trabalho, realizamos um estudo detalhado sobre os usos desses mecanismos e mostramos como é possível substituir finalizadores por referências fracas propondo uma implementação baseada em referências fraca para cada uso de finalizadores. Baseado nesse estudo, desenvolvemos um mecanismo de finalização via referências fracas para a linguagem Lua. Motivados por nossa proposta de uma maior exploração do mecanismo de referências, desenvolvemos um algoritmo para um importante problema relacionado a ciclos em tabelas fracas, uma estrutura criada a partir de referências fracas. A existência de referências cíclicas entre chaves e valores impede que os elementos que compõem o ciclo sejam coletados, mesmo que eles não sejam mais utilizados pelo programa. Isso acaba dificultando o uso de tabelas fracas em determinadas aplicações. A linguagem Haskell resolveu esse problema através de uma adaptação do mecanismo de ephemerons ao seu coletor de lixo. Partindo desse fato, modificamos a implementação do coletor de lixo de Lua para que este oferecesse suporte ao mecanismo de ephemerons. Dessa forma, pudemos eliminar o problema de ciclos em tabelas fracas nessa linguagem. / [en] Weak References and finalizers constitute an elegant alternative to obtain control over the interaction between the application and the garbage collector. However, in some contexts, finalizers are not necessary because it`s possible to extend the weak reference mechanism in order to give support to finalization. In this work, we present a survey of the most common uses of these mechanisms. We also show how weak references can replace finalizers proposing a weak reference based implementation for each finalizer use. Based on this survey, we developed a finalization mechanism based on weak references for the Lua programming language. Motivated by our proposal of a better exploration of the weak reference mechanism, we developed a solution for an important problem related to cycles on weak tables, an structure created using weak references. Cyclic references between keys and values prevents the elements inside the cycle from being collected, even if they are no more reachable. This ends up bringing difficulties to the use of weak tables in certain kinds of applications. The Haskell programming language solved this problem implementing an adaptation of a mechanism called ephemerons. Based on this fact, we modified the Lua garbage collector in order to offer support to ephemerons. As a result, we were able to solve the problem of cycles on weak tables in Lua.
2

[pt] FINALIZADORES E REFERÊNCIAS FRACAS: INTERAGINDO COM O COLETOR DE LIXO / [en] FINALIZERS AND WEAK REFERENCES: INTERFACING WITH THE GARBAGE COLLECTOR

MARCUS AMORIM LEAL 03 January 2006 (has links)
[pt] Inúmeras linguagens de programação oferecem suporte a finalizadores e referências fracas. Não obstante, de maneira geral esses mecanismos são relativamente pouco conhecidos e pouco usados por programadores. Mesmo entre pesquisadores e desenvolvedores de linguagens não existe muito consenso quanto à sua semântica, que varia consideravelmente entre diferentes implementações. Neste trabalho buscamos explorar os conceitos de finalizadores e de referências fracas, suprindo a ausência de uma especificação clara e abrangente, e permitindo uma melhor compreensão, implementação e uso dos mecanismos correspondentes. Como ponto de partida realizamos um amplo levantamento sobre como é feito o suporte a finalizadores e referências fracas em diferentes linguagens de programação, identificando as características comuns, os problemas, e as questões semânticas mais relevantes associadas às implementações consideradas. Para garantir uma maior precisão em nossa análise, utilizamos um modelo abstrato de uma linguagem de programação com gerenciamento automático de memória. Através deste modelo especificamos formalmente a semântica de finalizadores e referências fracas, incluindo descrições das suas principais variantes e mecanismos relacionados. Além disso, provamos certas propriedades inerentes a linguagens de programação com gerenciamento automático de memória, indicando como estas são afetadas pela introdução de finalizadores e referências fracas. Por fim, consideramos possíveis estratégias de implementação desses mecanismos em diferentes tipos de sistemas. Algumas das opções semânticas investigadas impõe um custo de processamento expressivo, o que frequentemente inviabiliza a sua adoção na prática. / [en] Most mainstream programming languages support finalizers and weak references. In spite of that, these abstractions are still modestly known by programmers in general. Even among language designers there seems to be no common view on how to define their semantics, and language implementations certainly reflect that. In this thesis we explore the concepts of finalizer and weak reference by discussing several important issues that, as far as we know, have not been explored by other authors. After presenting a survey on how finalizers and weak references are supported by actual programming languages, we thoroughly examine their semantics and discuss alternative implementation strategies. We also use an operational approach to develop a formal model for reasoning about garbage collection and its interaction with client programs. By explicitly representing low-level details, such as heap memory and its addresses, we were able to clearly specify memory management actions, and prove several important memory-related language invariants. Using this model we describe a formal semantics for finalizers and weak references, exploring some of its many subtleties. We believe that the topics covered here can serve as a relevant reference for further investigations, and also help to guide actual implementations.

Page generated in 0.0537 seconds