Escolar Documentos
Profissional Documentos
Cultura Documentos
CAPÍTULO 2- PROCESSOS
Escalonamento de Processos
Comunicação entre Processos: Semáforo, Monitores
Problemas clássicos de sincronização de Processos
Alocação de recursos e Deadlocks
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE
PROCESSOS:
Introdução;
Aplicações Concorrentes;
Especificação de Concorrência em Programas;
Problemas de Compartilhamento de Recursos;
Exclusão Mútua;
Sincronização Condicional;
Semáforos;
Monitores;
Deadlock.
Introdução
Com o surgimento dos sistemas multi programáveis, passou a ser
possível estruturar aplicações concorrentes, que tem como base a
execução cooperativa de múltiplos processos ou threads.
Em sistemas com múltiplos processadores, a possibilidade do
paralelismo na execução de instruções somente estende as
vantagens que a programação concorrente proporciona.
O compartilhamento de recursos entre os processos pode ocasionar
situações indesejáveis, capazes até de comprometer a execução das
aplicações.
Os processos concorrentes devem ter suas execuções
sincronizadas.
Aplicações Concorrentes
É necessário que os processos concorrentes tenham sua execução
sincronizada através de mecanismos do sistema operacional.
Os mecanismos que garantem a comunicação entre processos
concorrentes e o acesso a recursos compartilhados são chamados
mecanismos de sincronização.
No projecto de SOs multi programáveis, é fundamental a
implementação desses mecanismos para garantir a integridade e a
confiabilidade na execução de aplicações.
Aplicações Concorrentes: Cont
Especificação de Concorrência em Programas
1º Algorítmo
O algorítmo, apesar de implementar a exclusão mútua, apresenta
duas limitações:
O acesso ao recurso compartilhado só pode ser realizado por
dois processos e sempre de maneira alternada;
No caso da ocorrência de algum problema com um dos
processos, de forma que a variável de bloqueio não seja alterada, o
outro processo permanecerá indefinidamente bloqueado.
Soluções de Software: Cont
No segundo algoritmo:
O uso do recurso não é realizado necessariamente alternado;
Caso ocorra algum problema com um dos processos fora da
região crítica, o outro não ficará bloqueado;
Caso um processo tenha um problema dentro da sua região
crítica ou antes de alterar a variável, o outro processo permanecerá
indefinidamente bloqueado;
Na prática, nem sempre a exclusão mútua é garantida.
Soluções de Software: Cont
No terceiro algoritmo:
Garantia da exclusão mútua;
Cada processo altera o estado da sua variável indicando que irá
entrar na região crítica sem conhecer o estado do outro processo;
Problema: possibilidade de bloqueio indefinido de ambos os
processos.
Soluções de Software: Cont
No quarto algoritmo:
Semelhante ao terceiro algorítmo, porém existe a possibilidade da
alteração do estado da variável ser revertida;
Garante a exclusão mútua;
Não gera o bloqueio simultâneo dos processos;
Problema: quando os tempos aleatórios forem próximos, pode
ocorrer uma situação onde nenhum dos dois processos conseguirá
executar sua região crítica.
Soluções de Software: Cont
Algoritmo de Dekker:
A primeira solução de software que garantiu a exclusão mútua
entre dois processos sem a incorrência de outros problemas foi
proposta pelo matemático holandês T. Dekker, com base no 1º e 4º
algoritmos;
Possui uma lógica bastante complexa e pode ser encontrado em
Stallings (1997).
Algoritmo de Peterson:
Proposto por. G. L. Peterson; Apresenta uma solução simples
para o problema da exclusão mútua entre dois processos.
Soluções de Software: Cont
Produtor/Consumidor utilizando
buffer de tamanho limitado
Duas variáveis de condição:
essas variáveis são acessíveis
somente dentro do monitor
notfull – TRUE se ainda há espaço
notempty – TRUE se tem caractere
2.6- PROBLEMAS CLÁSSICOS DE
SINCRONIZAÇÃO DE PROCESSOS
Na comunicação entre processos cooperantes, a sincronização
destes processos éimportante:
Processos Cooperantes
Paradigma de processos cooperantes: