segunda-feira, 27 de junho de 2011

Regiões Criticas e Exclusão Mutua

      A condição de disputa acontece constantemente mas é evitada,  e os SO atuais constantemente verificam constantemente se um processo esta utilizando a mesma área de memória, o que, para o SO é proibido, para o SO um processo não pode lê ou escreve no mesmo espaço de memória,   um dos processo será excluídas antes que isso ocorra. Um processo conhecido como Exclusão Mutua.

        Durante a maior parte do tempo um processo execut5a computações internas que não requerem dados de outros processos. O trecho de programas onde ocorre o compartilhamento de dados com outros processos são chamada de Regiões Criticas. E para evita a disputa, estas áreas são monitoradas a todo momento, para evitar que dois processos estejam na mesma Região Critica.

        Assim, deve haver uma cooperação mutua entre os processos, o que deve satisfazer as seguintes condições:

      1.Não pode haver dois processos em regiões criticas

     2.Não são feitas suposições sobre a velocidade relativa dos processos e sobre o numero de UCPs.
      3.Nenhum processo parado fora da região critica pode para outros processos
      4.Nenhum processo deve espera um tempo arbritariamente longo para entra em sua região critica.
 
     Desabilitando Interrupções
     
     A forma mais simples de garantir a exclusão mutua e fazer com que cada processo ao entra na região critica desabilite as interrupções  e ao sair reabilite-as . Isto, impede que a CPU seja chaveada para outro processo e realize interrupções periódicas vindas do relógio da maquina  que ativa o escalonador de processo.
 
     Variáveis de Impedimento

    Pode-se também pensam em uma solução onde exista uma variável auxiliar, chamada  Lock Variable que indica ) para região critica livre e 1 para a mesma ocupada. Assim cada processo antes de entra em uma região critica, o mesmo checa esta variável.

    Alternância Obrigatória

     A solução pela qual um região deve ser entregue a um dado processo por vez é chamado de alternância obrigatória. E o teste continuo de uma variável a espera de um valor é chamado de Espera Ocupada. O que ocasiona um grande desperdício de CPU.
    
    O problema nesta solução e que os processos se alternem precisamente  e isto significa que o tempo dos processo devem ser exatamente iguais. Alem da desvantagem do processo que sai da região critica não poder mais retornar.
 
Soluções para serem analisadas:

Solução de Peterson
Produtor Consumidor
Semáforo
Mutexes
Monitores
Troca de Mensagens
Barbeiro Sonolento
 


Um comentário: