Sincronização de processos - parte 1
Sincronização de Processos (parte1)
Disciplina: Sistemas Operacionais
Prof.° M.Sc. Sidney Roberto de Sousa
Conteúdo
Definição O problema da seção crítica Solução de Peterson Sincronização de hardware
Ciência da Computação - FCG
2
DEFINIÇÃO
Ciência da Computação - FCG
3
Problema produtor X consumidor
Processos independentes não afetam e não são afetados por outros processos Processos cooperantes afetam e são afetados por outros processos Problema produtor X consumidor: um processo produtos dados que devem ser consumidos por outros processos Possível solução: buffer (de tamanho limitado) para compartilhamento de memória
Ciência da Computação - FCG
4
Produtor while(TRUE) { //produz um ítem em proximoProduzido while(cont == TAMANHO_BUFFER) ;//faz nada buffer[in] = proximoProduzido; in = (in + 1) % TAMANHO_BUFFER; cont++; }
Ciência da Computação - FCG
5
Consumidor while(TRUE) { while(cont == 0) ;//faz nada proximoConsumido = buffer[out]; out = (out + 1) % TAMANHO_BUFFER; cont--; }
Ciência da Computação - FCG
6
Problema
Apesar das rotinas de produção e consumo serem separadas, elas podem não funcionar corretamente quando executadas concorrentemente Ex.: cont = 5 Se o produtor e o consumidor executarem concorrentemente, o valor de cont pode ser 4, 5 ou 6, porém o valor correto é 5! Tal situação de concorrência é chamada de condição de corrida Necessidade de sincronização de processos e coordenação
Ciência da Computação - FCG 7
O PROBLEMA DA SEÇÃO CRÍTICA
Ciência da Computação - FCG
8
Definição
Considere um sistema que consiste de n processos {P0, P1, P2, P3,..., Pn-1} Cada processo tem um segmento de código, chamado seção crítica, no qual o processo altera variáveis globais, atualiza tabelas, grava em arquivos, etc. Quando um processo está executando sua seção crítica, nenhum outro processo deve executar sua