SOI Deadlock

Embed Size (px)

Citation preview

  • 8/6/2019 SOI Deadlock

    1/52

    SistemasSistemas

    Operacionais IOperacionais I

    Maria Clicia Stelling de CastroMaria Clicia Stelling de Castro

    2006/1

  • 8/6/2019 SOI Deadlock

    2/52

    Deadlocks

  • 8/6/2019 SOI Deadlock

    3/52

    Deadlocks ProblemaProblema

    Modelo do SistemaModelo do Sistema

    CaracterizaoCaracterizao

    Mtodos para ManipulaoMtodos para Manipulao

    PrevenoPreveno

    EvitarEvitar

    DetecoDeteco

    RecuperaoRecuperao

  • 8/6/2019 SOI Deadlock

    4/52

    Objetivos

    Devenvolver uma descrio deDevenvolver uma descrio de deadlocksdeadlocks,,

    os quais impedem que conjuntos de processosos quais impedem que conjuntos de processosconcorrentes completem suas tarefasconcorrentes completem suas tarefas

    Apresentar diferentes mtodos para prevenir ouApresentar diferentes mtodos para prevenir ou

    evitarevitardeadlocksdeadlocks em um sistema computacionalem um sistema computacional

  • 8/6/2019 SOI Deadlock

    5/52

    O Problema de Deadlocks Conjunto de processos bloqueados cada um mantendoConjunto de processos bloqueados cada um mantendo

    um recurso e esperando para adquirir um recurso,um recurso e esperando para adquirir um recurso,mantido por um outro processo no conjuntomantido por um outro processo no conjunto

    ExemploExemplo:: Sistema com 2Sistema com 2 disk drivesdisk drives

    PP11 eePP22 cada um mantendo umcada um mantendo um disk drivedisk drive e cada ume cada umnecessitando de um outronecessitando de um outro

    ExemploExemplo: semforos: semforos AA ee BB, iniciados com 1, iniciados com 1

    PP00 PP11wait (A);wait (A); wait(B)wait(B)

    wait (B);wait (B); wait(A)wait(A)

  • 8/6/2019 SOI Deadlock

    6/52

    Ex

    emplo para Atravessar uma Ponte

    Trfego somente em uma direoTrfego somente em uma direo

    Cada seo da ponte pode ser vista como um recursoCada seo da ponte pode ser vista como um recurso

    Se ocorreSe ocorre deadlockdeadlock, pode ser resolvido se um carro, pode ser resolvido se um carrovoltar (voltar (preempo de recursospreempo de recursos ee rollbackrollback))

    Diversos carros podem ter que voltar se ocorreDiversos carros podem ter que voltar se ocorredeadlockdeadlock

    Pode causarPode causarstarvationstarvation

  • 8/6/2019 SOI Deadlock

    7/52

    Modelo do Sistema

    Tipos de recursosTipos de recursos RR11,, RR22, . . .,, . . ., RRmm

    CPU cycles, memory space, I/O devicesCPU cycles, memory space, I/O devices

    Cada tipo de recursoCada tipo de recurso RRii temtem WWii instnciasinstncias

    Cada processo utiliza um recurso daCada processo utiliza um recurso da

    seguinte forma:seguinte forma:

    pedidopedido

    usouso

    liberaoliberao

  • 8/6/2019 SOI Deadlock

    8/52

    Caracterizao de DeadlockDeadlockDeadlockocorre se e somente se quatroocorre se e somente se quatro

    condies se mantiverem simultaneamentecondies se mantiverem simultaneamente

    Mutual exclusionMutual exclusion:: somente um processo desomente um processo de

    cada vez pode usar um recursocada vez pode usar um recurso

    Hold and waitHold and wait:: um processo mantendo peloum processo mantendo pelo

    menos um recurso e est esperando paramenos um recurso e est esperando para

    adquirir recursos adicionais mantidos poradquirir recursos adicionais mantidos por

    outros processosoutros processos

  • 8/6/2019 SOI Deadlock

    9/52

    Caracterizao de Deadlock

    No preemptionNo preemption:: um recurso s pode ser liberadoum recurso s pode ser liberadovoluntariamente pelo processo que o mantm, apsvoluntariamente pelo processo que o mantm, apso processo completar a sua tarefao processo completar a sua tarefa

    CircularwaitCircularwait:: existe um conjuntoexiste um conjunto {{PP00,,PP11, ,, ,PP00}}de processos esperando, tal quede processos esperando, tal que PP00 est esperandoest esperandopor um recurso que est atribudopor um recurso que est atribudo PP11,, PP11 estest

    esperando por um recurso que est atribudo aesperando por um recurso que est atribudo aPP

    22, ,, ,PPnn11 est esperando por um recurso que estest esperando por um recurso que est

    atribudoatribudoPPnn, e, e

    PPnn est esperando por um recurso que estest esperando por um recurso que est

    atribudo aatribudo a PP00

  • 8/6/2019 SOI Deadlock

    10/52

    Grafo de Alocao de RecursosGrafoGrafo : um conjunto de vrtices: um conjunto de vrtices VVe um conjuntoe um conjunto

    de arestasde arestas EE

    VV est particionado em dois tipos:est particionado em dois tipos:

    PP={={PP11,,PP22, ,, ,PPnn}},, o conjunto de todos os processoso conjunto de todos os processos

    no sistemano sistema

    RR ={={RR11,,RR22, ,, ,RRmm}}, o conjunto de todos os tipos de, o conjunto de todos os tipos derecursos no sistemarecursos no sistema

    aresta de pedidoaresta de pedido aresta direcionadaaresta direcionada PP11pp RRjj

    aresta de atribuioaresta de atribuio aresta direcionadaaresta direcionada RRjjpp PPii

  • 8/6/2019 SOI Deadlock

    11/52

    Grafo de Alocao de Recursos ProcessoProcesso

    Tipo de recurso com 4 instnciasTipo de recurso com 4 instncias

    PPiisolicita instncia desolicita instncia de RRjj

    PPiiest mantendo uma instncia deest mantendo uma instncia de RRjj

    Pi

    Pi

    Rj

    Rj

  • 8/6/2019 SOI Deadlock

    12/52

    Exemplo de um Grafo de Alocao

    de Recursos

  • 8/6/2019 SOI Deadlock

    13/52

    Grafo de Alocao de Recursos com

    Deadlock

  • 8/6/2019 SOI Deadlock

    14/52

    Grafo de Alocao de Recursos com

    Ciclo sem Deadlock

  • 8/6/2019 SOI Deadlock

    15/52

    Fatos Bsicos

    GrafoGrafo

    nono contm cicloscontm ciclos

    no hno h deadlockdeadlock contm um ciclocontm um ciclo se houverse houver

    somentesomente uma instnciauma instnciapor tipo de recurso,por tipo de recurso,

    entoento ocorreocorre deadlockdeadlockdiversas instnciasdiversas instnciaspor tipo de recurso,por tipo de recurso,

    entoentopode correrpode correrdeadlockdeadlock

  • 8/6/2019 SOI Deadlock

    16/52

    Mtodos de Manipulao de Deadlock

    Garante que o sistemaGarante que o sistema nuncanunca entra num estadoentra num estado

    dede deadlockdeadlock

    Permite que o sistema entre num estado dePermite que o sistema entre num estado de

    deadlockdeadlocke ento recuperae ento recupera

    Ignora o problema e pretende queIgnora o problema e pretende que deadlocksdeadlocks

    nunca ocorram no sistema; usado por muitosnunca ocorram no sistema; usado por muitossistemas operacionais, incluindo o UNIXsistemas operacionais, incluindo o UNIX

  • 8/6/2019 SOI Deadlock

    17/52

    Preveno de Deadlock

    Mutual ExclusionMutual Exclusion

    no necessria para recursosno necessria para recursos

    compartilhveiscompartilhveis

    deve se manter para recursos que no podemdeve se manter para recursos que no podemser compartilhadosser compartilhados

  • 8/6/2019 SOI Deadlock

    18/52

    Preveno de Deadlock

    Hold and WaitHold and Wait deve guarantir que sempredeve guarantir que sempreque um processo solicite um recurso, ele noque um processo solicite um recurso, ele no

    mantm qualquer outro recursomantm qualquer outro recurso Exige que os processos solicitem e sejamExige que os processos solicitem e sejam

    alocados todos os seus recursos antes dealocados todos os seus recursos antes de

    iniciar a execuo, ou permite que oiniciar a execuo, ou permite que oprocesso solicite recursos somente quandoprocesso solicite recursos somente quandono tenha nenhum outrono tenha nenhum outro

    Baixa utilizao de recursos; possibilitaBaixa utilizao de recursos; possibilita

    starvationstarvation

  • 8/6/2019 SOI Deadlock

    19/52

  • 8/6/2019 SOI Deadlock

    20/52

    Preveno de Deadlock

    CircularWaitCircularWait

    impe uma ordenao total de todos osimpe uma ordenao total de todos ostipos de recursostipos de recursos

    requer que cada processo solicite recursosrequer que cada processo solicite recursos

    em uma ordem crescente de enumeraoem uma ordem crescente de enumerao

  • 8/6/2019 SOI Deadlock

    21/52

    EvitarDeadlockRequer que o sistema tenha alguma informao

    adicional disponvel apriori

    Modelo mais simples e til requer que cadaModelo mais simples e til requer que cadaprocesso declare oprocesso declare o nmero mximonmero mximo de recursosde recursos

    de cada tipo que pode precisarde cada tipo que pode precisar

    Algoritmo deAlgoritmo de deadlockdeadlock--avoidanceavoidance examinaexaminadinamicamente odinamicamente o estado de alocao deestado de alocao de

    recursosrecursospara garantir que nunca ocorra umpara garantir que nunca ocorra um

    condio de espera circular (condio de espera circular (circularcircular--waitwait))

  • 8/6/2019 SOI Deadlock

    22/52

    EvitarDeadlock

    Estado de alocao de recursosEstado de alocao de recursos definido definido

    pelo nmero depelo nmero de recursos disponveis erecursos disponveis ealocadosalocados

    demanda mxima dos processosdemanda mxima dos processos

  • 8/6/2019 SOI Deadlock

    23/52

    Estado Seguro Quando um processo solicita um recursoQuando um processo solicita um recurso

    disponvel, o sistema deve decidir se com adisponvel, o sistema deve decidir se com a

    alocao imediata deste recurso, o sistemaalocao imediata deste recurso, o sistema

    permanece em umpermanece em um estado seguroestado seguro

    O sistema est em umO sistema est em um estado seguroestado seguro se exite umase exite umaseqnciaseqncia de todos os processosde todos os processos

    o sistema tal que para cadao sistema tal que para cada PPii, o recurso que, o recurso que PPiiainda pode solicitar e pode ser satisfeito pelosainda pode solicitar e pode ser satisfeito pelos

    recursos correntemente disponveis + recursosrecursos correntemente disponveis + recursos

    mantido por todos osmantido por todos os PPjj, com, com jj

  • 8/6/2019 SOI Deadlock

    24/52

    Estado Seguro

    Isto :Isto :

    SeSe PPiinecessita de recursos que no estonecessita de recursos que no esto

    disponveis imediatamente, entodisponveis imediatamente, ento PPiipodepode

    esperar at que todosesperar at que todos PPjj tenham teminadotenham teminado

    QuandoQuando PPjj termina,termina, PPiipode obter os recursospode obter os recursos

    necessrios, executar, retornar os recursosnecessrios, executar, retornar os recursosalocados e terminaralocados e terminar

    QuandoQuando PPiitermina,termina, PPii+1+1pode obter seuspode obter seus

    recursos necessrios, e assim por diante.recursos necessrios, e assim por diante.

  • 8/6/2019 SOI Deadlock

    25/52

    Fatos Bsicos

    Se um sistema est numSe um sistema est num

    estado seguroestado seguro

    no ocorreno ocorre deadlocksdeadlocks estado inseguroestado inseguropode ocorrerpode ocorrerdeadlockdeadlock

    EvitarEvitar garante que um sistemagarante que um sistema nuncanunca

    entrar em umentrar em um estado inseguroestado inseguro

  • 8/6/2019 SOI Deadlock

    26/52

    Algoritmos Avoidance

    nica instnica de um tipo de recurso usarnica instnica de um tipo de recurso usar

    umum grafo de alocao de recursografo de alocao de recurso

    Mltiplas instncias de um tipo de recursoMltiplas instncias de um tipo de recurso

    oo bankers algorithmbankers algorithm

  • 8/6/2019 SOI Deadlock

    27/52

    Esquema do Grafo de Alocao de

    Recursos Aresta de demanda (Aresta de demanda (claim edgeclaim edge)) PPiipp RRjj indica queindica que

    processoprocesso PPjjpode solicitar o recursopode solicitar o recurso RRjj; representado; representadopor uma linha tracejadapor uma linha tracejada

    CClaim edgelaim edge converte para aresta de pedido (converte para aresta de pedido (requestrequestedgeedge) quando um processo solicita um recurso) quando um processo solicita um recurso

    Aresta de pedido converte para aresta de atribuioAresta de pedido converte para aresta de atribuio

    ((assign

    men

    t edgeassign

    men

    t edge) quando o recurso alocado ao) quando o recurso alocado aoprocessoprocesso

    Quando um recurso liberado por um processo, aQuando um recurso liberado por um processo, aaresta de atribuio se converte para uma claim edgearesta de atribuio se converte para uma claim edge

    Recursos devem ser declarados no sistemaRecursos devem ser declarados no sistema a prioria priori

  • 8/6/2019 SOI Deadlock

    28/52

    Grafo de Alocao de Recursos

  • 8/6/2019 SOI Deadlock

    29/52

    Grafo de Alocao de Recursos em

    Estado Inseguro

  • 8/6/2019 SOI Deadlock

    30/52

    Algoritmo do Grafo de Alocao de

    Recursos

    Suponha que o processoSuponha que o processo PPiisolicite um recursosolicite um recurso RRjj

    O pedido pode ser garantido somente se aO pedido pode ser garantido somente se aconverso da aresta de pedido (converso da aresta de pedido (request edgerequest edge))

    para aresta de atribuio (para aresta de atribuio (assignment edgeassignment edge) no) no

    resulta numa formao de um ciclo no grafo deresulta numa formao de um ciclo no grafo dealocao de recursosalocao de recursos

  • 8/6/2019 SOI Deadlock

    31/52

    Bankers Algorithm

    Mtiplas instnciasMtiplas instncias

    Cada processo deve aCada processo deve aprioripriori declarar a suadeclarar a sua

    demanda de uso mximademanda de uso mxima Quando um processo solicita um recurso ele podeQuando um processo solicita um recurso ele pode

    ter que esperarter que esperar

    Quando um processo consegue todos os seusQuando um processo consegue todos os seusrecursos, ele deve liberrecursos, ele deve liber--los numa quantidade delos numa quantidade de

    tempo finitatempo finita

  • 8/6/2019 SOI Deadlock

    32/52

    Estrutura de Dados: Bankers Algorithm

    AvailableAvailable:: Vetor de tamanhoVetor de tamanho mm. Se. Se AvailableAvailable[[jj]=]=kk, existem, existem kkinstncias dos recursos doinstncias dos recursos do

    tipotipo RRjj disponveisdisponveis MaxMax::matrizmatriz n x mn x m. Se. Se MaxMax[[i,ji,j]=]=kk, ento, ento

    processoprocesso PPiipode pedir atpode pedir at kkinstncias doinstncias do

    recurso do tiporecurso do tipo RRjj

    Suponha

    n = nmero de processos,

    m = nmero de tipos de recursos

  • 8/6/2019 SOI Deadlock

    33/52

    Estrutura de Dados: Bankers Algorithm

    AllocationAllocation::matrizmatriz nn xx mm. Se. Se Allocation[i,j]=Allocation[i,j]=

    kkentoento PPiiest alocandoest alocando kkinstncias deinstncias de RR

    jj

    NeedNeed::matrizmatriz nn xx mm. Se. SeNeedNeed[[i,ji,j]=]= kk, ento, ento PPiipode necessitar de maispode necessitar de mais kkinstncias deinstncias de RRjjparapara

    terminar sua tarefaterminar sua tarefa

    Need [i,j]= Max[i,j]Need [i,j]= Max[i,j]Allocation [i,j]Allocation [i,j]

  • 8/6/2019 SOI Deadlock

    34/52

    Algoritmo Seguro

    1.1. DeixeDeixe WorkWorkee FinishFinish serem vetores de tamanhoserem vetores de tamanho mmee nn, respectivamente. Inicie:, respectivamente. Inicie:

    WorkWork==AvailableAvailable

    FinishFinish [[ii]=]=falsefalse forfor ii=0, 1, ,=0, 1, ,nn-- 11

    2.2. Encontre umEncontre um ii tal que ambos:tal que ambos:

    (a)(a)FinishFinish [[ii]=]=falsefalse

    (b)(b)NeedNeediieeWorkWork

    Se no existe talSe no existe tal ii, v para o passo 4, v para o passo 4

    3.3. WorkWork==WorkWork++AllocationAllocationiiFinishFinish[[ii]=]= truetruev para o passo 2v para o passo 2

    4.4. SeSe FinishFinish [[ii]== true]== true tara todotara todo ii, ento o sistema, ento o sistema

    est em umest em um estado seguroestado seguro

  • 8/6/2019 SOI Deadlock

    35/52

    Algoritmo de Pedido de Recurso

    por Processo Pi

    RequestRequest= vetor de pedido para o processo= vetor de pedido para o processoPPii. If. IfRequestRequestii[[jj]=]=kkento processoento processo PPiiquerquerkkinstnciasinstncias

    do recurso de tipodo recurso de tipo RRjj1.1.SeSe RequestRequestiiee NeedNeediiv para o passo 2. Casov para o passo 2. Caso

    contrrio, raise error condio de erro, uma vez quecontrrio, raise error condio de erro, uma vez queo processo excedeu sua demanda mximao processo excedeu sua demanda mxima

    2.2.SeSe RequestRequestiiee AvailableAvailable, v para o passo 3. Caso, v para o passo 3. CasocontrriocontrrioPPii deve esperar, uma vez que os recursosdeve esperar, uma vez que os recursosno esto disponveisno esto disponveis

  • 8/6/2019 SOI Deadlock

    36/52

    Algoritmo de Pedido de Recurso

    por Processo Pi

    3.3.Pretende alocar recursos pedidos paraPretende alocar recursos pedidos paraPPiimodificando o estado da seguinte forma:modificando o estado da seguinte forma:

    AvailableAvailable ==AvailableAvailable Request;Request;AllocationAllocationii==AllocationAllocationii++RequestRequestii;;

    NeedNeedii== NeedNeediiRequestRequestii;;

    SeSesafesafe os recursos so alocadosos recursos so alocados aa PPiiSeSe unsafeunsafe PPii deve esperar e o estado dedeve esperar e o estado de

    alocao antigo restauradoalocao antigo restaurado

  • 8/6/2019 SOI Deadlock

    37/52

    Exemplo do Algoritmo do Banqueiro

    5 Processos5 Processos PP00 atat PP44;;3 tipos de recursos:3 tipos de recursos:

    AA (10),(10), BB (5), e(5), e CC(7) instncias(7) instncias

    SnapshotSnapshotdo tempodo tempo TT00::AllocationAllocation MaxMax AvailableAvailable

    A B CA B C A B CA B C A B CA B C

    PP00 0 1 00 1 0 7 5 37 5 3 3 3 23 3 2

    PP11 200200 3 223 22

    PP22

    3 023 02 902902

    PP33 2 1 12 1 1 222222

    PP44 002002 4 3 34 3 3

  • 8/6/2019 SOI Deadlock

    38/52

    Exemplo do Algoritmo do Banqueiro

    O contedo da matrizO contedo da matriz NeedNeed definido como definido comoMaxMaxAllocationAllocationNeedNeed

    A B CA B C

    PP00 74 374 3

    PP11 1 221 22

    PP22

    600600

    PP33 0 1 10 1 1PP44 4 3 14 3 1

    O sistema est em um estado seguro, porque aO sistema est em um estado seguro, porque aseqnciaseqncia satisfais o critriosatisfais o critrio

    de seguranade segurana

  • 8/6/2019 SOI Deadlock

    39/52

    Exemplo: Pisolicita (1,0,2)

    Verfique queVerfique que RequestRequesteeAvailableAvailable(que ,(que , (1,0,2)(1,0,2)ee (3,3,2)(3,3,2) truetrue))

    Allocation

    Allocation NeedNeed

    Available

    Available

    A B CA B C A B CA B C A B CA B C

    PP00 0 1 00 1 0 74 374 3 2 3 02 3 0

    PP11 3 02

    3 02

    02

    002

    0PP

    223 0 13 0 1 600600

    PP33 2 1 12 1 1 0 1 10 1 1

    PP44 002

    002

    4 3 14 3 1

  • 8/6/2019 SOI Deadlock

    40/52

    Exemplo: Pi

    solicita (1,0,2)

    Execuo do algoritmo de segurana mostraExecuo do algoritmo de segurana mostra

    que a seqnciaque a seqncia satisfais asatisfais a

    necessidade de segurananecessidade de segurana O pedido paraO pedido para (3,3,0)(3,3,0)pelopelo PP44pode serpode ser

    garantido?garantido?

    O pedido paraO pedido para (0,2,0)(0,2,0)pelopelo PP00pode serpode sergarantido?garantido?

  • 8/6/2019 SOI Deadlock

    41/52

    Deteco de Deadlock

    Permite ao sistema entrar num estado dePermite ao sistema entrar num estado de

    deadlockdeadlock

    Algoritmo de DeteoAlgoritmo de Deteo

    Esquema de RecuperaoEsquema de Recuperao

  • 8/6/2019 SOI Deadlock

    42/52

    nica Instncia para Cada Tipo de

    Recurso

    Mantm grafoMantm grafo waitwait--forfor

    Ns so processosNs so processos

    PPiipp PPjj sese PPiiest esperando porest esperando porPPjj

    Periodicamente invoca um algoritmo que buscaPeriodicamente invoca um algoritmo que busca

    por um ciclo no grafo. Se existe um ciclo, existepor um ciclo no grafo. Se existe um ciclo, existe

    deadlockdeadlock

    Um algoritmo para detectar um ciclo em um grafoUm algoritmo para detectar um ciclo em um grafo

    requer operaes da ordem derequer operaes da ordem de nn22, onde, onde nn o o

    nmero de vrtices no grafonmero de vrtices no grafo

  • 8/6/2019 SOI Deadlock

    43/52

    Grafo de Alocao de Recurso e

    Grafo Wait-For

    Resource-AllocationGraph Corresponding Wait-For Graph

  • 8/6/2019 SOI Deadlock

    44/52

    Diversas Instncias de um Tipo de

    Recurso AvailableAvailable:: Um vetor de tamanhoUm vetor de tamanho mm indica oindica o

    nmero de recursos disponveis de cada tiponmero de recursos disponveis de cada tipo

    AllocationAllocation:: Uma matrizUma matriz nn xx mm define odefine onmero de recursos de cada tipo correntementenmero de recursos de cada tipo correntemente

    alocado para cada processoalocado para cada processo

    RequestRequest:: Uma matrizUma matriz nn xx mm indica o pedidoindica o pedidocorrente de cada processo. Secorrente de cada processo. Se RequestRequest[[iijj]=]=kk,,

    ento o processoento o processo PPiiest pedindo maisest pedindo mais kk

    instncias do tipo de recursoinstncias do tipo de recurso RRjj

  • 8/6/2019 SOI Deadlock

    45/52

    Algoritmo de Deteco

    1.1.DeixeDeixe WorkWorkeeFinishFinish serem vetores de tamanhoserem vetores de tamanho mmee nn, respectivamente. Inicie:, respectivamente. Inicie:

    (a)(a)WorkWork==AvailableAvailable(b)(b)ForFor ii= 1,2, ,= 1,2, , nn, if, ifAllocationAllocationii{{ 0, then0, then

    FinishFinish[i]= false;otherwise,[i]= false;otherwise,FinishFinish[i]=[i]=truetrue

    2.2.Encontre um ndiceEncontre um ndice ii tal que ambos:tal que ambos:(a)(a)FinishFinish[[ii]==]==falsefalse

    (b)(b)RequestRequestiieeWorkWork

    Se talSe tal iino existe, v para o passo 4no existe, v para o passo 4

  • 8/6/2019 SOI Deadlock

    46/52

    Algoritmo de Deteco

    3.3.WorkWork==WorkWork++AllocationAllocationiiFinishFinish[[ii]=]=truetruev para o passo 2v para o passo 2

    4.4.SeSe FinishFinish[[ii]==]==falsefalse, para algum, para algum ii,, 11 ee iiee nn,,ento o sistema est num estado deento o sistema est num estado de deadlockdeadlock..Alm disso, seAlm disso, se FinishFinish[[ii]==]==falsefalse, ento, ento PPiiestestemem deadlockdeadlock

    Algoritmo requer operaes da ordem de

    O(m x n2)para detectar se o sistema est em

    estado de deadlocked

  • 8/6/2019 SOI Deadlock

    47/52

    Exemplo do Algoritmo de Deteco

    5 processos5 processosPP00 atatPP44;; 3 tipo de recursos3 tipo de recursosA (7),A (7), BB(2), e(2), e CC(6) instncias(6) instncias SnapshotSnapshotno tempono tempo TT00::

    AllocationAllocation RequestRequest AvailableAvailable

    A B CA B C A B CA B C A B CA B C

    PP00 0 1 00 1 0 000000 000000

    PP11 200200 202202

    PP22 3 0 33 0 3 000000PP33 2 1 12 1 1 1 001 00

    PP44 002002 002002

    SeqnciaSeqncia resultar emresultar em

    FinishFinish[[ii]= true]= truepara todopara todo ii

  • 8/6/2019 SOI Deadlock

    48/52

    Exemplo do Algoritmo de Deteco

    PP22pede uma instncia adicional do tipopede uma instncia adicional do tipo CC

    RequestRequest

    AB CAB C

    PP00 000000

    PP11 20 120 1

    PP22

    00 100 1

    PP33 1 001 00

    PP44 002002

  • 8/6/2019 SOI Deadlock

    49/52

    Exemplo do Algoritmo de Deteco

    Estado do sistema?Estado do sistema?

    Pode demandar recurso mantido peloPode demandar recurso mantido pelo

    processoprocesso PP00, mas recursos insuficientes se, mas recursos insuficientes seajustam a outros processos; pedidos.ajustam a outros processos; pedidos.

    DeadlockDeadlockexiste, consistindo dos processosexiste, consistindo dos processos

    PP11,, PP22,, PP33, e, e PP44

  • 8/6/2019 SOI Deadlock

    50/52

    Uso do Algoritmo de Deteco

    Quando e quantas vezes, invocar depende de:Quando e quantas vezes, invocar depende de: Quantas vezes provvel que ocorraQuantas vezes provvel que ocorra deadlockdeadlock?? Quantos processos necessitaro ter a suaQuantos processos necessitaro ter a sua

    execuo retornada para determinado pontoexecuo retornada para determinado ponto((rolledrolled backback)?)?

    um por cada ciclo disjuntoum por cada ciclo disjunto

    Se o algoritmo de deteco invocadoSe o algoritmo de deteco invocadoarbitrariamente, pode haver muitos ciclos no grafoarbitrariamente, pode haver muitos ciclos no grafode recursos e ento no seriam capazes de dizerde recursos e ento no seriam capazes de dizerquais dos muitos processos emquais dos muitos processos em deadlockdeadlockcausaramcausaram

    oo deadlockdeadlock

  • 8/6/2019 SOI Deadlock

    51/52

  • 8/6/2019 SOI Deadlock

    52/52

    Recuperao de Deadlock:

    Preempo de Recursos

    Seleo de uma vtimaSeleo de uma vtima minimiza o custominimiza o custo

    RollbackRollback returna para algum estado seguro,returna para algum estado seguro,

    reinicia processo naquele estadoreinicia processo naquele estado

    StarvationStarvation algum processo pode sempre seralgum processo pode sempre ser

    escolhido como vtima, incluir nmero deescolhido como vtima, incluir nmero de

    rollbacksrollbacks no fator de custono fator de custo