Objetivos e enquadramento
Programa e conteúdos
O programa da parte I da unidade curricular inclui os seguintes tópicos:
- compreender os princípios fundamentais de concorrência e as principais problemáticas relacionadas com a concorrência e com a execução concorrente de programas.
- conhecer as especificidades das arquiteturas de memória partilhada que são relevantes para o desempenho de uma aplicação concorrente, como o fluxo de dados e o processamento das instruções, o funcionamento da memória, e a sincronização e coerência dos dados em memória.
- conhecer os princípios teóricos que fundamentam um bom e correto desenho de uma aplicação concorrente, com particular ênfase nos conceitos e aspetos formais da sincronização.
- estar familiarizado com as principais primitivas de sincronização existentes para o desenvolvimento de aplicações concorrentes e ser capaz de modelar e implementar estruturas de dados, ferramentas e/ou aplicações concorrentes correta e eficientemente, usando primitivas/bibliotecas duma linguagem de programação atual para programação em memória partilhada utilizando processos e/ou threads.
Programa e conteúdos
O programa da parte I da unidade curricular inclui os seguintes tópicos:
- Conceitos básicos de programação concorrente
- Noções básicas de Concorrência
- Sistemas de transições
- CCS: Calculus of Communicating Systems:
- sequência, composição, sincronização;
- restrição e reetiquetagem;
- parâmetros e dados
- Comportamento observável
- relações de equivalência, congruência, bisimulações; congruência observável
- propriedades
- pseuCo: linguagem de programação para agentes concorrentes
- pseuCo e CCS
- cooperação por passagem de mensagens (canais síncronos e assíncronos)
- cooperação por partilha de memória (Mutex, locks e monitors)
- Parte II