Banca de TCC – Rodrigo Medeiros Duarte
UNIVERSIDADE FEDERAL DE PELOTAS
CENTRO DE DESENVOLVIMENTO TECNOLÓGICO
TRABALHO DE CONCLUSÃO DE CURSO
Apresentações Finais (2016/2)
Implementação de Um Escalonador de Transações Para STM Haskell
por
Rodrigo Medeiros Duarte
Curso:
Engenharia de Computação
Banca:
Prof. André Rauber Du Bois (orientador)
Profa. Renata Hax Sander Reiser (co-orientador)
Prof. Maurício Lima Pilla (co-orientador)
Msc. Jeronimo da Cunha Ramos
Prof. Gerson Geraldo Homrich Cavalheiro
Data: 12 de Dezembro de 2016
Hora: 14:00h
Local: Sala 415 Campus Porto (Anglo)
Resumo do Trabalho: Memórias transacionais são um modelo de sincronização entre threads que fornece elevado nível de abstração para a criação de programas concorrentes. Em memórias transacionais, as seções criticas de um código são definidas como transações, parecidas com as transações presentes em bancos de dados. STM Haskell é uma biblioteca que fornece a abstração de memórias transacionais para a linguagem funcional Haskell. O GHC (Glasgow Haskell Compiler) é a implementação mais completa e atual do compilador e máquina virtual para Haskell. No GHC a biblioteca de STM Haskell é implementada usando versionamento de dados tardio e gerenciador de contenção suicida (que a única ação é reiniciar uma transação quando esta detecta um conflito). Estudos mostram que gerenciadores de contenção não são a melhor forma para o tratamento de conflitos entre transações. Assim o novo modelo para a redução do número de conflitos entre transações esta sendo o escalonamento. No escalonamento, transações conflitantes são migradas através de determinadas regras, para evitar que novos conflitos ocorram. Entre estas regras estão a migração da transação conflitante para o mesmo processador na qual esta a transação com a qual se detectou o conflito. Outra regra é a serialização, onde transações conflitantes são colocadas na mesma fila de execução de um único processador, não importando em qual CPU esta a transação com quem estas conflitaram. Neste trabalho de conclusão de curso foram implementados dois modelos de escalonamento (migração e serialização). Essas implementações foram realizadas usando Haskell e uma modificação do GHC que fornece abstrações para a criação de escalonadores a nível de usuário, porém com os recursos do RTS (Run Time System) do GHC. Apesar dos resultados obtidos não apresentarem ganho de desempenho, ainda sim se mostram promissores para a implementação das técnicas de escalonamento, pois conseguiu-se redução das taxas de conflitos das transações. Porém os custos adicionados com o escalonamento acabaram por prejudicar o desempenho geral das implementações.
Para mais informações acesse: http://wp.ufpel.edu.br/notcc/bancas/historico/2016_2/