Sistemas Operacionais

: TEC.0009
: 07h00-08h30 Lab 06
: 08h30-10h00 Lab 06

Notas de aula
Cronograma
Avaliações
Links
telegram
CADES

Sistemas operacionais : Gerência de atividades :

Sumário

  1. Introdução
  2. Caracterização de impasses
  3. Grafos de alocação de recursos
  4. Técnicas de tratamento de impasses

1. Introdução

controle da concorrência : implica em suspender algumas tarefas enquantro outras acessam os recursos compartilhados de forma a garantir a consistência das tarefas e dos recursos.

impasse ou deadlock é quando as tarefas envolvidas ficam bloqueadas aguardando liberação de recursos indefinidamente.

exemplo transferência entre conta bancária

typedef struct conta_t {
  int saldo;   // saldo atual da conta
  sem_t lock ; // semáforo associado à conta
  ...          // outras informações da conta
};

void transferir (conta_t* contaDeb, conta_t* contaCred, int valor) {
  sem_down (contaDeb->lock) ;      // obtém acesso a contaDeb
  sem_down (contaCred->lock) ;     // obtém acesso a contCred
  if (contaDeb->saldo >= valor) {
    contaDeb->saldo -= valor ;     // debita valor de contaDeb
    contaCred->saldo += valor ;    // credita valor em contaCred
  }
  sem_up (contaDeb->lock) ;        // libera acesso a contaDeb
  sem_up (contaCred->lock) ;       // libera acesso a contaCred
}

Exemplo de impasse com 2 tarefas (_t1_ e _t2_)

2. Caracterização de impasses

Formalmente um conjunto de N tarefas se encontram em um impasse se cada uma das tarefas aguarda um evento que somente outra tarefa do conjunto poderá produzir.

4 condições são necessárias:

  1. (C1) Exclusão mútua
  2. (C2) Posse e espera
  3. (C3) Não preempção
  4. (C4) Espera circular

observações:

3. Grafos de alocação de recursos

Grafos de alocação de recursos é uma forma de representa a alocação de recursos entre as tarefas.

Grafo de alocação de recursos com impasse

Grafo de alocação com múltiplas instâncias de recursos

4. Técnicas de tratamento de impasses

Tipos de técnicas de tratamento:

Bibliografia