8 - deadlocks - prof. vinícius páduafacid.viniciuspadua.com.br/so/slide05.pdf · – verifica se...
TRANSCRIPT
DEADLOCKSIMPASSES
ViníciusPádua
ViníciusPáduaViníciusPádua
OqueéumDeadlock?
2
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
ViníciusPáduaViníciusPádua
Deadlock
• Eventosnecessáriosparautilizardeumrecurso– Requisitarorecurso
• Serecursonãodisponívelquandosolicitado– Processorequisitanteteráqueesperar
» Processoficaraconstantementesolicitandoatéseratendido
– Usarorecurso• Utilizarorecurso• Nessaetapaqueosdeadlockocorrem
– Liberarorecurso• Liberarrecurso
4
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();
}...
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
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
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
ViníciusPáduaViníciusPádua
Deadlock• Modelados através de Grafos dirigidos
9
OrdemdeExecuçãodaCPU
ViníciusPáduaViníciusPádua
Deadlock• Modelados através de Grafos dirigidos
10
OrdemdeExecuçãodaCPU
Semdeadlock,poisnãoformouumciclo
ViníciusPáduaViníciusPádua
Deadlock
• Estratégia para tratar deadlock– DetectareRecuperar– Evitandodeadlock– Prevenir– Ignorar
11
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
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
ViníciusPáduaViníciusPádua 14
• Umciclopodeseencontradonografo->Deadlock– Fácilvisualização,eocomputador?
• Algoritmoparadetecçãodedeadlock
DeadlockDetectareRecuperar
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
ViníciusPáduaViníciusPádua
DeadlockDetectareRecuperar• Múltiplosrecursosdecadatipo
– Utilizamatrizesevetores
– Tentarprocurarumprocessoquepossoseratendidoporcompleto
16
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
ViníciusPáduaViníciusPádua
DeadlockDetectareRecuperar• Múltiplosrecursosdecadatipo
– Exercíciodefixação• Deacordocomoexemploabaixoverifique
– Seestaemdeadlock– Comochegouaestaconclusão?
18
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
ViníciusPáduaViníciusPádua
Deadlock
• Estratégia para tratar deadlock– DetectareRecuperar
– Prevenir– Ignorar
20
ViníciusPáduaViníciusPádua
• Objetivo– Verificaseaalocaçãodeumrecursopodegerarumdeadlock
• Apenas liberarorecursoseasolicitação
• Comoidentificarseumrecursopodeserliberado?
21
DeadlockEvitandodeadlock
ViníciusPáduaViníciusPádua
• EstadosSeguroseInseguros– Utilizamaanalisedosestadosparaalocarounãoumrecurso– EstadoSeguro
• Nãoestaemdeadlock• Nenhumaordemdeexecuçãodosprocessocausadeadlock
– EstadoInseguro• Podesurgirumdeadlock
– Nãosignificadeadlock• Existe(m)ordemdeexecuçãoquegeradeadlock
22
DeadlockEvitandodeadlock
ViníciusPáduaViníciusPádua
• Analisedosestados– QualoestadoemA?
23
DeadlockEvitandodeadlock
Verificarseseexisteumprocessoquepodeseratendidoporcompleto?
ViníciusPáduaViníciusPádua
• EstadosSeguroseInseguros
24
DeadlockEvitandodeadlock
DEADLOCK
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
ViníciusPáduaViníciusPádua
• Algoritmodobanqueiro– Exercíciodefixação
• Deacordocomosexemplosabaixoverifiqueseéseguroouinseguro– Comochegouaestaconclusão?
26
DeadlockEvitandodeadlock
ViníciusPáduaViníciusPádua
• Algoritmodobanqueiro– Exercíciodefixação
• Deacordocomosexemplosabaixoverifiqueseéseguroouinseguro– Comochegouaestaconclusão?
27
DeadlockEvitandodeadlock
RecursosExistentesRecursosAlocadosRecursosDisponíveis
ViníciusPáduaViníciusPádua
DeadlockEvitandodeadlock
• Algoritmodobanqueiro– TeoriaxPrática
• Teoria– Funcional
• Prática– Inútil– Processosnãosabemquantosrecursosnecessitam– Númerodeprocessosdinâmicos– Recursospodemsumir
28
ViníciusPáduaViníciusPádua
Deadlock
• Estratégia para tratar deadlock– DetectareRecuperar– Evitandodeadlock
– Ignorar
29
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
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
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
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
ViníciusPáduaViníciusPádua
DeadlockPrevenção
34
• Resumo
ViníciusPáduaViníciusPádua
• Estratégias para tratar deadlock– DetectareRecuperar– Evitandodeadlock– Prevenir
35
Deadlock
ViníciusPáduaViníciusPádua
DeadlockIgnorar• AlgoritmodoAvestruz• Idéia
– Fingirquenãoháproblema– Nãofazernada!Ctrl +alt +del
• Éaceitávelse– Deadlocksocorreremcompoucafreqüência– Custodaprevençãoforalto
36
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
ViníciusPádua