Sincronização de processos - parte 1

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1247 palavras )
  • Download(s) : 0
  • Publicado : 28 de outubro de 2011
Ler documento completo
Amostra do texto
FACULDADE CAMPO GRANDE

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ãoafetam 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 emproximoProduzido 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 seremseparadas, 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









OPROBLEMA 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 suaseção crítica O problema da seção crítica consiste em desenvolver um protocolo no qual processos possam ser executados concorrentemente sem que tal situação ocorra







Ciência da Computação - FCG

9

Funcionamento


Cada processo deve pedir permissão para entrar em sua seção crítica A seção de código que implementa tal pedido se chama seção de entrada A seção crítica pode serseguida por uma seção de saída O restande do código do processo é chamado de seção restante







Ciência da Computação - FCG

10

Estrutura geral de um processo típico Pi

do {
seção de entrada

seção crítica
seção de saída

seção restante }while(TRUE);

Ciência da Computação - FCG

11

Requisitos para o problema da seção crítica


Exclusão mútua: Se o processoPi estiver executando em sua seção crítica, nenhum outro processo pode estar executando em sua seção crítica Progresso: Se nenhum processo estiver executando em sua seção crítica e existem processos que desejam entrar em suas respectivas seções crítica, então apenas aqueles processos que não estiverem executando em suas respectivas seções restantes devem participar do ”sorteio” de qual o próximoprocesso que vai entrar em sua seção crítica. Tal escolha não pode ser adiada indefinidamente Espera limitada: Deve haver um limite no número de vezes que outros processos tem permissão para entrar em suas seções críticas depois que um processo pediu permissão para entrar em sua seção crítica e antes que tal pedido seja atendido
Ciência da Computação - FCG 12





Kernels preemptivos
Em um dado instante, podem existir vários processos executando em modo de kernel Desta forma, o código de kernel está sujeito a várias condições de corrida Ex.: estrutura de dados que mantém uma lista dos arquivos abertos no sistema → adicionar e remover arquivos da lista Kernel preemptivo: permite que um processo seja preemptado enquanto está executando em modo de kernel → condições de...
tracking img