AULA 3PC
Multiprogramação: usada por um sistema "time-sharing". Um processador compartilhado por diversos processos;
Multiprocessamento: vários processadores. Possibilita que múltiplos processos sejam executados em processadores distintos. Memória comum compartilhada para comunicação entre os processos.
Processamento Distribuído: também requer processadores separados, mas cada um com sua memória. Processadores conectados via linhas de comunicação.
A concorrência é naturalmente dividida em nível de:
Instrução (executando duas ou mais instruções de máquina simultaneamente);
Comando (executando dois ou mais comandos simultaneamente);
Unidade (executando dois ou mais programas simultaneamente).
Os métodos concorrentes aumentam a flexibilidade de programação e foram criados originalmente para serem usados em problemas particulares.
Concorrência relaciona-se com fluxo de controle de um programa. Tem-se mais de um fluxo de controle ativo. É diferente da execução seqüencial de programas, onde se tem apenas um fluxo de controle, ou seja, em um determinado momento, existe uma única instrução candidata à execução.
Unidades concorrentes podem ser executadas em:
Um único processador ;
Vários processadores que compartilham uma memória;
Vários processadores independentes, sem compartilhamento de memória.
Reduz o tempo total de processamento através de execução concorrente de diversas unidades.
Aumenta a confiabilidade para aplicações críticas, onde não se torna confiável a execução em um único processador.
Modela soluções que exploram a capacidade de máquinas com múltiplos processadores.
Implementa aplicações distribuídas.
Conceitos básicos
Seção crítica
Quando processos concorrentes interagem com variáveis compartilhadas, a integridade destas variáveis pode ser violada se o acesso não for coordenado. Uma seção crítica é um segmento de código de um processo que acessa um recurso compartilhado.
Deadlock
É uma situação onde um processo ou um