Saltar para:
Logótipo
This page in english Ajuda Autenticar-se
FCUP
Você está em: Início > CC3037
Autenticação




Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Programação Concorrente

Código: CC3037     Sigla: CC3037

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2020/2021 - 2S Ícone do Moodle Ícone  do Teams

Ativa? Sim
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Mestrado Integrado em Engenharia de Redes e Sistemas Informáticos

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L:CC 26 Plano de estudos a partir de 2014 3 - 6 56 162
MI:ERS 42 Plano Oficial desde ano letivo 2014 2 - 6 56 162
3

Docência - Responsabilidades

Docente Responsabilidade
Eduardo Resende Brandão Marques Regente
António Mário da Silva Marcos Florido Regente

Docência - Horas

Teórica: 2,00
Práticas Laboratoriais: 2,00
Tipo Docente Turmas Horas
Teórica Totais 1 2,00
Eduardo Resende Brandão Marques 1,00
António Mário da Silva Marcos Florido 1,00
Práticas Laboratoriais Totais 2 4,00
Eduardo Resende Brandão Marques 2,00
António Mário da Silva Marcos Florido 2,00

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

O objetivo principal é fornecer uma formação sólida sobre concorrência, com particular ênfase nos princípios fundamentais de concorrência e no desenho e implementação de modelos de computação concorrente em arquiteturas de memória partilhada, assim como dos principais problemas inerentes.

Resultados de aprendizagem e competências

Ao completar a UC espera-se que o estudante adquira as seguintes competências:

  • 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.

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Aprovação em Lógica Computacional e  Sistemas de Operação

Programa


  • Conceitos básicos: tipos de arquiteturas e de aplicações concorrentes. Concorrência como abstração de paralelismo. Distinção entre concorrência e paralelismo, entre programa sequencial e programa concorrente, e entre programação sequencial, concorrente, paralela e distribuída. Processos.

  • Introdução aos modelos: abstração, especificação e modelação de sistemas; sistemas de transição etiquetados (LTS): estados, ações atómicas, comportamento e equivalência; conceitos básicos dum cálculo de processos como prefixo de ações, escolha, composição (paralela), guardas. Modelos assíncronos e síncronos. Intercalação. Ações atómicas partilhadas. Propriedades de correção: safety, liveness e fairness.

  • Princípios de sincronização: distinção entre comunicação e sincronização, e entre competição e cooperação. Operações atómicas em hardware e em software. O problema da região crítica. Starvation versus deadlock. Requisito para a ocorrência de deadlocks. Inversão de prioridade. Problemas clássicos de sincronização.

  • Primitivas de sincronização: principais primitivas de sincronização -- locks, semáforos, monitores e barreiras -- e diferentes abordagens de implementação.

  • Programação com processos e com threads:distinção entre processos e threads. Principais benefícios e implicações da utilização de processos multithreaded. User threads versus kernel threads. Modelo de programação concorrente tendo por base a utilização de: (i) processos em conjunto com técnicas avançadas de mapeamento de memória; (ii) processos multithreaded utilizando bibliotecas duma linguagem de programação atual.

Bibliografia Obrigatória

Herlihy Maurice; The art of multiprocessor programming. ISBN: 9780123705914
Aceto Luca 070; Reactive systems. ISBN: 978-0-521-87546-2

Bibliografia Complementar

Michel Raynal.; Concurrent Programming: Algorithms, Principles and Foundations. , Springer, 2012
Roberto Gorrieri, Cristian Versari; Introduction to Concurrency Theory, Springer, 2015
Ben-Ari M. 1948-; Principles of concurrent and distributed programming. ISBN: 9780321312839 pbk
Gregory R. Andrews; Foundations of Multithreaded, Parallel, and Distributed Programming., 2000
R. Milner; Communication and concurrency. ISBN: 0-13-115007-3

Métodos de ensino e atividades de aprendizagem

Aulas teóricas de exposição dos tópicos do programa e aulas práticas laboratoriais para demonstração e desenvolvimento de programas. Para a modelação serão usados simuladores de sistemas de transição ou máquinas de estados.

Tipo de avaliação

Avaliação distribuída com exame final

Componentes de Avaliação

Designação Peso (%)
Exame 60,00
Trabalho laboratorial 40,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 56,00
Frequência das aulas 56,00
Trabalho laboratorial 50,00
Total: 162,00

Obtenção de frequência

Serão registadas as presenças às aulas práticas. Perde a frequência por falta de assiduidade o estudante que faltar a mais de 25% das aulas práticas previstas.

Fórmula de cálculo da classificação final

Avaliação distribuída com exame final.  A avaliação distribuída incluirá quer a modelação(AM)  quer a implementação de programas (AI). A nota final (NF) é obtida pela ponderação das notas da avaliação distribuídos e do exame final (EF) segundo a fórmula NF = 4 * AM + 4 *AI + 12 * EF.

Recomendar Página Voltar ao Topo
Copyright 1996-2022 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2022-05-25 às 22:01:26 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais