SlideShare uma empresa Scribd logo
UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA
CURSO DE CIÊNCIA DA COMPUTAÇÃO
PROGRAMAÇÃO CONCORRENTE – 2015.1
Fábio M. Pereira
(fabio.mpereira@uesb.edu.br)
Programação Concorrente
• Do inglês Concurrent Programming, onde Concurrent
significa “acontecendo ao mesmo tempo”
• É um paradigma de programação para a construção
de programas de computador que fazem uso da execução
concorrente (simultânea) de várias tarefas
computacionais interativas, que podem ser
implementadas como programas separados ou como um
conjunto de threads criadas por um único programa
• É diferente de computação paralela!
Fio, linha, fluxo
Programação Concorrente
• A programação concorrente foi usada inicialmente na
construção de sistemas operacionais
• Atualmente, ela é usada para desenvolver aplicações em
todas as áreas da computação
• Este tipo de programação tornou-se ainda mais
importante com o advento dos sistemas distribuídos e
das máquinas com arquitetura paralela
Programação Concorrente
• Tradicionalmente, a grande maioria dos programas
escritos são programas sequenciais
– Para serem executados em um único computador com uma
única CPU
– O problema é dividido em uma série de instruções que são
executadas uma após a outra
– Uma única instrução pode ser executada em um determinado
instante de tempo
• Nesse caso, existe somente um fluxo de controle (fluxo
de execução, linha de execução, thread) no programa
• Isso permite, por exemplo, que o programador realize
uma "execução imaginária" de seu programa apontando
com o dedo, a cada instante, o comando que está sendo
executado no momento
Programação Concorrente
• Um programa concorrente pode ser visto como se tivesse
vários fluxos de execução
– Para o programador realizar agora uma "execução imaginaria",
ele vai necessitar de vários dedos, um para cada fluxo de
controle
– Em programação concorrente é definido o uso simultâneo de
múltiplos recursos computacionais para resolver um problema
• Para ser executado em diversas CPUs:
– O problema é quebrado em partes que podem ser executadas
(resolvidas) concorrentemente
– Cada uma destas partes é representada por uma série de
instruções, sendo que as instruções de cada parte são
executadas concorrentemente em diferentes CPUs
Programação Concorrente
• É comum em sistemas multiusuário que um mesmo programa
seja executado simultaneamente por vários usuários:
– Por exemplo, um editor de texto
– Entretanto, ter 10 execuções simultâneas do editor de texto não faz
dele um programa concorrente – o que se tem são 10 processos
independentes executando o mesmo programa sequencial
(compartilhando o mesmo código)
– Cada processo tem a sua área de dados e ignora a existência das
outras execuções do programa
– Esses processos não interagem entre si (não trocam informações)
– Neste caso, é usado o termo programação paralela, pois vários
programas/processos independentes são executados em paralelo
pelo computador
• Um programa é considerado concorrente quando ele (o
próprio programa, durante a sua execução) origina diferentes
processos que irão interagir entre si para realizar alguma
tarefa
Conceitos
• Paralelismo
– Processamento simultâneo físico
• Concorrência
– Processamento simultâneo lógico (aparente)
– Requer entrelaçamento (interleaving) de ações
• Processo
– Execução de um programa
• Programa Concorrente
– Vários processos que cooperam para a realização de uma tarefa
Recursos Computacionais
• Um único computador com múltiplos processadores
• Um número arbitrário de computadores conectados pela
rede
• Uma combinação de ambos (múltiplos computadores,
com múltiplos processadores, conectados pela rede)
Problema Computacional
• O problema computacional geralmente demonstra
características como a habilidade de ser:
– Quebrados em partes de um trabalho que pode ser resolvido de
forma simultânea
– Executar múltiplas instruções do programa a qualquer
momento no tempo
– Resolvido em menos tempo com vários recursos de computação
do que com um único recurso computacional
Motivação
• Programação concorrente é mais complexa do que a
programação sequencial:
– Erros dos programas sequenciais + erros associados as
interações entre os processos
– Erros dependem do momento exato em que o escalonador do
SO realiza um chaveamento de contexto ou do recebimento de
uma mensagem
– Difícil reprodução e identificação
Motivação
• Apesar da maior complexidade, existem muitas áreas nas
quais a programação concorrente é vantajosa:
– Em sistemas nos quais existem vários processadores (máquinas
paralelas ou sistemas distribuídos), é possível aproveitar esse
paralelismo e acelerar a execução do programa
– Mesmo em sistemas com um único processador, existem razões
para o seu uso em vários tipos de aplicações
Exemplo
• Leitura, formatação e impressão de arquivo!
• Solução sequencial:
• Solução concorrente:
Arquivo
Impressora
FísicaProcesso
Arquivo
Processo
Leitor
Buffer
Processo
Impressor
Impressora
Física
Exemplo
• O uso da programação concorrente é natural nas
aplicações que apresentam paralelismo intrínseco, ditas
aplicações inerentemente paralelas
– Nessas aplicações pode-se distinguir facilmente funções para
serem realizadas em paralelo
– Este é o caso do spooling de impressão, exemplo que será
apresentado a seguir
• Pode-se dizer que, em geral, a programação concorrente
tem aplicação natural na construção de sistemas que
tenham de implementar serviços que são requisitados de
forma imprevisível
– Nesse caso, o programa concorrente terá um processo para
realizar cada tipo de serviço
Spooling de Impressão
• A seguir é considerado um servidor de impressão para
uma rede local
• A figura ilustra uma rede local na qual existem diversos
computadores pessoais (PC) utilizados pelos usuários e
existe um computador dedicado ao papel de servidor de
impressão
• O servidor usa um disco magnético para manter os
arquivos que estão na fila de impressão
Rede local incluindo um servidor de impressão dedicado
Usuários Servidor de Impressão
Spooling de Impressão
• É importante observar que o programa "servidor de
impressão" possui paralelismo intrínseco
• Ele deve:
1. receber mensagens pela rede
2. escrever em disco os pedaços de arquivos recebidos
3. enviar mensagens pela rede (contendo, por exemplo, respostas às
consultas sobre o seu estado)
4. ler arquivos previamente recebidos (para imprimí-los)
5. enviar dados para a impressora
• Todas essas atividades podem ser realizadas
simultaneamente
• Uma forma de programar o servidor de impressão é usar
vários processos, cada um responsável por uma atividade
em particular
– Obviamente, esses processos vão precisar trocar informações para
realizar o seu trabalho
Spooling de Impressão
Rede
Receptor Transmissor
Protocolo
Escritor
Leitor Impressor
Buffer
Impressora
Vantagens
• Economizar tempo e dinheiro
• Resolver grandes problemas
– Muitos problemas são tão grandes/complexos que é
impraticável ou impossível resolvê-los num único computador,
especialmente quando a memória é limitada
• Superar as limitações da computação sequencial:
– razões físicas e práticas restringem a construção de
computadores cada vez mais rápidos
• Arquiteturas de computadores atuais são cada vez mais
dependentes do paralelismo em nível de hardware para
melhorar o desempenho
Aplicações Mais Ágeis (responsive)
• Quando iniciamos uma aplicação, o fluxo principal de
execução, muitas vezes assume múltiplas
responsabilidades sequencialmente, dependendo das
ações que pedimos para realizar:
– Receber entrada de um usuário, ler um arquivo, executar alguns
cálculos, acessar um serviço web, atualizar um banco de dados,
exibir uma resposta ao usuário, e assim por diante
• Se cada uma dessas operações leva apenas frações de
segundo, então pode não haver necessidade real para
introduzir fluxos adicionais de execução
– Um único fluxo pode ser adequado para atender às
necessidades
Aplicações Mais Ágeis (responsive)
• Em aplicações não triviais, no entanto, essas operações
podem não ser tão rápidas:
– Cálculos podem levar de alguns segundos até alguns minutos
– Os pedidos de dados a um serviço web pode encontrar atrasos de
rede, de modo que o fluxo deve aguardar a resposta para chegar
– Enquanto isso está acontecendo, não há nenhuma maneira dos
usuários do aplicativo interagirem com, ou interromperem a
aplicação, porque um único fluxo é executado até que a operação
termine
• Concorrência pode não só ajudar a tornar as aplicações mais
ágeis, como também podem ajudar a melhorar a experiência
do usuário
– Os aplicativos podem olhar para frente em operações que o usuário
poderá realizar no próximo passo e realizar as ações necessárias,
como indexação ou cache de alguns dados de que o usuário precisa
Serviços
• Supondo que estamos encarregados de construir um
aplicativo que precisa processar lotes de notas fiscais de
vários fornecedores
• Isso exige que nós apliquemos regras e fluxo de trabalho
em cada fatura, mas podemos processá-las em qualquer
ordem
• O processamento dessas faturas sequencialmente não vai
aproveitar a taxa de transferência ou utilizar os recursos
disponíveis
• Nossa aplicação precisa processar essas faturas
simultaneamente
Vantagens
• Utilizar mais de um computador ou um computador com
mais de um processador, para resolver um determinado
problema
– N computadores operando simultaneamente podem atingir o
resultado N vezes mais rápido (não será exatamente N vezes
mais rápidos por uma série de razões)
• Outros motivos incluem:
– Tolerância a falhas, grande quantidade de memória disponível,
redução da latência, etc.
Perigos da Concorrência
• Agora, você provavelmente está pensando: "Eu posso ter
melhor rendimento, quebrando o meu problema e deixando
vários fluxos trabalharem sobre estas partes“
• Infelizmente, os problemas raramente pode ser dividido em
partes isoladas que podem ser executados totalmente
independentes umas das outras
– Muitas vezes, podemos executar algumas operações de forma
independente, mas depois temos que mesclar os resultados parciais
para obter o resultado final
• Isso requer que os fluxos comuniquem os resultados parciais
e às vezes esperar por esses resultados para finalizar o
trabalho
• Devemos possuir então, uma coordenação entre fluxos que
pode levar a problemas de sincronização e bloqueio
(deadlock)
Perigos da Concorrência
• Starvation (inanição)
– Ocorre inanição quando um processo nunca é executado
("morre de fome"), pois processos de prioridade maior sempre
o impedem de ser executado
Perigos da Concorrência
• Deadlock (interbloqueio, blocagem, impasse)
– No contexto de sistemas operacionais, caracteriza uma situação
em que ocorre um impasse e dois ou mais processos ficam
impedidos de continuar suas execuções, ou seja, ficam
bloqueados
– Trata-se de um problema bastante estudado no contexto dos
sistemas operacionais, assim como em outras disciplinas,
como banco de dados, pois é inerente à própria natureza desses
sistemas
– O deadlock ocorre quando um ou mais processos está
aguardando a liberação de um recurso por um outro processo
que, por sua vez, aguarda a liberação de outro recurso alocado
ou dependente do primeiro processo
Perigos da Concorrência
• Condições de corrida (race conditions)
– Se duas threads competem para usar o mesmo recurso ou
dados, temos uma condição de corrida
– A condição de corrida não acontecerão apenas quando dois
fluxos modificam dados, também pode acontecer mesmo
quando um está modificando dados, enquanto o outro está
tentando acessá-lo
– Condições de corrida pode tornar o comportamento de um
programa imprevisível, produzir execução incorreta, e produzir
resultados incorretos
Referências
• Wikipedia. Programação Concorrente. Acessado em:
fev/2015. Disponível em: http://pt.wikipedia.org/wiki/
Programação_concorrente
• ALCHIERI, E. Programação Concorrente: Introdução. UNB.
Acessado em: fev/2015. Disponível em:
www.cic.unb.br/~alchieri/disciplinas/graduacao/pc/intro
ducao.pdf
• TOSCANI, S. Programação Concorrente. PUCRS. Acessado
em fev/2015. Disponível em: www.inf.pucrs.br/~ramos/
sop_progconctext.doc
• SUBRAMANIAM, V. Programming Concurrency on the
JVM. The Pragmatic Bookshelf, 2011.
UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA
CURSO DE CIÊNCIA DA COMPUTAÇÃO
PROGRAMAÇÃO CONCORRENTE – 2015.1
Fábio M. Pereira
(fabio.mpereira@uesb.edu.br)

Mais conteúdo relacionado

Mais procurados

2009 1 - sistemas operacionais - aula 8 - memoria
2009 1 - sistemas operacionais - aula 8 - memoria2009 1 - sistemas operacionais - aula 8 - memoria
2009 1 - sistemas operacionais - aula 8 - memoria
Computação Depressão
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
Eduardo Nicola F. Zagari
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
Elaine Cecília Gatto
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
licardino
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
Elaine Cecília Gatto
 
Aula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativosAula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativos
CEULJI/ULBRA Centro Universitário Luterano de Ji-Paraná
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Leinylson Fontinele
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
Adriano Teixeira de Souza
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamento
camila_seixas
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
Clayton de Almeida Souza
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
Daniel Arndt Alves
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
guest82cc1d
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
Computação Depressão
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
elliando dias
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
Nécio de Lima Veras
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
Alberto Simões
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
Rudson Kiyoshi Souza Carvalho
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de Software
Camilo Almendra
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
Leinylson Fontinele
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Leinylson Fontinele
 

Mais procurados (20)

2009 1 - sistemas operacionais - aula 8 - memoria
2009 1 - sistemas operacionais - aula 8 - memoria2009 1 - sistemas operacionais - aula 8 - memoria
2009 1 - sistemas operacionais - aula 8 - memoria
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Aula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativosAula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativos
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
 
Aula 12 - Escalonamento
Aula 12 - EscalonamentoAula 12 - Escalonamento
Aula 12 - Escalonamento
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de Software
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 

Destaque

Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
Fabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
Fabio Moura Pereira
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
Fabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
Fabio Moura Pereira
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
Fabio Moura Pereira
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01
thomasdacosta
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
Fabio Moura Pereira
 
Aula Prolog 01
Aula Prolog 01Aula Prolog 01
Aula Prolog 01
Fabio Moura Pereira
 
Aula de Prolog 06 - Recursão
Aula de Prolog 06 - RecursãoAula de Prolog 06 - Recursão
Aula de Prolog 06 - Recursão
Fabio Moura Pereira
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
Fabio Moura Pereira
 
Aula Prolog 03
Aula Prolog 03Aula Prolog 03
Aula Prolog 03
Fabio Moura Pereira
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
Fabio Moura Pereira
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
Fabio Moura Pereira
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
Fabio Moura Pereira
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Fabio Moura Pereira
 
Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
Fabio Moura Pereira
 
Aula de Desenvolvimento de Sistemas Web - CSS3
Aula de Desenvolvimento de Sistemas Web - CSS3Aula de Desenvolvimento de Sistemas Web - CSS3
Aula de Desenvolvimento de Sistemas Web - CSS3
Fabio Moura Pereira
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do Usuário
Fabio Moura Pereira
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
Fabio Moura Pereira
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
Fabio Moura Pereira
 

Destaque (20)

Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
 
Aula Prolog 01
Aula Prolog 01Aula Prolog 01
Aula Prolog 01
 
Aula de Prolog 06 - Recursão
Aula de Prolog 06 - RecursãoAula de Prolog 06 - Recursão
Aula de Prolog 06 - Recursão
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
 
Aula Prolog 03
Aula Prolog 03Aula Prolog 03
Aula Prolog 03
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - Introdução
 
Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
 
Aula de Desenvolvimento de Sistemas Web - CSS3
Aula de Desenvolvimento de Sistemas Web - CSS3Aula de Desenvolvimento de Sistemas Web - CSS3
Aula de Desenvolvimento de Sistemas Web - CSS3
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do Usuário
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
 

Semelhante a Programação Concorrente - Introdução

Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
Luiz Arthur
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Charles Fortes
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
paulocsm
 
Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1
Matheus Brito
 
Sistema operacional
Sistema operacionalSistema operacional
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
Isaac Vieira
 
Introdução à Computação de Alto Desempenho - Parte II
Introdução à Computação de Alto Desempenho - Parte IIIntrodução à Computação de Alto Desempenho - Parte II
Introdução à Computação de Alto Desempenho - Parte II
Vinícius Hax
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Luiz Arthur
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Charles Fortes
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
Sérgio Santos Silva Filho
 
Aula 02
Aula 02Aula 02
Curso openmp
Curso openmpCurso openmp
Curso openmp
Devel Desenvolvimento
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
BrennoPimenta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
thomasdacosta
 
Aula 1
Aula 1Aula 1
Aula 1
Henrique
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
Frederico Madeira
 
fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.O
Pablo Lopes
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
Luiz Arthur
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
gabrieloliveiramarti3
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
SuperTec1
 

Semelhante a Programação Concorrente - Introdução (20)

Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
 
Introdução à Computação de Alto Desempenho - Parte II
Introdução à Computação de Alto Desempenho - Parte IIIntrodução à Computação de Alto Desempenho - Parte II
Introdução à Computação de Alto Desempenho - Parte II
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Aula 02
Aula 02Aula 02
Aula 02
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Aula 1
Aula 1Aula 1
Aula 1
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.O
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
 

Mais de Fabio Moura Pereira

Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - Unificação
Fabio Moura Pereira
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
Fabio Moura Pereira
 
Aula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de InteraçãoAula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de Interação
Fabio Moura Pereira
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Fabio Moura Pereira
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
Fabio Moura Pereira
 
Curso de PHP - Objetos
Curso de PHP - ObjetosCurso de PHP - Objetos
Curso de PHP - Objetos
Fabio Moura Pereira
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game DesignDesenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game Design
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
Fabio Moura Pereira
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1
Fabio Moura Pereira
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
Fabio Moura Pereira
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
Fabio Moura Pereira
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
Fabio Moura Pereira
 

Mais de Fabio Moura Pereira (13)

Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - Unificação
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
 
Aula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de InteraçãoAula - Interfaces e Estilos de Interação
Aula - Interfaces e Estilos de Interação
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Curso de PHP - Objetos
Curso de PHP - ObjetosCurso de PHP - Objetos
Curso de PHP - Objetos
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
 
Desenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game DesignDesenvolvimento de Jogos - Game Design
Desenvolvimento de Jogos - Game Design
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 

Último

A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
Falcão Brasil
 
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
Falcão Brasil
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
LuizHenriquedeAlmeid6
 
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIALA GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
ArapiracaNoticiasFat
 
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdfPlano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
Falcão Brasil
 
Boletim informativo - Contacto - julho de 2024
Boletim informativo - Contacto - julho de 2024Boletim informativo - Contacto - julho de 2024
Boletim informativo - Contacto - julho de 2024
Bibliotecas Escolares AEIDH
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Falcão Brasil
 
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdfEscola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
Falcão Brasil
 
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
Falcão Brasil
 
A Guerra do Presente - Ministério da Defesa.pdf
A Guerra do Presente - Ministério da Defesa.pdfA Guerra do Presente - Ministério da Defesa.pdf
A Guerra do Presente - Ministério da Defesa.pdf
Falcão Brasil
 
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdfAviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Falcão Brasil
 
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
Miguel Delamontagne
 
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsxOceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Luzia Gabriele
 
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
SheylaAlves6
 
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdfGeotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Falcão Brasil
 
Escola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdfEscola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdf
Falcão Brasil
 
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Falcão Brasil
 
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.pptAnálise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Falcão Brasil
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
LeideLauraCenturionL
 

Último (20)

RECORDANDO BONS MOMENTOS! _
RECORDANDO BONS MOMENTOS!               _RECORDANDO BONS MOMENTOS!               _
RECORDANDO BONS MOMENTOS! _
 
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
 
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
Manual de Identidade Visual do Centro Gestor e Operacional do Sistema de Prot...
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
 
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIALA GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
 
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdfPlano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
Plano Diretor da Tecnologia da Informação PDTIC 2020 a 2023.pdf
 
Boletim informativo - Contacto - julho de 2024
Boletim informativo - Contacto - julho de 2024Boletim informativo - Contacto - julho de 2024
Boletim informativo - Contacto - julho de 2024
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
 
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdfEscola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
Escola de Comando e Estado-Maior da Aeronáutica (ECEMAR).pdf
 
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
Plano Estratégico Institucional do Centro Gestor e Operacional do Sistema de ...
 
A Guerra do Presente - Ministério da Defesa.pdf
A Guerra do Presente - Ministério da Defesa.pdfA Guerra do Presente - Ministério da Defesa.pdf
A Guerra do Presente - Ministério da Defesa.pdf
 
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdfAviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
Aviação de Asas Rotativas. Aos Rotores, o Sabre!.pdf
 
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
Ensinar Programação 📚 Python 🐍 Método Inovador e Prático 🚀
 
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsxOceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
Oceano, Fonte de Vida e Beleza Maria Inês Aroeira Braga.ppsx
 
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
28 - Agente de Endemias (40 mapas mentais) - Amostra.pdf
 
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdfGeotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
 
Escola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdfEscola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdf
 
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
 
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.pptAnálise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
 

Programação Concorrente - Introdução

  • 1. UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA CURSO DE CIÊNCIA DA COMPUTAÇÃO PROGRAMAÇÃO CONCORRENTE – 2015.1 Fábio M. Pereira (fabio.mpereira@uesb.edu.br)
  • 2. Programação Concorrente • Do inglês Concurrent Programming, onde Concurrent significa “acontecendo ao mesmo tempo” • É um paradigma de programação para a construção de programas de computador que fazem uso da execução concorrente (simultânea) de várias tarefas computacionais interativas, que podem ser implementadas como programas separados ou como um conjunto de threads criadas por um único programa • É diferente de computação paralela! Fio, linha, fluxo
  • 3. Programação Concorrente • A programação concorrente foi usada inicialmente na construção de sistemas operacionais • Atualmente, ela é usada para desenvolver aplicações em todas as áreas da computação • Este tipo de programação tornou-se ainda mais importante com o advento dos sistemas distribuídos e das máquinas com arquitetura paralela
  • 4. Programação Concorrente • Tradicionalmente, a grande maioria dos programas escritos são programas sequenciais – Para serem executados em um único computador com uma única CPU – O problema é dividido em uma série de instruções que são executadas uma após a outra – Uma única instrução pode ser executada em um determinado instante de tempo • Nesse caso, existe somente um fluxo de controle (fluxo de execução, linha de execução, thread) no programa • Isso permite, por exemplo, que o programador realize uma "execução imaginária" de seu programa apontando com o dedo, a cada instante, o comando que está sendo executado no momento
  • 5. Programação Concorrente • Um programa concorrente pode ser visto como se tivesse vários fluxos de execução – Para o programador realizar agora uma "execução imaginaria", ele vai necessitar de vários dedos, um para cada fluxo de controle – Em programação concorrente é definido o uso simultâneo de múltiplos recursos computacionais para resolver um problema • Para ser executado em diversas CPUs: – O problema é quebrado em partes que podem ser executadas (resolvidas) concorrentemente – Cada uma destas partes é representada por uma série de instruções, sendo que as instruções de cada parte são executadas concorrentemente em diferentes CPUs
  • 6. Programação Concorrente • É comum em sistemas multiusuário que um mesmo programa seja executado simultaneamente por vários usuários: – Por exemplo, um editor de texto – Entretanto, ter 10 execuções simultâneas do editor de texto não faz dele um programa concorrente – o que se tem são 10 processos independentes executando o mesmo programa sequencial (compartilhando o mesmo código) – Cada processo tem a sua área de dados e ignora a existência das outras execuções do programa – Esses processos não interagem entre si (não trocam informações) – Neste caso, é usado o termo programação paralela, pois vários programas/processos independentes são executados em paralelo pelo computador • Um programa é considerado concorrente quando ele (o próprio programa, durante a sua execução) origina diferentes processos que irão interagir entre si para realizar alguma tarefa
  • 7. Conceitos • Paralelismo – Processamento simultâneo físico • Concorrência – Processamento simultâneo lógico (aparente) – Requer entrelaçamento (interleaving) de ações • Processo – Execução de um programa • Programa Concorrente – Vários processos que cooperam para a realização de uma tarefa
  • 8. Recursos Computacionais • Um único computador com múltiplos processadores • Um número arbitrário de computadores conectados pela rede • Uma combinação de ambos (múltiplos computadores, com múltiplos processadores, conectados pela rede)
  • 9. Problema Computacional • O problema computacional geralmente demonstra características como a habilidade de ser: – Quebrados em partes de um trabalho que pode ser resolvido de forma simultânea – Executar múltiplas instruções do programa a qualquer momento no tempo – Resolvido em menos tempo com vários recursos de computação do que com um único recurso computacional
  • 10. Motivação • Programação concorrente é mais complexa do que a programação sequencial: – Erros dos programas sequenciais + erros associados as interações entre os processos – Erros dependem do momento exato em que o escalonador do SO realiza um chaveamento de contexto ou do recebimento de uma mensagem – Difícil reprodução e identificação
  • 11. Motivação • Apesar da maior complexidade, existem muitas áreas nas quais a programação concorrente é vantajosa: – Em sistemas nos quais existem vários processadores (máquinas paralelas ou sistemas distribuídos), é possível aproveitar esse paralelismo e acelerar a execução do programa – Mesmo em sistemas com um único processador, existem razões para o seu uso em vários tipos de aplicações
  • 12. Exemplo • Leitura, formatação e impressão de arquivo! • Solução sequencial: • Solução concorrente: Arquivo Impressora FísicaProcesso Arquivo Processo Leitor Buffer Processo Impressor Impressora Física
  • 13. Exemplo • O uso da programação concorrente é natural nas aplicações que apresentam paralelismo intrínseco, ditas aplicações inerentemente paralelas – Nessas aplicações pode-se distinguir facilmente funções para serem realizadas em paralelo – Este é o caso do spooling de impressão, exemplo que será apresentado a seguir • Pode-se dizer que, em geral, a programação concorrente tem aplicação natural na construção de sistemas que tenham de implementar serviços que são requisitados de forma imprevisível – Nesse caso, o programa concorrente terá um processo para realizar cada tipo de serviço
  • 14. Spooling de Impressão • A seguir é considerado um servidor de impressão para uma rede local • A figura ilustra uma rede local na qual existem diversos computadores pessoais (PC) utilizados pelos usuários e existe um computador dedicado ao papel de servidor de impressão • O servidor usa um disco magnético para manter os arquivos que estão na fila de impressão Rede local incluindo um servidor de impressão dedicado Usuários Servidor de Impressão
  • 15. Spooling de Impressão • É importante observar que o programa "servidor de impressão" possui paralelismo intrínseco • Ele deve: 1. receber mensagens pela rede 2. escrever em disco os pedaços de arquivos recebidos 3. enviar mensagens pela rede (contendo, por exemplo, respostas às consultas sobre o seu estado) 4. ler arquivos previamente recebidos (para imprimí-los) 5. enviar dados para a impressora • Todas essas atividades podem ser realizadas simultaneamente • Uma forma de programar o servidor de impressão é usar vários processos, cada um responsável por uma atividade em particular – Obviamente, esses processos vão precisar trocar informações para realizar o seu trabalho
  • 16. Spooling de Impressão Rede Receptor Transmissor Protocolo Escritor Leitor Impressor Buffer Impressora
  • 17. Vantagens • Economizar tempo e dinheiro • Resolver grandes problemas – Muitos problemas são tão grandes/complexos que é impraticável ou impossível resolvê-los num único computador, especialmente quando a memória é limitada • Superar as limitações da computação sequencial: – razões físicas e práticas restringem a construção de computadores cada vez mais rápidos • Arquiteturas de computadores atuais são cada vez mais dependentes do paralelismo em nível de hardware para melhorar o desempenho
  • 18. Aplicações Mais Ágeis (responsive) • Quando iniciamos uma aplicação, o fluxo principal de execução, muitas vezes assume múltiplas responsabilidades sequencialmente, dependendo das ações que pedimos para realizar: – Receber entrada de um usuário, ler um arquivo, executar alguns cálculos, acessar um serviço web, atualizar um banco de dados, exibir uma resposta ao usuário, e assim por diante • Se cada uma dessas operações leva apenas frações de segundo, então pode não haver necessidade real para introduzir fluxos adicionais de execução – Um único fluxo pode ser adequado para atender às necessidades
  • 19. Aplicações Mais Ágeis (responsive) • Em aplicações não triviais, no entanto, essas operações podem não ser tão rápidas: – Cálculos podem levar de alguns segundos até alguns minutos – Os pedidos de dados a um serviço web pode encontrar atrasos de rede, de modo que o fluxo deve aguardar a resposta para chegar – Enquanto isso está acontecendo, não há nenhuma maneira dos usuários do aplicativo interagirem com, ou interromperem a aplicação, porque um único fluxo é executado até que a operação termine • Concorrência pode não só ajudar a tornar as aplicações mais ágeis, como também podem ajudar a melhorar a experiência do usuário – Os aplicativos podem olhar para frente em operações que o usuário poderá realizar no próximo passo e realizar as ações necessárias, como indexação ou cache de alguns dados de que o usuário precisa
  • 20. Serviços • Supondo que estamos encarregados de construir um aplicativo que precisa processar lotes de notas fiscais de vários fornecedores • Isso exige que nós apliquemos regras e fluxo de trabalho em cada fatura, mas podemos processá-las em qualquer ordem • O processamento dessas faturas sequencialmente não vai aproveitar a taxa de transferência ou utilizar os recursos disponíveis • Nossa aplicação precisa processar essas faturas simultaneamente
  • 21. Vantagens • Utilizar mais de um computador ou um computador com mais de um processador, para resolver um determinado problema – N computadores operando simultaneamente podem atingir o resultado N vezes mais rápido (não será exatamente N vezes mais rápidos por uma série de razões) • Outros motivos incluem: – Tolerância a falhas, grande quantidade de memória disponível, redução da latência, etc.
  • 22. Perigos da Concorrência • Agora, você provavelmente está pensando: "Eu posso ter melhor rendimento, quebrando o meu problema e deixando vários fluxos trabalharem sobre estas partes“ • Infelizmente, os problemas raramente pode ser dividido em partes isoladas que podem ser executados totalmente independentes umas das outras – Muitas vezes, podemos executar algumas operações de forma independente, mas depois temos que mesclar os resultados parciais para obter o resultado final • Isso requer que os fluxos comuniquem os resultados parciais e às vezes esperar por esses resultados para finalizar o trabalho • Devemos possuir então, uma coordenação entre fluxos que pode levar a problemas de sincronização e bloqueio (deadlock)
  • 23. Perigos da Concorrência • Starvation (inanição) – Ocorre inanição quando um processo nunca é executado ("morre de fome"), pois processos de prioridade maior sempre o impedem de ser executado
  • 24. Perigos da Concorrência • Deadlock (interbloqueio, blocagem, impasse) – No contexto de sistemas operacionais, caracteriza uma situação em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados – Trata-se de um problema bastante estudado no contexto dos sistemas operacionais, assim como em outras disciplinas, como banco de dados, pois é inerente à própria natureza desses sistemas – O deadlock ocorre quando um ou mais processos está aguardando a liberação de um recurso por um outro processo que, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo
  • 25. Perigos da Concorrência • Condições de corrida (race conditions) – Se duas threads competem para usar o mesmo recurso ou dados, temos uma condição de corrida – A condição de corrida não acontecerão apenas quando dois fluxos modificam dados, também pode acontecer mesmo quando um está modificando dados, enquanto o outro está tentando acessá-lo – Condições de corrida pode tornar o comportamento de um programa imprevisível, produzir execução incorreta, e produzir resultados incorretos
  • 26. Referências • Wikipedia. Programação Concorrente. Acessado em: fev/2015. Disponível em: http://pt.wikipedia.org/wiki/ Programação_concorrente • ALCHIERI, E. Programação Concorrente: Introdução. UNB. Acessado em: fev/2015. Disponível em: www.cic.unb.br/~alchieri/disciplinas/graduacao/pc/intro ducao.pdf • TOSCANI, S. Programação Concorrente. PUCRS. Acessado em fev/2015. Disponível em: www.inf.pucrs.br/~ramos/ sop_progconctext.doc • SUBRAMANIAM, V. Programming Concurrency on the JVM. The Pragmatic Bookshelf, 2011.
  • 27. UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA CURSO DE CIÊNCIA DA COMPUTAÇÃO PROGRAMAÇÃO CONCORRENTE – 2015.1 Fábio M. Pereira (fabio.mpereira@uesb.edu.br)