Sincronização de processos

577 palavras 3 páginas
Segundo Silberschatz
Sincronização de Processos
Processos podem agir de forma cooperativa, ou concorrente, com outros processos (ou threads), compartilhando recursos ou dados, isto é, podem compartilhar códigos e variáveis. Entretanto o acesso concorrente pode gerar dados incoerentes. Por exemplo, com um problema envolvendo um consumidor e um produtor ambos podendo acessar a uma mesma variável concorrentemente, isto geraria uma incoerência nos dados dessa variável.
Ex.:
/*PRODUTOR*/
While (count == BUFFER_SIZE);
//não faz nada
//acrescenta um item ao buffer
++count;
buffer[in] = item; in = (in + 1) % BUFFER_SIZE;

/*CONSUMIDOR*/
While (count == 0);
//não faz nada
//remove um item ao buffer
--count;
Item = buffer[out]; out = (out + 1) % BUFFER_SIZE;

Levando em consideração que a variável “count” é um numero n, ao ser incrementado pelo produtor está variável seria igual a n+1, e ao mesmo tempo em que fosse decrementada pelo consumidor ela seria igual a n-1. Em uma execução concorrente ela sempre teria mais um ou menos um, e nunca o valor real de n.
Seção critica é um protocolo que indica se o recurso está em uso por um processo. Cada processo só pode acessar o recurso de seção critica se nenhum outro estiver usando. Enquanto o recurso está em uso os processos, que o solicitaram, ficam em standby, em uma fila para utilização deste recuso de seção critica. Um processo não pode ficar indefinidamente em uma fila esperando por um recurso, isso causa o starvation.
Semaforos
Semáforos é uma solução simples para garantir o acesso a uma seção critica. Um semáforo é uma variável inteira que é compartilhada entre os processos, ou threads, e controla a entrada em uma seção critica. Ele pode ser um contador, ou pode ser binário, ou seja, só assumir valores 0 e 1. Um semáforo so pode ser acessado pelos métodos acquire();(*para decremento) e release();(*para incremento). Os métodos acquire e release devem ser executados sem interrupções, e não podem

Relacionados

  • Sincronização de processos
    1651 palavras | 7 páginas
  • Sincronização de processos
    2600 palavras | 11 páginas
  • Sincronização e Comunicação entre Processos
    1654 palavras | 7 páginas
  • Sincronização e Comunicação entre Processos
    1303 palavras | 6 páginas
  • sincronização comunicação processos
    272 palavras | 2 páginas
  • Aula_07 Sincronização E Comunicação Entre Processos
    8036 palavras | 33 páginas
  • Sincronização de processos - parte 1
    1247 palavras | 5 páginas
  • MECANISMO DE SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS
    2183 palavras | 9 páginas
  • Sistemas Operacionais - Sincronização e Comunicação entre Processos
    617 palavras | 3 páginas
  • Mecanismos de sincronização de processos e aplicações concorrentes
    2274 palavras | 10 páginas