sincronização comunicação processos
1. Defina o que é uma aplicação concorrente e dê um exemplo de sua utilização.
2. O que é exclusão mútua e como é implementada?
3. O que é starvation e como podemos solucionar esse problema?
4. Qual o problema com a solução que desabilita as interrupções para implementar a exclusão mútua?
5. O que é espera ocupada e qual o seu problema?
6. Explique o que são semáforos.
7. Qual a vantagem da forma assíncrona de comunicação entre processos e como esta pode ser implementada?
8. O que é deadlock, quais as condições para obtê-lo?
9. Em uma aplicação concorrente que controla saldo bancário em contas correntes, dois processos compartilham uma região de memória onde estão armazenados os saldos dos clientes A e B. Os processos executam, concorrentemente os seguintes passos:
Processo 1 (Cliente A)
/* saque em A */
1a. x := saldo_do_cliente_A;
1b. x := x - 200;
1c. saldo_do_cliente_A := x;
/* deposito em B */
1d. x := saldo_do_cliente_B;
1e. x := x + 100;
1f. saldo_do_cliente_B := x;
Processo 2 (Cliente B)
/*saque em A */
2a. y := saldo_do_cliente_A;
2b. y := y - 100;
2c. saldo_do_cliente_A := y;
/*deposito em B */
2d. y := saldo_do_cliente_B;
2e. y := y + 200;
2f. saldo_do_cliente_B := y;
Supondo que os valores dos saldos de A e B sejam, respectivamente, 500 e 900, antes de os processos executarem, pede-se:
a) Quais os valores corretos esperados para os saldos dos clientes A e B após o término da execução dos processos?
b) Quais os valores finais dos saldos dos clientes se a sequência temporal de execução das operações for: 1a, 2a, 1b, 2b, 1c, 2c, 1d, 2d, 1e, 2e, 1f, 2f?