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
- Institución
- Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
- OAI Identificador
- seminario:seminario_nCOM000672_Leveroni
Ver los metadatos del registro completo
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 |