A Abstração de Programação Concorrente Eduardo Nicola F. Zagari Principles of Concurrent and Distributed Programming - Ben-Ari
A Abstração de Programação Concorrente Introdução Intercalamento Instruções Atômicas
Introdução Descrições científicas são baseadas em abstrações cria-se o modelo ideal e se estuda o sistema complexo em um nível mais alto. Na computação, linguagens de programação são abstrações, projetadas para ignorar detalhes de instruções de máquinas específicas e arquiteturas.
Intercalamento Abstração de programação concorrente é o estudo de seqüências de execução intercaladas das instruções atômicas de processos seqüenciais Problema: explosão combinatorial de possibilidades de estados dos programas Interações entre processos: contenção comunicação
Intercalamento Tempo de execução absoluto não é relevante ( e sim a seqüência de execução): as seqüências de execução são suficientes para tratar as propriedades que não as de requisito de tempo absoluto sistemas estão sempre sendo atualizados com componentes mais rápidos e mesmo com algoritmos otimizados exceto as questões de tempo de resposta, é possível tratar com tempo no modelo seqüencial
Intercalamento em vários processadores Esta abstração deve ser estendida para o caso de que todas as seqüências de execução de todos os processos sejam intercaladas em uma única seqüência. I1 Caso 2 I2 I1 Caso 1 I2 Tempo
Intercalamento Requer-se de um programa concorrente que ele seja correto sob TODOS os intercalamentos Debug convencional não funciona... Provar que o programa está errado é fácil... ... difícil é mostrar que ele está correto!
Instruções Atômicas Na aplicação da abstração de programação concorrente é extremamente importante definir exatamente quais instruções estão sendo intercaladas. Ex.: task body P2 is begin N := N + 1; end P2; N: Integer := 0; task body P1 is begin N := N + 1; end P1;
Instruções Atômicas Uso de registradores Compilador com instrução INC Proc Instrução Valor de N Início 0 P1 Inc N 1 P2 Inc N 2 Uso de registradores Proc Instrução N Reg1 Reg2 Início 0 - - P1 Load Reg, N 0 0 - P2 Load Reg, N 0 0 0 P1 Add Reg, #1 0 1 0 P2 Add Reg, #1 0 1 1 P1 Store Reg, N 1 1 1 P2 Store Reg, N 1 1 1
Instruções Atômicas Conclusão: a corretude do programa concorrente depende das instruções atômicas usadas pelo computador.