Slides Coordenacao Tarefas
Sistemas Operacionais
Eduardo Carneiro
JOÃO PESSOA/PB
2015
Introdução
Nem sempre um programa sequencial é a melhor solução para um determinado problema. Muitas vezes, as implementações são estruturadas na forma de várias tarefas inter-dependentes que cooperam entre si para atingir os objetivos da aplicação, como por exemplo em um navegador Web. Existem várias razões para justificar a construção de sistemas baseados em tarefas cooperantes, entre as quais podem ser citadas:
●
Atender vários usuários simultâneos
●
Uso de computadores multi processados
●
Modularidade
●
Construção de aplicações interativas
2
Introdução
Para que as tarefas presentes em um sistema possam cooperar, elas precisam comunicar, compartilhando as informações necessárias à execução de cada tarefa, e coordenar suas atividades, para que os resultados obtidos sejam consistentes
(sem erros).
3
Condições de disputa
Quando duas ou mais tarefas acessam simultaneamente um recurso compartilhado, podem ocorrer problemas de consistência dos dados ou do estado do recurso acessado.
Considere que uma função depositar faz parte de um sistema mais amplo de controle de contas bancárias, que pode ser acessado simultaneamente por centenas ou milhares de usuários em terminais distintos. Caso dois clientes em terminais diferentes tentem depositar valores na mesma conta ao mesmo tempo, existirão duas tarefas acessando os dados (variáveis) da conta de forma concorrente.
4
Condições de disputa
5
Condições de disputa
Os erros e inconsistências gerados por acessos concorrentes a dados compartilhados são denominados condições de disputa, ou condições de corrida (do inglês race conditions).
6
Seções críticas
Tarefas acessando dados compartilhados de forma concorrente podem ocasionar condições de disputa. Os trechos de código de cada tarefa que acessam dados compartilhados são denominados seções críticas
(ou regiões críticas).
De modo geral, seções críticas são todos os