Trabalho PPC
Problema 1: Quais as principais razões (motivações) para se usar programação concorrente?
Melhorar o desempenho das aplicações seriais, aproveitar hardware com múltiplos processadores, atender a vários usuários simultaneamente, aumentar a disponibilidade de serviço para o usuário, implementar programas paralelos complexos.
Problema 2: Quais os benefícios que programas concorrentes oferecem sobre programas seqüenciais?
Programas concorrentes são mais eficientes, pois executam processos concorrentemente.
Problema 3: Quais são os estados de um processo? Explique cada um deles.
Executável, pronto para executar; Executando, rodando(usando CPU); Bloqueado, esperando informações para continuar; Suspenso, escalonado para outro processo.
Problema 4: Quais as diferenças entre um processo e um thread?
Os threads são mais leves de serem criadas, a troca de contexto é mais suave e facilita o compartilhamento de memória. Threads são partes do processo.
Problema 5: Quais as principais propriedades de programação concorrente?
Segurança (Safety): o programa nunca entra em um estado errado; Vivacidade(liveness): em algum momento o programa vai para outro estado; Correção parcial: se o programa terminar, o resultado está correto. Término: o programa termina; Ausência de deadlock: nunca todos os processos estarão bloqueados; Correção total: o programa sempre termina e produz o resultado correto.
Problema 6: Comente a relação entre as propriedades de segurança (security) e vivacidade (liveness) em um sistema concorrente.
Melhor a segurança implica em reduzir a vivacidade e vice versa. Para a segurança é melhor não receber uma informação errada, para a vivacidade é melhor uma informação imprecisa do que nada.
Problema 7: Como você pode verificar manualmente uma propriedade de segurança?
Existem 3 estratégias: imutabilidade: evitar mudanças de estado(statless), sincronização e contenção: garantir acesso exclusivo dinamicamente e estruturalmente.
Problema 8: