programação concorrente
Baseado no Livro Sistemas
Operacionais Modernos
Andrew S. Tanenbaum
Introdução a Programação
Concorrente
Programação Concorrente
•Introdução;
•Processos;
•Princípios;
•Uso de Threads
•Criação de Processos - Unix
Programação Concorrente
Introdução
•
Conceitos: Concorrência
•
– Compartilhar recursos em um “mesmo” espaço de tempo; Conceito: Programação Concorrente:
– Programas compartilhando recursos em um “mesmo” espaço de tempo
– Falhas neste tipo de programação podem levar a erros não muito aparentes;
– Esse tipo de programação é muito difícil de:
• Depurar;
• Manter;
– É usada para otimizar o tempo da CPU;
Programação Concorrente
Introdução
•
Conceito: Sistemas Multiprogramados
– Sistemas que permitem que vários programas
(processos) sejam executados “ao mesmo tempo”
(pseudo-paralelismo) através do chaveamento do tempo de processamento da CPU entre esses processos;
– A implementação de sistemas multiprogramados se da através de Processos/Threads através da “programação concorrente” •
Conceito: Processos
– Abstração de um programa em execução;
•
Conceito: Threads
– Linhas de execução diferentes dentro de um mesmo processo Programação Concorrente
Introdução
•
Conceito: Sistemas Multiprocessados
– Sistemas que permitem que vários processos sejam executados ao mesmo tempo através do uso de várias unidades de processamento
(processadores);
•
Conceito: Processos
– Abstração de um programa em execução;
Programação Concorrente
Processos
•
Processos
– Composição:
• Código Programa;
• Dados:
– Heap;
– Stack;
• Configurações de Controle
– Por definição é um programa em execução;
– Para a maioria dos sistemas operacionais é a unidade de escalonamento;
Programação Concorrente
Processos
•
Processos
– Um processo por estar em um dos três estados: em execução
2
1
3
bloquea do 4
. Processo bloqueia para entrada