Você está na página 1de 5

Arquitetura de Sistemas Operacionais

Captulo VII
Nome: Wallyson Emanuel da Silva e Silva
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?

Pode ocorrer inconsistncia nos dados caso no haja uma gerncia correta
quanto a utilizao concorrente dos recursos compartilhados
3. O que excluso mtua e como implementada?

Excluso mtua 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 de excluso mtua?

Assegurando que apenas um processo manipulem uma varivel por vez.


5. O que starvation e como podemos solucionar esse problema?

Starvation a situao onde um processo nunca consegue executar sua regio


crtica e, consequentemente, acessar o recurso compartilhado. No momento em
que o recurso alocado liberado, o sistema deve determinar qual processo,
entre os que esto esperando, ganhar acesso ao recurso. Caso essa escolha
seja realizada de forma aleatria, existe a possibilidade de um processo nunca
ser escolhido e sofrer starvation.
6. Qual o problema com a soluo que desabilita as interrupes para implementar a
excluso mtua?

Devido a esta soluo a multiprogramao pode ficar seriamente


comprometida, j que a concorrncia entre processos tem como base o uso de
interrupes. Em sistemas com mltiplos processadores, esta soluo torna-se
ineficiente devido ao tempo de propagao quando um processador sinaliza aos
demais que as interrupes devem ser habilitada sou desabilitadas. Outra
problema que o mecanismo de clock do sistema implementado atravs de
interrupes, devendo esta soluo ser utilizada com bastante critrio.
7. O que espera ocupada e qual o seu problema?
Toda vez que um processo no consegue entrar em sua regio crtica, por j existir
outro processo acessando o recurso, o processo permanece em looping, testando uma
condio, at que lhe seja permitido o acesso, isso o que define a espera ocupada.
Sendo assim, o processo em looping consome tempo do processador
desnecessariamente, podendo ocasionar problemas ao desempenho do sistema.
8. Explique o que sincronizao condicional e d um exemplo de sua utilizao.
uma situao onde o acesso ao recurso compartilhado exige a sincronizao de
processos vinculada a uma condio de acesso. Um bom exemplo a comunicao
entre dois processos atravs de operaes de gravao e leitura em buffer, onde os

processos geram informaes(processos produtores) utilizadas por outros processos


(processos consumidores).
9. Explique o que so semforos e d dois exemplos de sua utilizao: um para a soluo
da excluso mtua e outro para a sincronizao condicional.
Semforo uma varivel inteira, no-negativa, que s pode ser manipulada por duas
instrues: DOWN e UP, tambm chamadas originalmente por Dijkstar instrues
P(proberen, teste holands) e V(verhong, incremento em holands).
- Para excluso mtua:
TYPE Semaforo = RECORD
Valor : INTEGER;
Fila_Espera : (* Lista de processos pendentes*) ; End;
PROCEDURE DOWN ( VAR S: Semaforo);
BEGIN
IF ( S = 0) THEN Coloca_Processos_na_Fila_de_Espera
ELSE
S := S 1;
END;
PROCEDURE UP (VAR S : Semaforo) ;
BEGIN
S : = S + 1;
IF ( Tem_Processo_Esperando) THEN
END

Retira_da_Fila_de_Espera;

- para a sincronizao condicional:


PROGRAM Semaforo_2;
VAR Evento : Semaforo : = 0;
PROCEDURE Solicita_Leitura;
BEGIN
DOWN (Evento) ;
END;
PROCEDURE Le_Dados;
BEGIN
UP (Evento);
END;
BEGIN
PARBEGIN
Solicita_Leitura;
Le_Dados;
PAREND;
END.
10. Apresente uma soluo para o problema dos Filsofos que permita que os cinco
pensadores sentem mesa, porm evite a concorrncia de starvation e deadlock.
A) Permitir que quatro filsofos sentem mesa simultaneamente;
B) Permitir que um filsofo pegue um garfo apenas se o outro estiver disponvel;
C) Permitir que um filsofo impar 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.
11. Explique o que so monitores e d dois exemplos e sua utilizao; um para a soluo da
excluso mtua e outro para a sincronizao condicional.
Monitores so mecanismos de sincronizao de alto nvel que tornam mais simples o
desenvolvimento de aplicaes concorrentes.
- soluo da excluso mtua:
PROGRAM Monitor_1;
MONITOR Regiao_Critica;

VAR X: INTEGER;
PROCEDURE Soma;
BEGIN
X := X + 1;
END;
PROCEDURE Diminui;
BEGIN
X := X 1;
END;
BEGIN
X := 0;
END;
BEGIN
PARBEGIN
Regiao_Critica.Soma;
Regiao_Critica.Diminui;
PAREND;
END;
- para a sincronizao condicional:
MONITOR Condicional;
VAR Cheio, Vazio : (* Variaveis especiais de condicao*);
PROCEDURE Produz;
BEGIN
IF (Cont = TamBuf ) THEN WAIT (Cheio);
.
.
IF (Cont = 1) THEN SIGNAL (Vazio)
END;
PROCEDURE Consome;
BEGIN
IF (Cont = 0 ) THEN WAIT (Vazio);
.
.
IF (Cont = TamBuf - 1 ) THEN SIGNAL (Cheio);
END;
BEGIN;
END;
12. Qual a vantagem da forma assncrona de comunicao entre processos e como esta pode
ser implementada?
A vantagem desse mecanismo aumentar a eficincia de aplicaes concorrentes. Para
implementar essa soluo, alm da necessidade de buffers para armazenar as
mensagens, devem haver outros mecanismos de sincronizao que permitam ao
processo identificar se uma mensagem j foi enviada e recebida.
13. O que deadlock, quais as condies para obt-lo e quais as solues possveis?
a situao em que um processo aguarda por um recurso que nunca estar disponvel
ou um evento que no ocorrer.
Condies necessrias para ocorrer o deadlock:
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, preciso garantir que uma das quatro condies
apresentadas, necessrias para sua existncia, nunca se satisfaa.
14. 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: 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 eB aps trmino
da execuo dos processos?
Cliente A: 200 e o Cliente B: 1 200
b) quais os valores finais dos saldos dos clientes se a sequencia temporal de execuo
das operadoras for: 1a, 2a, 1b, 2b, 1c, 2c, 1d, 2d, 1e, 2e, 1f, 2f?
Cliente A: 400 e o 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 I (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)
15. O problema dos leitores/escritores, apresentado a seguir, consiste em sincronizar
processos que consultam/utilizam dados em uma base comum. Pode haver mais de um
leitor lendo ao mesmo tempo; no entanto, enquanto um escritor est atualizando a base,
nenhum outro processo pode ter acesso a ela (nem mesmo leitores).
a) Suponha que exista apenas um leitor fazendo acesso base. Enquanto este processo
realiza a leitura, quais os valores das trs variveis?
acesso: 0 excluso: 1 Nleitores: 1

b) Chega um escritor enquanto o leitor ainda est lendo. Quais os valores das trs
variveis aps o bloqueio do escritor? Sobre qual(ais) semforo(s) se d o bloqueio?
acesso: 0 excluso: 1 Nleitores: 1, o bloqueio ocorre no semforo Acesso.
c) Chega mais um leitor enquanto o primeiro ainda no acabou de ler e o escritor est
bloqueado. Descreva os valores das trs variveis quando o segundo leitor inicia a
leitura.
acesso: 0 excluso: 1 Nleitores: 2
d) Os dois leitores terminam simultaneamente a leitura. possvel haver problemas
quanto integridade do valor da varivel Nleitores? Justifique.
No, pois a excluso mtua a esta varivel implementada pelo semforo
excluso.
e) Descreva o que acontece com o escritor quando os dois leitores terminam suas
leituras. Descreva os valores das trs variveis quando o escritor inicia a escrita.
O processo escritor inicia a escrita. acesso: 0 excluso: 1 Nleitores: 0
f)

Enquanto o escritor est utilizando a base, chegam mais um escritor e mais um


leitor. Sobre qual(ais) semforo(s) eles ficam bloqueados? Descreva os valores das
trs variveis aps o bloqueio dos recm-chegados.
Os processos ficam bloqueados no semforo acesso. acesso: 0 excluso: 0
Nleitores: 1

g) Quando o escritor houver terminado a atualizao, possvel prever qual dos


processos bloqueados (leitor ou escritor) ter acesso primeiro base?
No, em geral os sistemas operacionais utilizam a escolha randmica dentre os
processos em estado de espera.
h) Descreva uma situao onde os escritores sofram starvation(adiamento indefinido).
Caso um processo Escritor esteja aguardando, bloqueado pelo semforo Acesso, e
sempre surgirem novos processos Leitor, o processo Escritor pode nunca ganhar
acesso ao recurso.