Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos

Autores
Leveroni, Luciano
Año de publicación
2017
Idioma
español castellano
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
Wilkinson, Hernán Alfredo
Descripción
Memoria Transaccional (de ahora en adelante, STM) emerge como una alternativa a técnicas tradicionales de control de concurrencia, basadas principalmente en la idea de locks y sus variantes (semáforos, monitores, etc). En los últimos años la investigación sobre este tema se encuentra en auge. Este trabajo describe una implementación transparente de STM sobre el lenguaje Ruby. Entendemos por transparente a una implementación que, a diferencia de otras implementaciones existentes, no resulta intrusiva para el programador-usuario de esta extensión del lenguaje. La implementación realizada es compatible con MRI, la implementación oficial de Ruby, así como Rubinius, una implementación alternativa realizada sobre Ruby mismo. La técnica utilizada se basa en la generación dinámica de código, en tiempo de ejecución, fuertemente basada en el trabajo Transactional Memory for Smalltalk [7] (2008, Lukas Renggli et. al). La investigación se centra en exhibir las ventajas y limitaciones del lenguaje Ruby al momento de implementar STM, así como los obstáculos y beneficios particulares de las dos implementaciones de Ruby mencionadas. Se muestra como las distintas capacidades reflexivas, características del meta-modelo y de meta-programación del lenguaje inciden en la posibilidad de implementar esta técnica sin modificaciones necesarias a las VMs asociadas (salvo algunas excepciones). Como conclusión, Ruby como lenguaje ofrece en principio las herramientas para lograr una de STM robusta y completa. Sin embargo, la problemática de las primitivas de lenguaje junto con algunas deficiencias de implementación y limitaciones del meta-modelo, derivaron en una implementación más compleja y acoplada a particularidades implementativas. No obstante, se logró una implementación funcional que requiere modificaciones a nivel implementación del lenguaje / VM para solventar las limitaciones expuestas.
Transactional Memory (from now on, STM) emerges as an alternative to traditional concurrency control techniques based mainly in the idea of locks and it’s variants (semaphores, monitors, etc). Over the last years, research on this topic is booming. This work describes a transparent implementation of STM for the Ruby language. By transparent, we mean an implementation that, in contrast with existing ones, is nonintrusive for the programmer-user of this language extension. The implementation presented is compatible with MRI, the official Ruby implementation, as well as Rubinius, an alternative implementation based on Ruby itself. The technique used is strongly based on the work Transactional Memory for Smalltalk (2008, Lukas Renggli et. al.). Research is focused on showing the advantages and limitations of the Ruby language in relationship with implementing STM, as well as obstacles and benefits particularly linked with the two implementations mentioned. It is shown how reflexive capabilities, meta-programming and meta-model characteristics of the language affect the possibility of implementing this technique without needing to modify the corresponding VMs (with some exceptions). In conclusion, Ruby as a language offers the tools needed to achieve a robust and complete STM implementation. However, issues with language primitives, together with some implementation deficiencies and limitations of the meta-model, derived in a more complex implementation, somewhat fragile and coupled to implementation details. Nonetheless, a functional implementation was achieved that requires changes at the language implementation level / VM to solve the exposed limitations.
Fil: Leveroni, Luciano. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
STM
MEMORIA TRANSACCIONAL
ORIENTADO A OBJETOS
DINAMICAMENTE TIPADO
RUBY
MRI
RUBINIUS
PRIMITIVAS
META MODELO RUBY
INMUTABILIDAD
RUBY VM
SMALLTALK
GENERACION DINAMICA DE CODIGO
TRANSACTIONAL MEMORY
OBJECT ORIENTED
DYNAMIC TYPING
RUBINIUS
PRIMITIVES
RUBY META MODEL
INMUTABILITY
SMALLTALK
DYNAMIC CODE GENERATION
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000672_Leveroni

id BDUBAFCEN_b6f1a3fb8f202272eae5e564e16e11ae
oai_identifier_str seminario:seminario_nCOM000672_Leveroni
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetosA transparent implementation of transactional memory for a dynamic object-oriented languageLeveroni, LucianoSTMMEMORIA TRANSACCIONALORIENTADO A OBJETOSDINAMICAMENTE TIPADORUBYMRIRUBINIUSPRIMITIVASMETA MODELO RUBYINMUTABILIDADRUBY VMSMALLTALKGENERACION DINAMICA DE CODIGOTRANSACTIONAL MEMORYOBJECT ORIENTEDDYNAMIC TYPINGRUBINIUSPRIMITIVESRUBY META MODELINMUTABILITYSMALLTALKDYNAMIC CODE GENERATIONMemoria Transaccional (de ahora en adelante, STM) emerge como una alternativa a técnicas tradicionales de control de concurrencia, basadas principalmente en la idea de locks y sus variantes (semáforos, monitores, etc). En los últimos años la investigación sobre este tema se encuentra en auge. Este trabajo describe una implementación transparente de STM sobre el lenguaje Ruby. Entendemos por transparente a una implementación que, a diferencia de otras implementaciones existentes, no resulta intrusiva para el programador-usuario de esta extensión del lenguaje. La implementación realizada es compatible con MRI, la implementación oficial de Ruby, así como Rubinius, una implementación alternativa realizada sobre Ruby mismo. La técnica utilizada se basa en la generación dinámica de código, en tiempo de ejecución, fuertemente basada en el trabajo Transactional Memory for Smalltalk [7] (2008, Lukas Renggli et. al). La investigación se centra en exhibir las ventajas y limitaciones del lenguaje Ruby al momento de implementar STM, así como los obstáculos y beneficios particulares de las dos implementaciones de Ruby mencionadas. Se muestra como las distintas capacidades reflexivas, características del meta-modelo y de meta-programación del lenguaje inciden en la posibilidad de implementar esta técnica sin modificaciones necesarias a las VMs asociadas (salvo algunas excepciones). Como conclusión, Ruby como lenguaje ofrece en principio las herramientas para lograr una de STM robusta y completa. Sin embargo, la problemática de las primitivas de lenguaje junto con algunas deficiencias de implementación y limitaciones del meta-modelo, derivaron en una implementación más compleja y acoplada a particularidades implementativas. No obstante, se logró una implementación funcional que requiere modificaciones a nivel implementación del lenguaje / VM para solventar las limitaciones expuestas.Transactional Memory (from now on, STM) emerges as an alternative to traditional concurrency control techniques based mainly in the idea of locks and it’s variants (semaphores, monitors, etc). Over the last years, research on this topic is booming. This work describes a transparent implementation of STM for the Ruby language. By transparent, we mean an implementation that, in contrast with existing ones, is nonintrusive for the programmer-user of this language extension. The implementation presented is compatible with MRI, the official Ruby implementation, as well as Rubinius, an alternative implementation based on Ruby itself. The technique used is strongly based on the work Transactional Memory for Smalltalk (2008, Lukas Renggli et. al.). Research is focused on showing the advantages and limitations of the Ruby language in relationship with implementing STM, as well as obstacles and benefits particularly linked with the two implementations mentioned. It is shown how reflexive capabilities, meta-programming and meta-model characteristics of the language affect the possibility of implementing this technique without needing to modify the corresponding VMs (with some exceptions). In conclusion, Ruby as a language offers the tools needed to achieve a robust and complete STM implementation. However, issues with language primitives, together with some implementation deficiencies and limitations of the meta-model, derived in a more complex implementation, somewhat fragile and coupled to implementation details. Nonetheless, a functional implementation was achieved that requires changes at the language implementation level / VM to solve the exposed limitations.Fil: Leveroni, Luciano. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesWilkinson, Hernán Alfredo2017info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000672_Leveronispainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-09-29T13:43:32Zseminario:seminario_nCOM000672_LeveroniInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-09-29 13:43:33.775Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
A transparent implementation of transactional memory for a dynamic object-oriented language
title Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
spellingShingle Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
Leveroni, Luciano
STM
MEMORIA TRANSACCIONAL
ORIENTADO A OBJETOS
DINAMICAMENTE TIPADO
RUBY
MRI
RUBINIUS
PRIMITIVAS
META MODELO RUBY
INMUTABILIDAD
RUBY VM
SMALLTALK
GENERACION DINAMICA DE CODIGO
TRANSACTIONAL MEMORY
OBJECT ORIENTED
DYNAMIC TYPING
RUBINIUS
PRIMITIVES
RUBY META MODEL
INMUTABILITY
SMALLTALK
DYNAMIC CODE GENERATION
title_short Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
title_full Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
title_fullStr Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
title_full_unstemmed Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
title_sort Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos
dc.creator.none.fl_str_mv Leveroni, Luciano
author Leveroni, Luciano
author_facet Leveroni, Luciano
author_role author
dc.contributor.none.fl_str_mv Wilkinson, Hernán Alfredo
dc.subject.none.fl_str_mv STM
MEMORIA TRANSACCIONAL
ORIENTADO A OBJETOS
DINAMICAMENTE TIPADO
RUBY
MRI
RUBINIUS
PRIMITIVAS
META MODELO RUBY
INMUTABILIDAD
RUBY VM
SMALLTALK
GENERACION DINAMICA DE CODIGO
TRANSACTIONAL MEMORY
OBJECT ORIENTED
DYNAMIC TYPING
RUBINIUS
PRIMITIVES
RUBY META MODEL
INMUTABILITY
SMALLTALK
DYNAMIC CODE GENERATION
topic STM
MEMORIA TRANSACCIONAL
ORIENTADO A OBJETOS
DINAMICAMENTE TIPADO
RUBY
MRI
RUBINIUS
PRIMITIVAS
META MODELO RUBY
INMUTABILIDAD
RUBY VM
SMALLTALK
GENERACION DINAMICA DE CODIGO
TRANSACTIONAL MEMORY
OBJECT ORIENTED
DYNAMIC TYPING
RUBINIUS
PRIMITIVES
RUBY META MODEL
INMUTABILITY
SMALLTALK
DYNAMIC CODE GENERATION
dc.description.none.fl_txt_mv Memoria Transaccional (de ahora en adelante, STM) emerge como una alternativa a técnicas tradicionales de control de concurrencia, basadas principalmente en la idea de locks y sus variantes (semáforos, monitores, etc). En los últimos años la investigación sobre este tema se encuentra en auge. Este trabajo describe una implementación transparente de STM sobre el lenguaje Ruby. Entendemos por transparente a una implementación que, a diferencia de otras implementaciones existentes, no resulta intrusiva para el programador-usuario de esta extensión del lenguaje. La implementación realizada es compatible con MRI, la implementación oficial de Ruby, así como Rubinius, una implementación alternativa realizada sobre Ruby mismo. La técnica utilizada se basa en la generación dinámica de código, en tiempo de ejecución, fuertemente basada en el trabajo Transactional Memory for Smalltalk [7] (2008, Lukas Renggli et. al). La investigación se centra en exhibir las ventajas y limitaciones del lenguaje Ruby al momento de implementar STM, así como los obstáculos y beneficios particulares de las dos implementaciones de Ruby mencionadas. Se muestra como las distintas capacidades reflexivas, características del meta-modelo y de meta-programación del lenguaje inciden en la posibilidad de implementar esta técnica sin modificaciones necesarias a las VMs asociadas (salvo algunas excepciones). Como conclusión, Ruby como lenguaje ofrece en principio las herramientas para lograr una de STM robusta y completa. Sin embargo, la problemática de las primitivas de lenguaje junto con algunas deficiencias de implementación y limitaciones del meta-modelo, derivaron en una implementación más compleja y acoplada a particularidades implementativas. No obstante, se logró una implementación funcional que requiere modificaciones a nivel implementación del lenguaje / VM para solventar las limitaciones expuestas.
Transactional Memory (from now on, STM) emerges as an alternative to traditional concurrency control techniques based mainly in the idea of locks and it’s variants (semaphores, monitors, etc). Over the last years, research on this topic is booming. This work describes a transparent implementation of STM for the Ruby language. By transparent, we mean an implementation that, in contrast with existing ones, is nonintrusive for the programmer-user of this language extension. The implementation presented is compatible with MRI, the official Ruby implementation, as well as Rubinius, an alternative implementation based on Ruby itself. The technique used is strongly based on the work Transactional Memory for Smalltalk (2008, Lukas Renggli et. al.). Research is focused on showing the advantages and limitations of the Ruby language in relationship with implementing STM, as well as obstacles and benefits particularly linked with the two implementations mentioned. It is shown how reflexive capabilities, meta-programming and meta-model characteristics of the language affect the possibility of implementing this technique without needing to modify the corresponding VMs (with some exceptions). In conclusion, Ruby as a language offers the tools needed to achieve a robust and complete STM implementation. However, issues with language primitives, together with some implementation deficiencies and limitations of the meta-model, derived in a more complex implementation, somewhat fragile and coupled to implementation details. Nonetheless, a functional implementation was achieved that requires changes at the language implementation level / VM to solve the exposed limitations.
Fil: Leveroni, Luciano. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description Memoria Transaccional (de ahora en adelante, STM) emerge como una alternativa a técnicas tradicionales de control de concurrencia, basadas principalmente en la idea de locks y sus variantes (semáforos, monitores, etc). En los últimos años la investigación sobre este tema se encuentra en auge. Este trabajo describe una implementación transparente de STM sobre el lenguaje Ruby. Entendemos por transparente a una implementación que, a diferencia de otras implementaciones existentes, no resulta intrusiva para el programador-usuario de esta extensión del lenguaje. La implementación realizada es compatible con MRI, la implementación oficial de Ruby, así como Rubinius, una implementación alternativa realizada sobre Ruby mismo. La técnica utilizada se basa en la generación dinámica de código, en tiempo de ejecución, fuertemente basada en el trabajo Transactional Memory for Smalltalk [7] (2008, Lukas Renggli et. al). La investigación se centra en exhibir las ventajas y limitaciones del lenguaje Ruby al momento de implementar STM, así como los obstáculos y beneficios particulares de las dos implementaciones de Ruby mencionadas. Se muestra como las distintas capacidades reflexivas, características del meta-modelo y de meta-programación del lenguaje inciden en la posibilidad de implementar esta técnica sin modificaciones necesarias a las VMs asociadas (salvo algunas excepciones). Como conclusión, Ruby como lenguaje ofrece en principio las herramientas para lograr una de STM robusta y completa. Sin embargo, la problemática de las primitivas de lenguaje junto con algunas deficiencias de implementación y limitaciones del meta-modelo, derivaron en una implementación más compleja y acoplada a particularidades implementativas. No obstante, se logró una implementación funcional que requiere modificaciones a nivel implementación del lenguaje / VM para solventar las limitaciones expuestas.
publishDate 2017
dc.date.none.fl_str_mv 2017
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000672_Leveroni
url https://hdl.handle.net/20.500.12110/seminario_nCOM000672_Leveroni
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1844618753263796224
score 13.070432