Skip to: site menu | section menu | main content

Prof. Marlos Marques

marlos.uesb@gmail.com

DCE734 - Programação Concorrente

Conteúdo Programático

I Unidade

  • Introdução/revisão dos sistemas computacionais
    • Hardware, Software, Peopleware
    • Conceito de Plataforma Computacional
    • Processo de Tradução
    • Compilação e Interpretação
  • Classificação de sistemas computacionais concorrentes, paralelos e distribuídos
  • Conceitos de hardware
    • Multiprocessadores x Multicomputadores
    • Formas de acoplamento
    • Sistemas fortemente acoplados
    • Sistemas fracamente acoplados
    • Taxonomia de Flynn
    • SISD, SIMD, MISD, MIMD
    • Memória compartilhada x Troca de mensagens
  • Conceitos de software
    • Gerenciamento de processos
    • Modelo de processos
    • Hierarquia de processos
    • Implementação de processos
    • Bloco de controle de processos
    • Diagrama de estados de um processo
    • Timesharing
    • Hierarquia de processos
    • Conceito de subprocessos
    • Diferença entre programas, processos e threads
    • Conceitos de threads
    • Implementação de threads
    • LWP (processos leves)
    • Sistemas multithreads
  • Threads em Java
  • Threads em C++

II Unidade

  • Comunicação entre processos
  • Condições de corrida
  • Regiões críticas
  • Exclusão mútua
  • Deadlock
  • Starvation
  • Espera desnecessária
  • Problemas de sincronização
  • Estudo de caso: Problema da variável compartilhada X
  • Estudo de caso: Problema do Trem
  • Ponderações sobre os estudos de caso:
    • Como e aonde ocorre a situação indesejada?
    • Qual anomalia a situação indesejada gera?
    • Como evitar que a situação indesejada ocorra?
    • Como identificar a região crítica?
    • Como proteger a regiuão crítica?
    • Considerações sobre a quantidade de processos
    • Considerações sobre a velocidade dos processos


    ---------- 2025.1 - PROVA P1 ATÉ AQUI ----------

  • Soluções por hardware
    • Inibição das interrupções
    • Instrução test-and-set
  • Soluções por software (com e sem espera ocupada)
    • Variáveis de travamento
    • Estrita alternância
    • Solução de Decker
    • Solução de Peterson
    • Semáforos
    • Monitores
    • Troca de mensagens
  • Problemas clássicos da comunicação entre processos
    • Produtor/Consumidor
    • Jantar dos Filósofos
    • Leitores/Escritores
    • Barbeiro Dorminhoco
  • Problema da Simulação de Trânsito/Trafégo Autômato
  • III Unidade

  • Introdução a programação paralela
    • Medidas de desempenho
    • Eficência
    • Aceleração/speedup
    • Balanceamento de carga
    • Granularidade
    • Técnicas de desenvolvimento de algoritmos paralelos
    • Paralelizando algoritmos seqüênciais
  • Estudos de casos: algoritmos de Ordenação
    • Algoritmo da Bolha
    • Algoritmo da Inserção
    • Algoritmo da Seleção
    • Algoritmo Odd/Even (sequencial e paralelo) slides de apoio


    -------------------- PROVA P2 ATÉ AQUI -------------------------

  • Estudos de casos: operações com matrizes
    • Elemento neutro
    • Transposta
    • Determinante
    • Multiplicação
    • Implementação dos Trabalhos Práticos