SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Universidade Metodista Unida de
MoçambiqueCampus Universitário de
CambineEngenharia Informática e
Tecnologias
Discentes:
Chelton Lazaro
Dercio Cumbane
Gil Alexandre
Lidson Olinda Pave
Nildo jaciinto
UnidadeCurricular:ParadigmadeProgramação
Docente: Eng. Iolanda
1
Paradigmade Programação Concorrente
 Definição
 Caracteristicas da Programação Concorrente
 Programação Paralela
 Vantagens da Programação Concorrente
 Desvantagens da programação concorrente
 Desafios da Programação Concorrente
 Comunicação e Interação entre programas concorrentes
 Conflitos e Compartilhamento de Recursos
 Diferença entre concorrência e paralelismo
 Sintaxe e semântica das linguagens Concorrentes
 Principais linguagens da programação concorrente
Definição
O termo "programação concorrente" vem do inglês concurrent programming, onde
concurrent significa "acontecendo ao mesmo tempo".
A programação concorrente é um paradigma de programação usado na construção de
programas que fazem uso da execução simultânea de diversas tarefas que podem ser
implementadas como programas separados ou como um único programa que dispara várias
linhas de execução em paralelo. As linhas de execução também são conhecidas como
threads.
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
Características da Programação
Concorrente
 Execução simultânea de tarefas
 Comunicação e coordenação entre tarefas
 Sincronização e exclusão mútua
 Independência de tarefas
 Concorrência e paralelismo
 Tratamento de exceções
 Escalabilidade e desempenho
Programação Paralela
Programação paralela é uma forma de computação em que vários cálculos
são realizados ao mesmo tempo, operando sob o princípio de que grandes
problemas geralmente podem ser divididos em problemas menores, que
então são resolvidos concorrentemente (em paralelo).
Existem diferentes formas de computação paralela: em bit, instrução, de
dado ou de tarefa.
A técnica de paralelismo já é empregada há vários anos, principalmente na
computação de alto desempenho
Vantagens da Programação
Concorrente
 Melhoria de desempenho
 Responsividade
 Modularidade
 Escalabilidade
 Tolerância a falhas
 Compartilhamento de recursos
 Simplificação do código
Cont…
 A principal vantagem do uso da programação concorrente é o
aumento do desempenho dos programas, pois é possível aumentar a
quantidade de tarefas executadas em um determinado período de
tempo.
Desvantagens da programação concorrente
 Dificuldade de programação
 Baixo suporte de hardware
 Concorrência e sincronização
 Consumo de recursos
 Dificuldades de depuração:
 Acesso compartilhado
 Complexidade do código
 Dificuldade de previsão de desempenho
Desafios da Programação Concorrente
O grande desafio da programação concorrente é o
compartilhamento de recursos, a comunicação e a interação
entre os programas que são executados concorrentemente. O
objetivo deve ser o de administrar o acesso concorrente aos
recursos computacionais, tais como por exemplo, o acesso aos
discos ou a outros recursos compartilhados, como a impressora.
Comunicação e Interação entre programas
concorrentes
Em um sistema computacional concorrente, os programas
executados de forma concorrente podem ter a necessidade de
se comunicarem para troca de informações. Neste contexto, é
importante que o programador possa ter alguma informação
sobre como é feita a comunicação entre os programas
executados concorrentemente.
Conflitos e Compartilhamento de Recursos
É preciso evitar conflitos entre os programas concorrentes. Os
conflitos podem ocorrer porque os programas concorrentes
fazem uso de recursos compartilhados e por isso a necessidade
de se ter controle de concorrência.
Em alguns sistemas computacionais concorrentes a comunicação
entre os processos concorrentes é 'escondida' do programador
mas em outros sistemas a comunicação é explícita, podendo ser
interpretada pelo programador.
Comunicação por memória compartilhada
Neste tipo de comunicação os processos comunicam-se através
do acesso à áreas de memória que são compartilhadas entre os
processos concorrente. Neste tipo de comunicação deve ser
feiro gerenciamento do uso da memória compartilhada a fim de
que um processo não interfira na execução de outro processo
sendo executado concorrentemente.
Diferença entre concorrência e
paralelismo
Concorrência é basicamente a
capacidade de lidar com várias
coisas de uma só vez.
Paralelismo é a capacidade de
lidar com várias coisas ao
mesmo tempo.
Sintaxe e semântica das linguagens Concorrentes
Linguagem C#
Inicialmente, a aplicação da linguagem C foi direccionada para a programação de
sistemas, nomeadamente durante o desenvolvimento do sistema operativo Unix. Tendo a
sua verstilidade, contudo, levado a que fosse utilizada em diversos contextos. Algumas
das suas características principais são:
Portabilidade – Os programas em C correm com poucas ou nenhumas alterações, quando
instalados em diferentes máquinas com diferentes sistemas operativos.
Estrutura – A linguagem C tem atributos e uma estrutura de uma linguagem programação
moderna, sendo uma linguagem estruturada que permite, por exemplo, a recursão.
Cont…
Eficiência – O C permite desenvolver programas tanto a alto como a baixo
nivel. Possui um grande número de operadores bit a bit (bitwise
operators). Além disso, permite trabalhar eficientemente com ponteiros.
O programa principal da linguagem de programação C deve conter uma
função chamada main, e deve ter a seguinte estrutura:
Linguagem C++
C++ (em português: Pronuncia-se "cê mais mais") é uma linguagem de
programação compilada multi-paradigma (seu suporte inclui linguagem
imperativa, orientada a objetos e genérica) e de uso geral. Desde os anos
1990 é uma das linguagens comerciais mais populares, sendo bastante
usada também na academia por seu grande desempenho e base de
utilizadores.
Cont…
 Java: é uma linguagem de programação amplamente utilizada em
desenvolvimento de aplicativos empresariais.
 Foi desenvolvida na SUNM,ICROSYSTEMS em1991,uma grande vantagem
que ela apresenta é o facto de seus códigos fonte e objetos serem
portáteis para diversas arquiteturas e sistemas operacionais.
 A sua sintaxe é
Principais linguagens da programação
concorrente
Java: Java é uma linguagem de programação amplamente utilizada em
desenvolvimento de aplicativos empresariais e também oferece suporte a
concorrência por meio do pacote java.util.concurrent.
C/C++: C e C++ são linguagens de programação populares, amplamente
utilizadas em sistemas embarcados e de alto desempenho
Erlang: Erlang é uma linguagem de programação funcional e concorrente
projetada especificamente para sistemas distribuídos e tolerantes a falhas.
Erlang possui suporte integrado para concorrência
cont…
Rust: Rust é uma linguagem de programação moderna que é
projetada para ser segura, concorrente e de alto desempenho.
Rust possui primitivas de concorrência, como threads e canais,
e seu sistema de tipos e modelo de propriedade ajudam a
prevenir condições de corrida e outros problemas comuns de
concorrência.
.
Obrigado pela atenção dispensada

Mais conteúdo relacionado

Mais procurados

Fault simulation – application and methods
Fault simulation – application and methodsFault simulation – application and methods
Fault simulation – application and methodsSubash John
 
Structural and functional testing
Structural and functional testingStructural and functional testing
Structural and functional testingHimanshu
 
Lexical analysis - Compiler Design
Lexical analysis - Compiler DesignLexical analysis - Compiler Design
Lexical analysis - Compiler DesignKuppusamy P
 
Chapter 9 Testing Strategies.ppt
Chapter 9 Testing Strategies.pptChapter 9 Testing Strategies.ppt
Chapter 9 Testing Strategies.pptVijayaPratapReddyM
 
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONS
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONSUNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONS
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONSDr.YNM
 
Quality attributes(Non operational) of embedded systems
Quality attributes(Non operational) of embedded systemsQuality attributes(Non operational) of embedded systems
Quality attributes(Non operational) of embedded systemsShreyaBhoje
 
Model based design-Hardware in loop-software in loop
Model based design-Hardware in loop-software in loopModel based design-Hardware in loop-software in loop
Model based design-Hardware in loop-software in loopMahmoud Hussein
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software TestingMohammed Moishin
 
Security in embedded systems
Security in embedded systemsSecurity in embedded systems
Security in embedded systemsRaghav S
 
Programmable array-logic-and-programmable-logic-array
Programmable array-logic-and-programmable-logic-arrayProgrammable array-logic-and-programmable-logic-array
Programmable array-logic-and-programmable-logic-arrayJher Carlson Atasan
 
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...Obeo
 
Knowledge representation and reasoning
Knowledge representation and reasoningKnowledge representation and reasoning
Knowledge representation and reasoningMaryam Maleki
 
On the verification of configurable nocs in simulation and hardware emulation...
On the verification of configurable nocs in simulation and hardware emulation...On the verification of configurable nocs in simulation and hardware emulation...
On the verification of configurable nocs in simulation and hardware emulation...Sameh El-Ashry
 
Propositional logic & inference
Propositional logic & inferencePropositional logic & inference
Propositional logic & inferenceSlideshare
 
Reconstructing Software Architecture
Reconstructing Software ArchitectureReconstructing Software Architecture
Reconstructing Software ArchitectureHimanshu
 
Counter propagation Network
Counter propagation NetworkCounter propagation Network
Counter propagation NetworkAkshay Dhole
 

Mais procurados (20)

Fault simulation – application and methods
Fault simulation – application and methodsFault simulation – application and methods
Fault simulation – application and methods
 
Structural and functional testing
Structural and functional testingStructural and functional testing
Structural and functional testing
 
Lexical analysis - Compiler Design
Lexical analysis - Compiler DesignLexical analysis - Compiler Design
Lexical analysis - Compiler Design
 
Chapter 9 Testing Strategies.ppt
Chapter 9 Testing Strategies.pptChapter 9 Testing Strategies.ppt
Chapter 9 Testing Strategies.ppt
 
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONS
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONSUNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONS
UNIT-III CASE STUDIES -FPGA & CPGA ARCHITECTURES APPLICATIONS
 
Quality attributes(Non operational) of embedded systems
Quality attributes(Non operational) of embedded systemsQuality attributes(Non operational) of embedded systems
Quality attributes(Non operational) of embedded systems
 
COMPILER DESIGN- Syntax Directed Translation
COMPILER DESIGN- Syntax Directed TranslationCOMPILER DESIGN- Syntax Directed Translation
COMPILER DESIGN- Syntax Directed Translation
 
Logic Simulation, Modeling, and Testing
Logic Simulation, Modeling, and TestingLogic Simulation, Modeling, and Testing
Logic Simulation, Modeling, and Testing
 
Model based design-Hardware in loop-software in loop
Model based design-Hardware in loop-software in loopModel based design-Hardware in loop-software in loop
Model based design-Hardware in loop-software in loop
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software Testing
 
ambiguity grammar.pdf
ambiguity grammar.pdfambiguity grammar.pdf
ambiguity grammar.pdf
 
Security in embedded systems
Security in embedded systemsSecurity in embedded systems
Security in embedded systems
 
Programmable array-logic-and-programmable-logic-array
Programmable array-logic-and-programmable-logic-arrayProgrammable array-logic-and-programmable-logic-array
Programmable array-logic-and-programmable-logic-array
 
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...
[ Capella Day 2019 ] Model-based safety analysis on Capella using Component F...
 
Knowledge representation and reasoning
Knowledge representation and reasoningKnowledge representation and reasoning
Knowledge representation and reasoning
 
EPLAN - Siemens
EPLAN - SiemensEPLAN - Siemens
EPLAN - Siemens
 
On the verification of configurable nocs in simulation and hardware emulation...
On the verification of configurable nocs in simulation and hardware emulation...On the verification of configurable nocs in simulation and hardware emulation...
On the verification of configurable nocs in simulation and hardware emulation...
 
Propositional logic & inference
Propositional logic & inferencePropositional logic & inference
Propositional logic & inference
 
Reconstructing Software Architecture
Reconstructing Software ArchitectureReconstructing Software Architecture
Reconstructing Software Architecture
 
Counter propagation Network
Counter propagation NetworkCounter propagation Network
Counter propagation Network
 

Semelhante a Programação concorrente

Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrenteFabio Duarte
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iiiRay Fran Pires
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisHenry Raúl González Brito
 
Linguagem de programação da internet
Linguagem de programação da internetLinguagem de programação da internet
Linguagem de programação da internetVictor Barreto
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 

Semelhante a Programação concorrente (20)

Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrente
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Aula01 - Analise e Programação
Aula01 - Analise e ProgramaçãoAula01 - Analise e Programação
Aula01 - Analise e Programação
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
apostila de dev.pdf
apostila de dev.pdfapostila de dev.pdf
apostila de dev.pdf
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores Digitais
 
Linguagem de programação da internet
Linguagem de programação da internetLinguagem de programação da internet
Linguagem de programação da internet
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 

Programação concorrente

  • 1. Universidade Metodista Unida de MoçambiqueCampus Universitário de CambineEngenharia Informática e Tecnologias Discentes: Chelton Lazaro Dercio Cumbane Gil Alexandre Lidson Olinda Pave Nildo jaciinto UnidadeCurricular:ParadigmadeProgramação Docente: Eng. Iolanda 1
  • 2. Paradigmade Programação Concorrente  Definição  Caracteristicas da Programação Concorrente  Programação Paralela  Vantagens da Programação Concorrente  Desvantagens da programação concorrente  Desafios da Programação Concorrente  Comunicação e Interação entre programas concorrentes  Conflitos e Compartilhamento de Recursos  Diferença entre concorrência e paralelismo  Sintaxe e semântica das linguagens Concorrentes  Principais linguagens da programação concorrente
  • 3. Definição O termo "programação concorrente" vem do inglês concurrent programming, onde concurrent significa "acontecendo ao mesmo tempo". A programação concorrente é um paradigma de programação usado na construção de programas que fazem uso da execução simultânea de diversas tarefas que podem ser implementadas como programas separados ou como um único programa que dispara várias linhas de execução em paralelo. As linhas de execução também são conhecidas como threads. 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
  • 4. Características da Programação Concorrente  Execução simultânea de tarefas  Comunicação e coordenação entre tarefas  Sincronização e exclusão mútua  Independência de tarefas  Concorrência e paralelismo  Tratamento de exceções  Escalabilidade e desempenho
  • 5. Programação Paralela Programação paralela é uma forma de computação em que vários cálculos são realizados ao mesmo tempo, operando sob o princípio de que grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo). Existem diferentes formas de computação paralela: em bit, instrução, de dado ou de tarefa. A técnica de paralelismo já é empregada há vários anos, principalmente na computação de alto desempenho
  • 6. Vantagens da Programação Concorrente  Melhoria de desempenho  Responsividade  Modularidade  Escalabilidade  Tolerância a falhas  Compartilhamento de recursos  Simplificação do código
  • 7. Cont…  A principal vantagem do uso da programação concorrente é o aumento do desempenho dos programas, pois é possível aumentar a quantidade de tarefas executadas em um determinado período de tempo.
  • 8. Desvantagens da programação concorrente  Dificuldade de programação  Baixo suporte de hardware  Concorrência e sincronização  Consumo de recursos  Dificuldades de depuração:  Acesso compartilhado  Complexidade do código  Dificuldade de previsão de desempenho
  • 9. Desafios da Programação Concorrente O grande desafio da programação concorrente é o compartilhamento de recursos, a comunicação e a interação entre os programas que são executados concorrentemente. O objetivo deve ser o de administrar o acesso concorrente aos recursos computacionais, tais como por exemplo, o acesso aos discos ou a outros recursos compartilhados, como a impressora.
  • 10. Comunicação e Interação entre programas concorrentes Em um sistema computacional concorrente, os programas executados de forma concorrente podem ter a necessidade de se comunicarem para troca de informações. Neste contexto, é importante que o programador possa ter alguma informação sobre como é feita a comunicação entre os programas executados concorrentemente.
  • 11. Conflitos e Compartilhamento de Recursos É preciso evitar conflitos entre os programas concorrentes. Os conflitos podem ocorrer porque os programas concorrentes fazem uso de recursos compartilhados e por isso a necessidade de se ter controle de concorrência. Em alguns sistemas computacionais concorrentes a comunicação entre os processos concorrentes é 'escondida' do programador mas em outros sistemas a comunicação é explícita, podendo ser interpretada pelo programador.
  • 12. Comunicação por memória compartilhada Neste tipo de comunicação os processos comunicam-se através do acesso à áreas de memória que são compartilhadas entre os processos concorrente. Neste tipo de comunicação deve ser feiro gerenciamento do uso da memória compartilhada a fim de que um processo não interfira na execução de outro processo sendo executado concorrentemente.
  • 13. Diferença entre concorrência e paralelismo Concorrência é basicamente a capacidade de lidar com várias coisas de uma só vez. Paralelismo é a capacidade de lidar com várias coisas ao mesmo tempo.
  • 14. Sintaxe e semântica das linguagens Concorrentes Linguagem C# Inicialmente, a aplicação da linguagem C foi direccionada para a programação de sistemas, nomeadamente durante o desenvolvimento do sistema operativo Unix. Tendo a sua verstilidade, contudo, levado a que fosse utilizada em diversos contextos. Algumas das suas características principais são: Portabilidade – Os programas em C correm com poucas ou nenhumas alterações, quando instalados em diferentes máquinas com diferentes sistemas operativos. Estrutura – A linguagem C tem atributos e uma estrutura de uma linguagem programação moderna, sendo uma linguagem estruturada que permite, por exemplo, a recursão.
  • 15. Cont… Eficiência – O C permite desenvolver programas tanto a alto como a baixo nivel. Possui um grande número de operadores bit a bit (bitwise operators). Além disso, permite trabalhar eficientemente com ponteiros. O programa principal da linguagem de programação C deve conter uma função chamada main, e deve ter a seguinte estrutura:
  • 16. Linguagem C++ C++ (em português: Pronuncia-se "cê mais mais") é uma linguagem de programação compilada multi-paradigma (seu suporte inclui linguagem imperativa, orientada a objetos e genérica) e de uso geral. Desde os anos 1990 é uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores.
  • 17. Cont…  Java: é uma linguagem de programação amplamente utilizada em desenvolvimento de aplicativos empresariais.  Foi desenvolvida na SUNM,ICROSYSTEMS em1991,uma grande vantagem que ela apresenta é o facto de seus códigos fonte e objetos serem portáteis para diversas arquiteturas e sistemas operacionais.  A sua sintaxe é
  • 18. Principais linguagens da programação concorrente Java: Java é uma linguagem de programação amplamente utilizada em desenvolvimento de aplicativos empresariais e também oferece suporte a concorrência por meio do pacote java.util.concurrent. C/C++: C e C++ são linguagens de programação populares, amplamente utilizadas em sistemas embarcados e de alto desempenho Erlang: Erlang é uma linguagem de programação funcional e concorrente projetada especificamente para sistemas distribuídos e tolerantes a falhas. Erlang possui suporte integrado para concorrência
  • 19. cont… Rust: Rust é uma linguagem de programação moderna que é projetada para ser segura, concorrente e de alto desempenho. Rust possui primitivas de concorrência, como threads e canais, e seu sistema de tipos e modelo de propriedade ajudam a prevenir condições de corrida e outros problemas comuns de concorrência.