Programação Concorrente
Artigos Científicos: Programação Concorrente. Pesquise 862.000+ trabalhos acadêmicosPor: • 16/3/2015 • 259 Palavras (2 Páginas) • 266 Visualizações
Processos Concorrentes
Quando estamos lidando com processos interativos, a ordem das
operações sobre variáveis compartilhadas podem variar no tempo,
uma vez que as velocidades relativas dos processos dependem de
fatores externos
Toda vez que a ordem de execução causa interferência no resultado
temos uma condição de corrida (race condition)
Por exemplo: Suponha que três processos compartilhem uma variável
A. Dois deles fazem operações de modificação e um imprime o valor
da variável. Suponha também que a ordem em que estas operações
são feitas é importante. Se a variável A for modificada
simultaneamente pelos dois processos, o valor impresso irá depender
de quando as operações de escrita forem realizadas. Imagine se A =
10, e a seqüência de operações seja a seguinte:
Processo 1: A = A + 5;
Processo 2: A = A + 2;
Processo 3: Imprimir A;
Na ordem ao lado, o processo 3 irá
imprimir o valor 17. Se a ordem for
diferente, teremos outro valor para A
Neste exemplo, podemos ver que os processo em execução
compartilham o acesso a uma mesma variável. Eles são concorrentes
interativos e estão em condição de corrida.
As condições de corrida precisam ser evitadas para garantir que o
resultado de um processamento não varie entre uma execução e
outra.
Condições de corrida resultam em computações paralelas errôneas,
pois cada vez que o programa for executado com os mesmos dados
poderão ser obtidos resultados diferentes
A programação paralela exige mecanismos de sincronização entre
processos, e por isso sua codificação e depuração são mais
complexos (mais intelectualmente atraentes)
A programação paralela exige do sistema operacional o suporte
necessário para a criação e gerência de processos concorrentes,
mecanismos de sincronização e comunicação entre processos, acesso
aos dispositivos locais e remotos, e o controle de acesso a recursos
compartilhados
...