Resumo: Neste trabalho investiga-se a utilização de Software Transactional Memory (STM) como alternativa de programação paralela para arquiteturas com memória compartilhada. Primeiramente, faz-se um estudo do conceito de programação paralela e suas principais características. Posteriormente, apresenta-se a abordagem do modelo STM para programação paralela, bem como a sua aplicação no contexto de linguagens de programação funcional, mais especificamente em Haskell. Como estudo de caso para ilustração das qualidades do modelo STM, apresenta-se uma implementação do problema clássico de sincronização do jantar dos filósofos em Haskell. Por fim, com o objetivo de demonstrar a simplicidade e elegância dos códigos com STM em Haskell, compara-se esta implementação com outra do mesmo problema utilizando-se o mecanismo de sincronização monitores em Java.
Palavras
IntroduçãoEste trabalho propõe investigar uma alternativa de programação paralela para sistemas multi-core, com memória compartilhada, utilizando o paradigma de programação funcional. Hoje a solução que está sendo encontrada pelos fabricantes de microprocessadores para obter melhor desempenho é a utilização de mais de um núcleo em cada processador. Essa nova arquitetura é chamada de "multicore" e sua principal característica é que a carga de trabalho pode ser dividida entre os núcleos de processamento.Nesse contexto, o principal desafio atualmente está na área de programação de sistemas, para que possam executar eficientemente nesta nova arquitetura. A programação paralela é uma área que nos permite ter mais poder computacional em nível de programação do sistema. A ideia é dividir os programas em subprocessos que poderão ser executados simultaneamente por núcleos ou processadores diferentes [1].Tradicionalmente, em programação paralela para sistemas com memória compartilhada utilizam-se mecanismos de lock e variáveis condicionais. Programas paralelos escritos com locks são difíceis de programar e bastante suscetíveis a erros, como, por exemplo, deadlock [2]. Assim, este projeto visa ao estudo de Software