Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads, Lucas Codeco Mapa Mental 6 SO 2023/1 -…
Sincronismo de Processos e Threads
Processo cooperativo
Pode afetar ou ser afetado por outros
Acesso concorrente aos dados compartilhados
Pode gerar inconsistencia de dados
Podem compartilhar diretamente código e dados
O problema
Um processo produtor produz informações que são consumidas por um processo consumidor
Um produtor pode produzir enquanto um consumidor está consumindo
É preciso haver uma sincronização para que o consumidor não tente consumir um item que ainda não foi produzido
O Problema da Seção Crítica (SC)
segmento de código que pode alterar
dados comuns a vários
processos/threads
Para garantir a consistência dos dados compartilhados, apenas um processo por vez pode adentrar a SC
Requisitos para solução
Espera limitada:
Há um limite para o número de vezes em que outros processos podem entrar em suas RCs
Exclusão Mútua:
Apenas UM processo por VEZ pode acessar a RC
Progresso
Se algum processo esta nos codigos remanecsentes é porque não esta mais na RC, portanto, não pode bloquear a RC
kernel com ou sem preempção
Com preempção
Permite que um processo seja
interceptado enquanto está sendo executado em modalidade de kernel.
Desvantagens
Sujeito a condições de corrida
. Difíceis de projetar em arquiteturas SMP
Vantagens
Melhor capacidade de resposta
Mais apropriado
para programação em tempo real
Sem preempção
Não permite que um processo seja
interceptado enquanto está sendo executado em modalidade de kernel.
Vantagens
Livre de condições de corrida
Desvantagens
Não tem as vantagens de um kernel com preempção
Soluções para o Problema da
Seção Crítica
Tipos de Solução
software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Decker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep/Wakeup, Semáforos, Monitores
Hardware
Inibição de interrupções
Instrução TSL (Busy Wait)
Soluções
Instrução TSL (Busy Wait)
Desvantagens
desperdício de tempo de CPU.
Postergação infinita (starvation)
Espera ativa ou espera ocupada
Verifica se a entrada é permitida. Se não for, ele espera até que o acesso seja liberado.
Test and set lock
O processador que executa a TSL bloqueia o
barramento de memória
Vantagens
Simplicidade de uso
Processos de usuário não pode desabilitar
interrupções
Presente em quase todos os processadores atuais
Funciona em máquinas com vários processadores
Algoritimo de Peterson
Ao marcar a sua intenção de entrar, o processo já indica (para o
caso de empate) que a vez é do outro.
Sleep/ Wake up
wake up
Sinaliza (acorda) o processo anteriormente bloqueado
sleep
Bloqueia o processo e espera por uma sinalização
Problema
Condição de Corrida
Processos não são atômicos, portanto pode-se acontecer uma condição na qual resulta nos dois processos dormindo eternamente
Semaforos
Não exige espera ocupada
Menos complicado
Duas operações indivisíveis
Atômico
Mutex
Semaforo de 1 ou 0 (Binário)
Lock e unlock
Problema:
Erro de temporização difíceis de detectar
Monitores
Torna obrigatória a exclusão mútua
colocando as seções críticas em uma área acessível somente a um
processo de cada vez
Em vez de codificar as SC em cada processo codifica-o como procedimentos do monitor
código da SC não é mais duplicado em cada processo
Lucas Codeco Mapa Mental 6 SO 2023/1