Proposta de TM para Arquiteturas Distribuídas - Ramos, Jerônimo da Cunha; Bois, André Rauber Du; Pilla, Maurício Lima (Anais da Escola Regional de Alto Desempenho da Região Sul (ERAD-RS), 2017)
Memórias transacionais (TM) facilitam a programação concorrente, mas poucos trabalhos suportam Sistemas Distribuídos (SD). Estes apresentam maiores desafios de programação do que as arquiteturas centralizadas. Desta forma, este trabalho visa desenvolver uma arquitetura para transações com objetos distribuídos, levando a facilidade de programação das TMs para os SDs. 1. Introdução TM é uma abstração para programação concorrente baseada na ideia de transações, similaresás de banco de dados. Uma transação de memória é uma sequência atõmica de operações que modificam a memória e pode ser executada completamente ou abortada. Elas executam como se estivessem modificando umaárea de memória isolada do acesso de outras transações, que só conseguem ver o resultado após o commit. Este modelo possui várias vantagens sobre o modelo clássico de programação, sendo a principal a facilidade de programação [Rigo et al. 2007][Du Bois 2008]. Ele tem sido largamente estudado para aplicação em máquinas multicore, mas também pode ser utilizado, com algumas adaptações, para facilitar a programação de arquiteturas distribuídas. O estudo destas arquiteturas continua de extrema importância, tanto por comporem uma grande parcela da computação de alto desempenho, quanto por cada vez mais dispositivos computacionais se comunicarem entre si. Além disso, com o aumento do uso de clouds computacionais, se torna importante o estudo de como sincronizar as ações de donos diferentes, utilizando as primitivas de TM. Sendo assim, a principal motivação deste trabalho é buscar meios para utilização de mecanismos de TM em sistemas distribuídos com características diversas. Existem várias implementações de TM para multicore. Um levantamento sobre o tema encontra-se em [Harris et al. 2010]. Porém, sistemas de TM com suporteá SD não são numerosos, e.g., Cluster-STM [Bocchino et al. 2008]: propõe uma interface com as operações necessárias e compara diferentes estratégias, todas rodando sobre PGAS (Partitioned Global Address Space); DiSTM[Kotselidis et al. 2008]: propõe algoritmos de coerência cache; TFA[Saad and Ravindran 2012]: propõe um algoritmo dataflow, movendo os objetos através dos nodos, não utiliza nenhum tipo de DSM (Distributed Shared Memory) e é totalmente distribuído; e DCMTJava [Ramos et al. 2016]: prototipou uma linguagem de domínio especifico embutida em Java, provendo suporte a transações locais e distribuídas, baseando-se no TFA para transações distribuídas.