SISTEMAS OPERACIONAIS
Sincronização de Processos (2)
Aula 11
Profa. Patrícia Dockhorn Costa
Dificuldades:
Compartilhamento de recursos globais.
Gerência de alocação de recursos.
Localização de erros de programação (depuração de programas). Ação necessária:
Proteger os dados compartilhados (variáveis, arquivos e outros recursos globais).
Promover o acesso ordenado (controle de acesso) aos recursos compartilhados ⇒ sincronização de processos.
Profa. Patrícia D. Costa LPRM/DI/UFES
Condições de Corrida
Sistemas Operacionais 2008/1
5a. Tentativa
são situações onde dois ou mais processos acessam dados compartilhados e o resultado final depende da ordem em que os processos são executados (o que, em última instância, é ditado pelo mecanismo de escalonamento do S.O.).
Torna a depuração difícil.
Condições de corrida são evitadas através da introdução de mecanismos de exclusão mútua. A exclusão mútua garante que somente um processo estará usando os dados compartilhados num dado momento.
A parte do programa (trecho de código) que em que os dados compartilhados são acessados é denominada de região (ou seção) crítica.
Condições de corrida
Profa. Patrícia D. Costa LPRM/DI/UFES
2
3
Sistemas Operacionais 2008/1
Na tentativa anterior o processo assinalava a sua intenção de entrar na R.C. sem saber da intenção do outro, não havendo oportunidade dele mudar de idéia depois (i.e., mudar o seu estado para “false”).
A 5a. tentativa corrige este problema:
Após testar no loop, verifica se o outro processo também quer entrar na sua R.C. Em caso afirmativo, o processo com a posse da UCP declina da sua intenção, dando a vez ao parceiro.
Profa. Patrícia D. Costa LPRM/DI/UFES
4
Sistemas Operacionais 2008/1
5a. Tentativa (cont.)
/* Process 0*/:
...
flag[0] = true; while (flag[1])
{
flag[0]= false;
/*delay*/
flag[0] = true;
}
< critical section > flag[0] = false;
...
Profa. Patrícia D. Costa LPRM/DI/UFES