Sincronismo de processos e threads

Description

Continua no ouro
Jonathan Castro
Mind Map by Jonathan Castro, updated more than 1 year ago
Jonathan Castro
Created by Jonathan Castro over 1 year ago
1
0

Resource summary

Sincronismo de processos e threads
  1. "Introdução"
    1. Processo cooperativo
      1. Podem compartilhar diretamente um espaço de endereços lógicos (ou seja, código e dados)
        1. Acesso concorrente aos dados compartilhados pode resultar em inconsistência de dados
        2. Manutenção da consistência dos dados requer mecanismos para garantir a execução ordenada dos processos em cooperação
        3. Antecedentes
          1. Processos podem ser executados concorrentemente ou em paralelo
            1. SO possui um escalonador de processos que alterna o uso da CPU rapidamente entre os processos para fornecer execução concorrente
              1. Pode executar paralelamente processos/threads, em que dois fluxos de instruções são executados simultaneamente em núcleos de processamento separados
                1. O Problema do Produtor/Consumidor
                  1. Região de memória compartilhada (buffer) onde o produtor deposita os itens produzidos a fim de que o consumidor consuma esses itens
                    1. Preciso haver uma sincronização para que o consumidor não tente consumir um item que ainda não foi produzido (ou seja, não está no buffer)
                2. Problema da Seção Crítica/Região Crítica
                  1. Um segmento de código que pode alterar dados comuns (ou seja, compartilhadas) a vários processos/threads
                    1. Três requisitos obrigatórios de uma boa solução
                      1. Exclusão Mútua
                        1. Enquanto um processo estiver executando sua RC, outros processos não poderão executar suas RCs
                        2. Progresso
                          1. Se algum processo deseja entrar na RC, só processos que não estão executando sua seção remanescente poderão participar da decisão sobre qual será o proximo à entrar na RC
                            1. Essa decisão não pode ser adiada indefinidamente
                          2. Espera limitada
                            1. Limite para o número de vezes em que outros processos podem entrar em suas RCs após um processo ter feito uma solicitação para entrar em sua RC e antes que essa solicitação seja atendida
                              1. Entrou na fila da RC, tem que esperar todo mundo da frente (não pode furar fila)
                          3. Seção de entrada -> Seção crítica -> Seção de saída -> Seção remanescente
                            1. Presume-se que cada processo esteja executando a uma velocidade diferente de zero
                              1. Não podemos fazer suposições com relação à velocidade relativa dos n processos
                              2. Kernel COM ou SEM Preempção
                                1. Kernels com preempção
                                  1. Permite que um processo seja interceptado enquanto está sendo executado em modalidade de kernel
                                    1. Vantagens
                                      1. Melhor capacidade de resposta
                                        1. Menos chance de um processo ficar nesse estado por muito tempo, fazendo os outros esperarem
                                        2. Mais apropriado para programação em tempo real
                                        3. Desvantagem
                                          1. Sujeito a condições de corrida
                                            1. Difíceis de projetar em arquiteturas SMP
                                          2. Kernels sem preempção
                                            1. Não permite que um processo sendo executado em modalidade de kernel seja interceptado
                                              1. Um processo em modalidade de kernel será executado até sair dessa modalidade, ser bloqueado ou abandonar voluntariamente o controle da CPU
                                                1. Vantagens
                                                  1. Livre de condições de corrida
                                                  2. Desvantagens
                                                    1. Não tem as vantagens do kernel com preempção
                                              2. Soluções para o Problema da Seção Crítica
                                                1. Busy wait
                                                  1. Quando um processo quer entrar na sua R.C. ele verifica se a entrada é permitida.
                                                    1. Se não for, ele espera em um laço (improdutivo) até que o acesso seja liberado
                                                      1. while (vez == OUTRO) do {nothing}
                                                    2. Desperdício de tempo de CPU
                                                      1. Problema da inversão de prioridade
                                                      2. Soluções de Software com Busy Wait
                                                        1. Algoritmo de Peterson
                                                          1. "Ao marcar a sua intenção de entrar, o processo já indica (para o caso de empate) que a vez é do outro"
                                                            1. É uma solução simples e elegante para o problema da exclusão mútua, sendo facilmente generalizado para o caso de n processo
                                                        Show full summary Hide full summary

                                                        Similar