Os programas executados de forma concorrente podem se comunicar de forma concorrente, existem conflitos e compartilhamento de recursos. Tem que se evitar conflitos nos programas. A comunicação é explícita podendo ser controlada pela parte do programador.
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
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.