You are on page 1of 3

Respostas dos Exerccios - Sincronizao de Processos

1 - Defina o que uma aplicao concorrente e d um exemplo de sua utilizao. uma aplicao estruturada de maneira que partes diferentes do cdigo do programa possam executar concorrentemente. Este tipo de aplicao tem como base a execuo cooperativa de mltiplos processos ou threads, que trabalham em uma mesma tarefa na busca de um resultado comum.

2 Considere uma aplicao que utilize uma matriz na memria principal para a comunicao entre vrios processos concorrentes. Que tipo de problema pode ocorrer quando dois ou mais processos acessam uma mesma posio da matriz? Caso no haja uma gerncia no uso concorrente dos recursos compartilhados, inconsistncias nos dados podem ocorrer.

3 O que excluso mtua e como ela implementada? impedir que dois ou mais processos acessem um mesmo recurso simultaneamente. Para isso, enquanto um processo estiver acessando determinado recurso, todos os demais processos que queiram acess-lo devero esperar pelo trmino da utilizao do recurso.

4 Como seria possvel resolver os problemas decorrentes do compartilhamento da matriz, apresentado anteriormente, utilizando o conceito da excluso mtua? Garantindo na aplicao que somente um nico processo pode estar acessando a matriz por vez.

5 O que starvation e como podemos solucionar este problema? Starvation a situao onde um processo nunca consegue executar sua regio crtica e, conseqentemente, acessar o recurso compartilhado. A soluo para o problema depende de estabelecimentos de mecanismos de acesso pelo sistema operacional que garantam o acesso ao recurso por todos os processos que solicitarem uso.

6 Explique o que so semforos e d dois exemplos de sua utilizao. Semforo uma varivel especial protegida que tem como funo o controle de acesso a recursos compartilhados (por exemplo, um espao de armazenamento) em um ambiente multitarefa. 7 Apresente uma soluo para o problema dos Filsofos, sendo a soluo deve evitar starvation e deadlock Soluo a Permitir que apenas quatro filsofos sentem mesa simultaneamente. Soluo b Permitir que um filsofo pegue um garfo apenas se o outro estiver disponvel. Soluo c Permitir que um filsofo mpar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto um filsofo par pegue o garfo da direita e, em seguida, o da esquerda.

8 O que deadlock, quais as condies para obt-lo e quais as solues possveis? Deadlock a situao em que um processo aguarda por um recurso que nunca estar disponvel ou um evento que no ocorrer. Para que ocorra a situao de deadlock, quatro condies so necessrias simultaneamente: excluso mtua: cada recurso s pode estar alocado a um nico processo em um determinado instante; espera por recurso: um processo, alm dos recursos j alocados, pode estar esperando por outros recursos; no-preempo: um recurso no pode ser liberado de um processo s porque outros processos desejam o mesmo recurso; espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. Para prevenir a ocorrncia de deadlocks, preciso garantir que uma das quatro condies apresentadas, necessrias para sua existncia, nunca se satisfaa. A preveno de deadlocks evitando-se a ocorrncia de qualquer uma das quatro condies bastante limitada e, por isso, na prtica no utilizada. Uma soluo conhecida como Algoritmo do Banqueiro (implementada com a presena das quatro condies) tambm possui vrias limitaes. A maior delas a necessidade de um nmero fixo de processos ativos e de recursos disponveis no sistema. Essa limitao impede que a soluo seja implementada na prtica, pois muito difcil prever o nmero de usurios no sistema e o nmero de recursos disponveis.

9 Em uma aplicao concorrente que controla saldo bancrio em contas-correntes, dois processos compartilham uma regio de memria onde esto armazenados os saldos dos clientes A e B. Os processos executam concorrentemente os seguintes passos:

Processo 1 (Cliente A)

Processo 2 (Cliente B)

/* saque em A */ 1a. x := saldo_do_cliente_A; 1b. x := x - 200; 1c. saldo_do_cliente_A := x;

/*saque em A */ 2a. y := saldo_do_cliente_A; 2b. y := y - 100; 2c. saldo_do_cliente_A := y;

/* deposito em B */ 1d. x := saldo_do_cliente_B; 1e. x := x + 100; 1f. saldo_do_cliente_B := x;

/* 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 aps o trmino da execuo dos processos? Cliente A = 200 e Cliente B = 1.200

b) Quais os valores finais dos saldos dos clientes se a sequncia temporal de execuo das operaes for: 1a, 2a, 1b, 2b, 1c, 2c, 1d, 2d, 1e, 2e, 1f, 2f? Cliente A = 400 e Cliente B = 1.100

c) Utilizando semforos, proponha uma soluo que garanta a integridade dos saldos e permita o maior compartilhamento possvel dos recursos entre os processos, no esquecendo a especificao da inicializao dos semforos. Processo 1 (Cliente A) /* saque em A */ Down (S1) x := saldo_do_cliente_A; x := x - 200; saldo_do_cliente_A := x; Up (S1) /* deposito em B */ Down (S2) x := saldo_do_cliente_B; x := x + 100; saldo_do_cliente_B := x; Up (S2) Processo 2 (Cliente B) /*saque em A */ Down (S1) y := saldo_do_cliente_A; y := y - 100; saldo_do_cliente_A := y; Up (S1) /* deposito em B */ Down (S2) y := saldo_do_cliente_B; y := y + 200; saldo_do_cliente_B := y; Up (S2)

You might also like