8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se...

38
DEADLOCKS I MPASSES ViníciusPádua

Transcript of 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se...

Page 1: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

DEADLOCKSIMPASSES

ViníciusPádua

Page 2: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

OqueéumDeadlock?

2

Page 3: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

OqueéumDeadlock?

• Cenário– Doisprocessos:GravarCDcomdadosdoscanner

• ProcessoAsolicitaoCDéautorizado• ProcessoBsolicitaoscanneréautorizado• ProcessoAsolicitaoscannerénegado• ProcessoBsolicitaoCDénegado• ProcessosAeBestãoemdeadlock• Comoproceder?• Eseoshardwarefosseacessadosdeformacompartilhada?

• Nãoéexclusividadedosprocessos– Bancodedados,arquivosnodisco,threads,...

• Recursos

3

Page 4: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock

• Eventosnecessáriosparautilizardeumrecurso– Requisitarorecurso

• Serecursonãodisponívelquandosolicitado– Processorequisitanteteráqueesperar

» Processoficaraconstantementesolicitandoatéseratendido

– Usarorecurso• Utilizarorecurso• Nessaetapaqueosdeadlockocorrem

– Liberarorecurso• Liberarrecurso

4

Page 5: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

ComoocorreumDeadlock?

• Cenários

• Quemdefineaordemdeexecução?

5

...publicvoidprocess_A(){

resource_1.down();resource_2.down();use_both_resources();resource_2.up();resource_1.up();

}...

...publicvoidprocess_B(){

resource_1.down();resource_2.down();use_both_resources();resource_2.up();resource_1.up();

}...

...publicvoidprocess_A(){

resource_1.down();resource_2.down();use_both_resources();resource_2.up();resource_1.up();

}...

...publicvoidprocess_B(){

resource_2.down();resource_1.down();use_both_resources();resource_1.up();resource_2.up();

}...

Page 6: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock

• Naturezadorecurso– Preemptíveis

• Podemserretiradosdoprocessoproprietáriosemprejuízo• Ex.:Memória

– NãoPreemptíveis• Nãopodemserretirado,poiscausamprejuízos• Ex.:GravaçãodeDVD

6

...publicvoidprocess_A(){

resource_1.down();resource_2.down();use_both_resources();resource_2.up();resource_1.up();

}...

...publicvoidprocess_B(){

resource_2.down();resource_1.down();use_both_resources();resource_1.up();resource_2.up();

}...

Recurso2épreemptível

Page 7: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

OqueéumDeadlock?

• Umconjuntodeprocessosestaráemsituaçãodedeadlocksetodoprocessopertencenteaoconjuntoestiveresperandoporumeventoquesomenteoutroprocessodessemesmoconjuntopoderáfazeracontecer

• Condiçõesnecessárias para ocorrência de deadlock– Condição de exclusãomútua

• Processo solicita recurso de forma exclusiva– Condição deposse e espera

• Processos que, em um determinado instante, retêm recursos concedidosanteriormente podem requisitar novos recursos

– Condição denão preempção• Recursos não preemptível: Recursos concedidos previamente não podem ser

forçadamente tomados– Condição de espera circular

• Deve se um encadeamento de 2 ou mais processos• Cada um encontra-se à espera de um recurso que está sendo usando pelo

membro seguinte dessa cadeia

7

Page 8: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

ComoidentificarumDeadlock?• Visual : Modelados através de Grafos dirigidos• Simbolização

– Quadrado - Recursos– Círculo - Processos– Seta - Situação

8

(a)recursoRalocadoaoprocessoA(b)processoBestásolicitando/esperando pelorecursoS(c)processosCeDestãoemdeadlocksobrerecursosTeU

Page 9: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock• Modelados através de Grafos dirigidos

9

OrdemdeExecuçãodaCPU

Page 10: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock• Modelados através de Grafos dirigidos

10

OrdemdeExecuçãodaCPU

Semdeadlock,poisnãoformouumciclo

Page 11: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock

• Estratégia para tratar deadlock– DetectareRecuperar– Evitandodeadlock– Prevenir– Ignorar

11

Page 12: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar

• Objetivo– Não tenta prevenir a ocorrência de deadlock

• Deixara queocorra• Ficara a procura e ao encontrá-lo ira tratá-lo

• Cenários– Um(1)recursodecadatipo

• Modelagemcomgrafosdirigidos

– Múltiplosrecursosdecadatipo• Baseadoemmatrizes

12

Page 13: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar• Umrecursodecadatipo

– Visual• Utilizaamodelagem degrafosdirigidos

– Verificaraexistênciadeumoumaisciclos– Real

• Algoritmodedetecção dedeadlock

• Modeleografodirigidoabaixo– P.AusaReprecisadeS– P.BprecisadeT– P.CprecisadeS– P.DusaUeprecisadeSeT– P.EusaTeprecisadeV– P.FusaWeprecisadeS– P.GusaVeprecisadeU

• Comoficouografo?– Deadlock?Pq?Quaisprocessoserecursosenvolvidos?

13

Page 14: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua 14

• Umciclopodeseencontradonografo->Deadlock– Fácilvisualização,eocomputador?

• Algoritmoparadetecçãodedeadlock

DeadlockDetectareRecuperar

Page 15: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Algoritmoparadetecçãodedeadlock– Sentido:EsquerdaparadireitaeSuperiorparainferior– L=[];L=[R];L=[R,A];L=[R,A,S];L=[R,A];L=[R];L=[]->Rcompletado– L=[];L=[A];L=[A,S];L=[A];L=[]->Acompleto– L=[];L=[B];L=[B,T];L=[B,T,E];...L=[B,T,E,V,G,U,D];

L=[B,T,E,V,G,U,D,S];L=[B,T,E,V,G,U,D];L=[B,T,E,V,G,U,D,T]

DeadlockDetectareRecuperar

15

Page 16: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar• Múltiplosrecursosdecadatipo

– Utilizamatrizesevetores

– Tentarprocurarumprocessoquepossoseratendidoporcompleto

16

Page 17: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar• Múltiplosrecursosdecadatipo

17

• Processo1• Nãosatisfeito,poisnãoexistecd-rom disponível

• Processo2• Nãosatisfeito,poisnãoexistescannerdisponível

• Processo3• Satisfeito->Apósexecutado->A=(2220)

• Comficaorestodaexecução?• Processo2:Satisfeito->Apósexecutado->A=(4221)• Processo1:Satisfeito

• Todososprocessospodemserexecutados->semdeadlock

Page 18: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar• Múltiplosrecursosdecadatipo

– Exercíciodefixação• Deacordocomoexemploabaixoverifique

– Seestaemdeadlock– Comochegouaestaconclusão?

18

Page 19: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockDetectareRecuperar• Encontramosodeadlock?EAgora?Comorecuperar?– Técnicasderecuperação

• PorPreempção– Verificarsealgumrecursoédotipopreemptível

• PorRetrocesso– Checkpoints

» Salvaestadoatualdamáquina– Retornaratéoúltimocheckpoint

» Trabalhoéperdido

• PorEliminaçãodeProcesso– Simpleseradical– Eliminarumoumaisprocessospresentesnociclo

19

Page 20: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock

• Estratégia para tratar deadlock– DetectareRecuperar

– Prevenir– Ignorar

20

Page 21: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Objetivo– Verificaseaalocaçãodeumrecursopodegerarumdeadlock

• Apenas liberarorecursoseasolicitação

• Comoidentificarseumrecursopodeserliberado?

21

DeadlockEvitandodeadlock

Page 22: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• EstadosSeguroseInseguros– Utilizamaanalisedosestadosparaalocarounãoumrecurso– EstadoSeguro

• Nãoestaemdeadlock• Nenhumaordemdeexecuçãodosprocessocausadeadlock

– EstadoInseguro• Podesurgirumdeadlock

– Nãosignificadeadlock• Existe(m)ordemdeexecuçãoquegeradeadlock

22

DeadlockEvitandodeadlock

Page 23: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Analisedosestados– QualoestadoemA?

23

DeadlockEvitandodeadlock

Verificarseseexisteumprocessoquepodeseratendidoporcompleto?

Page 24: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• EstadosSeguroseInseguros

24

DeadlockEvitandodeadlock

DEADLOCK

Page 25: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Algoritmodobanqueiro• Analisacomoseriaonovoestadocomasolicitaçãodorecurso

– Seguro:Requisiçãoéaceita– Inseguro:Requisiçãoénegada

• Necessidade– Sabernúmeromáximodecadarecursoqueumprocessopoderá

solicitar– Númerodeprocessos

– Tipodosalgoritmos• Paraumúnicorecurso• Paramúltiplosrecursos• Algoritmossãosemelhantesaosanteriores

25

DeadlockEvitandodeadlock

Page 26: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Algoritmodobanqueiro– Exercíciodefixação

• Deacordocomosexemplosabaixoverifiqueseéseguroouinseguro– Comochegouaestaconclusão?

26

DeadlockEvitandodeadlock

Page 27: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Algoritmodobanqueiro– Exercíciodefixação

• Deacordocomosexemplosabaixoverifiqueseéseguroouinseguro– Comochegouaestaconclusão?

27

DeadlockEvitandodeadlock

RecursosExistentesRecursosAlocadosRecursosDisponíveis

Page 28: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockEvitandodeadlock

• Algoritmodobanqueiro– TeoriaxPrática

• Teoria– Funcional

• Prática– Inútil– Processosnãosabemquantosrecursosnecessitam– Númerodeprocessosdinâmicos– Recursospodemsumir

28

Page 29: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Deadlock

• Estratégia para tratar deadlock– DetectareRecuperar– Evitandodeadlock

– Ignorar

29

Page 30: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockPrevenção

• Objetivo– Garantirqueosdeadlocknuncairamacontecer

• Serápossível?Como?– Evitarumadascondiçõesparaocorrênciadedeadlock

• Condição de exclusãomútua• Condição deposse e espera• Condição denão preempção• Condição de espera circular

30

Page 31: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockPrevenção

• Condiçãodeexclusãomútua– Evitarqueumprocessoacesseorecursodiretamente– Ex.:Utilizaçãodasimpressoras– Utilizaçãodatécnicadespoll

• Condiçãodeposseespera– Evitarqueprocessoempossedeumrecursoespereporoutrosrecursos• Solicitarqueosprocessossolicitemtodososrecursosnoinício

– Algoritmo dobanqueiro– Retêmrecursosqueoutrosprocessospodemestarusando

31

Page 32: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockPrevenção

• Condiçãodenãopreempção– Tratartodososrecursoscomopreemptível– ConsidereumprocessoAestejagravandoumCD-ROOM

• NomeiodagravaçãooprocessoBsolicitouoCD-ROOM• ProcessoBira“tomar”oCD-ROOMdoprocessoA• Ocasionaráumerronagravação!inviável!• Opçãoinviável

32

Page 33: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockPrevenção• Condiçãodeesperacircular

– Idéias• Possuirapenasumrecursodecadavez

– Liberarorecursoatualantesdesolicitaronovo

• Fornecerumanumeraçãoglobalparaosrecursos– Apenaspodealocarrecursoseanumeraçãoformaiorquedorecursoatual

– ArequisitarrecursoieBrequisitarrecursoj– Sei<>jei>j

» Anãopoderequisitar j,poistemmenorprioridadequei– Sei<>jei<j

» Bnãopoderequisitari,poistemmenorprioridadequej– Dificuldade:Comoencontrarumaordemsatisfatória?

» Impossível

33

Page 34: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockPrevenção

34

• Resumo

Page 35: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

• Estratégias para tratar deadlock– DetectareRecuperar– Evitandodeadlock– Prevenir

35

Deadlock

Page 36: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

DeadlockIgnorar• AlgoritmodoAvestruz• Idéia

– Fingirquenãoháproblema– Nãofazernada!Ctrl +alt +del

• Éaceitávelse– Deadlocksocorreremcompoucafreqüência– Custodaprevençãoforalto

36

Page 37: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPáduaViníciusPádua

Outrasformasdeprevenção

• Bloqueioemduasfazes– BD→Bloqueioderegistroedepoisatualização– Fases

• Faseum:Bloqueio• Fasedois:Atualização

• ImpassesdeComunicação– Enviodedadospelarede→Timeout dospacotes

• Livelocks• Condiçãodeinanição(starvation)

37

Page 38: 8 - Deadlocks - Prof. Vinícius Páduafacid.viniciuspadua.com.br/so/slide05.pdf · – Verifica se a alocação de um recurso pode gerar um deadlock • Apenas liberar o recurso se

ViníciusPádua