Instituto Federal de Educação,
Ciência e Tecnologia - Alagoas
Sistemas de Computação
Sincronização e Comunicação
entre Processos
Sumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
Sumário
1.
Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
1. Introdução
●Multiprogramação
»
Vantagens:
Maior tempo de utilização da CPU
– Máxima utilização – Baixa ociosidade»
Desvantagens
Compartilhamento de recursos pode ocasionar
situações indesejáveis
Podese comprometer a execução das aplicações
1. Introdução
●Objetivo deste capítulo:
»
Verificar
Como a concorrência entre processos pode ser
implantada
Problemas no compartilhamento de recursos
Soluções e Mecanismos do sistema operacional para
sincronizar processos
– Semáforos – MonitoresSumário
1. Introdução
2.
Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
2. Aplicações Concorrentes
●Troca de informações:
»
Necessária a aplicações concorrentes:
Mecanismos:
– Variáveis compartilhadas – Trocas de mensagensTratamse de cenários nos quais os processos precisam
ter sua execução
sincronizada.
2. Aplicações Concorrentes
●
Troca de informações:
»
Processos compartilham buffer
Processo Leitor: é preciso ter alguma informação
Processo Gravador: é preciso ter espaço no buffer
2. Aplicações Concorrentes
●Sincronização:
»
Tanto na gravação quanto na leitura serão usados
mecanismos de sincronização
mecanismos de sincronização
»
Objetivo:
Garantir a comunicação entre
– processos concorrentes – acesso a recursos compartilhados»
Os
mecanismos de sincronização
mecanismos de sincronização
São implementados para garantir
– Integridade e ConfiabilidadeSumário
1. Introdução
2. Aplicações Concorrentes
3.
Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
3. Especificação de Concorrência
de Programas
●Há várias notações para especificar
concorrência entre programas
»
fork/join
fork: cria um novo processo
join: permite a sincronização entre os processos
– Quando o programa A encontra o comando join, ele só continuará quando B for finalizado. PROGRAM A; PROGRAM B; . . FORK B; . . . JOIN B; . . END;3. Especificação de Concorrência
de Programas
●... concorrência entre programas
»
PARBEGIN/PAREND
»
Início e término de trechos paralelos de código
PARBEGIN
– Início de sequência de comandos realizada em paraleloPAREND
– Término de sequência de comandos realizada em paralelo3. Especificação de Concorrência
de Programas
3. Especificação de Concorrência
de Programas
●... concorrência entre programas
»
Exemplo de código:
X := SQRT(43046721) + (35.4*0.23) – (302/7)
PROGRAM Expressão
VAR X, Temp1, Temp2, Temp3: REAL
BEGIN
PARBEGIN
Temp1 := SQRT(43046721)
Temp2 := (35.4*0.23)
Temp3 := (302/7)
PAREND;
X := Temp1 + Temp2 – Temp3
WRITELN('X = ',X);
END.
Sumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4.
Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
4. Problemas de
Compartilhamento de Recursos
●Quais problemas podem ocorrer quando há
compartilhamento de recursos?
»
Inconsistência e Nãoconfiabilidade
Depósito Saque4. Problemas de
Compartilhamento de Recursos
●Como seria o programa que apresenta esse
problema?
PROGRAM Conta_Corrente; . . READ(Arq_Contas, Reg_Cliente); READLN(Valor_Dep_Ret); Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret; WRITE(Arq_Contas, Reg_Cliente); . . END.4. Problemas de
Compartilhamento de Recursos
4. Problemas de
Compartilhamento de Recursos
●Resumo dos problemas de Sincronização entre
processos concorrentes
»
Acesso concorrente a arquivo compartilhado em
disco
»
Variável na memória principal sendo compartilhada
Sumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5.
Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
5. Exclusão Mútua
●O que é exclusão mútua?
»
Solução mais simples para evitar problemas de
compartilhamento de recursos
»
Como ocorre?
Enquanto um processo estiver acessando determinado
recurso, todos os demais processos que queiram
acessálo deverão esperar pelo término da utilização do
recurso.
»
Definição –
Região Crítica:
Região Crítica
Parte do código do programa onde é feito o acesso ao
recurso compartilhado.
5. Exclusão Mútua
●Como implementar a exclusão mútua?
»
Soluções de Hardware
Desabilitação de Interrupções
Instruções testandset
»
Soluções de Software
Foram desenvolvidos diversos algoritmos para garantia
de acesso a recursos compartilhados
5. Exclusão Mútua
●Soluções de Hardware
»
Desabilitação de interrupções
1. Todas as interrupções são desabilitadas antes da
entrada na região crítica
2. As operações sobre a mesma são realizadas
3. Reabilitação das interrupções após saída da região
crítica
Limitações:
– Comprometimento da multiprogramação – Possível paralisação do sistema (etapa 3 não realizada)Vantagens
– Executar kernel sem interrupções(evita problemas de5. Exclusão Mútua
●
Instrução testandset
5. Exclusão Mútua
●Soluções de Software
Serão apresentados, de forma evolutiva, algoritmos de
exclusão mútua entre N processos
»
Primeiro algoritmo
Mecanismo de controle alterna a execução entre as
regiões críticas
Utiliza variável de bloqueio
Limitação:
– Pode ocorrer um problema na liberação da variável de bloqueio ● Processo permanecerá indefinidamente bloqueado5. Exclusão Mútua
●
Primeiro algoritmo:
5. Exclusão Mútua
●Soluções de Software
»
Segundo algoritmo
Resolve o problema da variável global única
Porém ...
– Não garante que haja alternação entre os processos – Pior que a primeira solução: não garante a exclusão mútua – Caso ocorra um problema com um dos processos fora da região crítica, o outro processo não será bloqueado5. Exclusão Mútua
●
Segundo Algoritmo
»
Execução
Considerando dois núcleos surge o problema da
não
não
exclusão mútua
5. Exclusão Mútua
●Soluções de Software
»
Terceiro algoritmo:
Coloca a instrução de atribuição das variáveis antes do
loop de teste: garantia da exclusão mútua
Porém...
– Há a possibilidade de bloqueio indefinido de ambos os processos – Caso ambos os processos alterem as variáveis CA e CB antes do WHILE, ambos não poderão entrar em suas regiões críticasSumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6.
Sincronização Condicional
7. Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
6. Sincronização Condicional
●Situação na qual:
»
Acesso ao recurso compartilhado exige
sincronização entre processos vinculada a uma
condição de acesso.
Exemplo: Produtor/Consumidor:
– Processo produtor só deve escrever caso o buffer não esteja totalmente tomado ● Essa informação deve ser conhecida, ou seja, os processos devem estar sincronizados – Processo consumidor só deve ser caso o buffer não esteja vazio ● Também deve estar sincronizadoSumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7.
Semáforos
8. Monitores
9. Troca de Mensagens
10. Deadlock
7. Semáforos
●Proposto por Dijsktra(1965)
»
Mecanismo de sincronização
»
Permite implementar:
Exclusão Mútua
Sincronização Condicional
»
Tratase de um dos principais mecanismos
utilizados em:
Sistemas Operacionais
Aplicações Concorrentes
7. Semáforos
●Proposto por Dijsktra(1965)
»
O que é um semáforo?
Variável inteira
– NãonegativaPode ser manipulada por apenas duas instruções:
– DOWN – UPSão instruções atômicas:
– Não podem ser interrompidas – UP: Incrementa em uma unidade o valor do semáforo – DOWN: Decrementa em uma unidade o valor do semáforo7. Semáforos
●Tipos de semáforos
»
Binários:
Mutexes : Mutual Exclusion Semaphores
– Assumem apenas valores binários(0 ou 1)Contadores
– Podem assumir qualquer valor positivo, além do 0(zero)7. Semáforos
●
Tipos de semáforos
»
Exclusão mútua com semáforos binários
Não há ocorrência
de espera ocupada
Sumário
1. Introdução
2. Aplicações Concorrentes
3. Especificação de Concorrência de Programas
4. Problemas de Compartilhamento de Recursos
5. Exclusão Mútua
6. Sincronização Condicional
7. Semáforos
8.
Monitores
9. Troca de Mensagens
10. Deadlock
8. Monitores
●Estruturas de sincronização de alto nível
»
Implementado pelo compilador
»
Característica mais importante:
Implementação automática de exclusão mútua
– Somente um processo pode estar executando um dos processos do monitor em um determinado instante8. Monitores
8. Monitores
●Exclusão Mútua utilizando monitores
»
RegIões críticas definidas como procedimentos no
monitor
»
Compilador é encarregado de garantir a exclusão
mútua entre os procedimentos
»
Comunicação é feita exclusivamente a partir de
chamadas de procedimentos e de parâmetros
passados
8. Monitores
●