O professor da Universidade Nova de Lisboa (Portugal) João Lourenço ministrará o curso de extensão Memórias Transacionais — Conceitos e Técnicas de Implementação e de Programação no Instituto de Ciências Matemáticas e de Computação (ICMC) da USP, em São Carlos, de 24 a 26 de fevereiro. O objetivo do curso é proporcionar uma introdução à tecnologia das Memórias Transacionais. Por ser um tema emergente na área, as Memórias Transacionais são consideradas uma solução eficiente para a especificação e desenvolvimento de softwares concorrentes.
O público-alvo do curso são pesquisadores que já possuam alguma experiência prévia em computação concorrente/paralela e pretendam conhecer e aprender outros mecanismos de sincronização alternativos aos tradicionais semáforos (locks) e variáveis de condição (condition variables). Durante o curso, espera-se que os participantes compreendam o que são Memórias Transacionais e como podem ser utilizadas na especificação de programas concorrentes nas linguagens de programação mais comuns, compreendendo a problemática da implementação dessa tecnologia, tanto por software como por hardware. Esse conhecimento possibilitará aos participantes experimentar autonomamente o uso das Memórias Transacionais e decidir quanto à sua utilização ou não nos programas concorrentes.
Lourenço tem investigado fortemente esse tema, tendo larga experiência no assunto. Pesquisador na área da computação paralela, com ênfase no teste e verificação de programas concorrentes, o professor já recebeu um prêmio de melhor artigo no congresso EuroPar2012, com um trabalho nesse contexto.
As aulas serão ministradas das 9h às 12h, na sala 3-009, no ICMC. Há 40 vagas disponíveis e, para se inscrever gratuitamente, basta preencher o formulário disponível no link abaixo até 20 de fevereiro. Confira, a seguir, o detalhamento do programa do curso e a bibliografia sugerida.
Acesse o formulário de inscrições em: icmc.usp.br/e/490f9
Detalhamento dos tópicos que serão ministrados durante o curso
1. Motivação
• Dificuldade(s) da programação concorrente/paralela
• Abstrações para programação concorrente/paralela
• Histórias e serialização de eventos
• Sistemas de base de dados e transações
• O que é uma transação?
• Compatibilidade e conflitos entre transações
2. Memória Transacional
• Conceitos fundamentais
• Memória transacional por software
• Memória transacional por hardware
• Em que condições é conveniente (ou não) usar memória transacional?
• Alguns sistemas correntes com suporte de memória transacional (por software e hardware)
3. Construindo programas transacionais
• Blocos atômicos básico: semântica e composibilidade
• Estendendo os blocos atômicos básicos: sincronização, exceções, integração de recursos não transacionais (e.g., chamadas ao sistema e operações de E/S)
• Programando com memória transacional: desenvolvimento, depuração e “profiling”
4. Experimentação
• Experimentação com o desenvolvimento de programas em memória transacional em Java e C/C
5. Implementação de memória transacional
• Opções de desenho: controlo de concorrência, gestão de versões, detecção de conflitos
• Semântica das transações: critérios de correção, opacidade
6. Correção, desempenho e progresso em memória transacional
• Garantias de progresso
• Detecção de conflitos e desempenho
• Gestão de contenção e escalonamento
• Reduzindo os conflitos entre transações
Assessoria de Comunicação ICMC – USP