Problemas Classicos SO

477 palavras 2 páginas
Sistemas Operacionais

O Jantar dos Filósofos
• Cinco filósofos sentam-se à mesa circular

Aula 7: Problemas Clássicos de Sincronização
• Passam a vida pensando ou comendo
• O jantar dos filósofos

• Para comer usam dois garfos: um de cada lado

• Leitores/escritores

• Cada garfo é compartilhado por dois filósofos

• Barbeiro Dorminhoco

Sérgio Campos

Jantar dos Filósofos

Jantar dos Filósofos

semaphore garfo[5];

semaphore garfo[5];

2

filosofo(i) { while (true) { think(); if (i != 5) { wait(garfo[i]); wait(garfo[i+1 % 5]); eat(); signal(garfo[i]); signal(garfo[i+1 % 5]);
} else { wait(garfo[i+1 % 5]); wait(garfo[i]); eat(); signal(garfo[i+1 % 5]); signal(garfo[i]); };
};
Neste caso o ciclo é quebrado,
}

filosofo(i) { while (true) { think(); wait(garfo[i]); wait(garfo[i+1 % 5]); eat(); signal(garfo[i]); signal(garfo[i+1 % 5]);
};
}
Funciona ?

O problema deste código é que todo mundo pode pegar um garfo, e ao pegar o segundo não está disponivel. permite alocação e espera circulares

porque o 5 pega ao contrario.
Se o escalonador não for
Funciona ? viciado, não irá ocorrer inanicao

Sérgio Campos

3

Sérgio Campos

4

Jantar dos Filósofos

Leitores/Escritores

• Outras soluções existem:

• Alguns processos lêem o valor das variáveis compartilhadas: leitores;

• e.g. acessar garfos em exclusão mútua: mais complicado.

• Outros processos lêem e escrevem: escritores.

• Generalizações:

• Leitores podem ler de modo concorrente;

• Grafo não circular;

• Mas escritores só podem executar em exclusão mútua • Drinking philosophers:
• Para jantar são precisos todos os garfos compartilhados;
• Mas para beber apenas alguns são usados. Sérgio Campos

5

6

Sérgio Campos

Leitores/Escritores

Leitores/Escritores

semaphore escrevendo = 1, lendo = 1; int leitores = 0;

Problema: leitores podem sufocar escritores!

leitor() { while (true) { wait(lendo); leitores++; if (leitores == 1) wait(escrevendo); signal(lendo); le(); wait(lendo); leitores--; if (!leitores)

Relacionados

  • O capitalismo
    2834 palavras | 12 páginas
  • Computação quântica
    853 palavras | 4 páginas
  • Ciências sociais e o senso comum
    1410 palavras | 6 páginas
  • Porquelerosclassicospg0916
    2338 palavras | 10 páginas
  • Aula4 IA Problemas Classicos
    663 palavras | 3 páginas
  • A escola clássica
    2148 palavras | 9 páginas
  • Computação quântica
    1842 palavras | 8 páginas
  • uma breve historia do trmpo
    549 palavras | 3 páginas
  • Resumo (Evolução da Ciência Econômica)
    4990 palavras | 20 páginas
  • lixo eletrônico
    1655 palavras | 7 páginas