Sistemas operacionais
(garantir a consistência dos dados)
Processos Cooperantes podem compartilhar dados na memória, arquivos.
Acessos concorrentes aos dados podem resultar em inconsistências.
Mecanismos para garantir consistência dos dados.
Exemplo:
Produtor
registerA= 5
Produtor
registerA= registerA + 1
registerA= 6
Consumidor
registerB= counter
registerB= 5
Consumidor
registerB= registerB - 1
registerB= 4
Produtor
counter= registerA
counter= 6
Consumidor
registerA= counter
counter= registerB
counter= 4
Condições de corrida:
a.
Situações onde dois ou mais processos estão acessando dados compartilhados e o resultado final depende da ordem de execução.
b.
A depuração de programas com condições de corrida é bastante difícil.
O Problema da Seção Crítica (SC) o Um sistema está com n processos e cada processo possui um trecho de seu código em que manipula recursos compartilhados.
o
Problema da Seção Crítica: garantir a execução correta dos processos, executando SC de forma mutuamente exclusiva no tempo.
Notas de Aula – Sistemas Operacionais
Prof. Marcos Alves
Página 1
o
Formato dos processos:
o
Condições para Execução de Seções Críticas
Exclusão mútua: apenas um processo pode executar uma seção crítica num dado instante.
Progresso de execução: um processo que não esteja executando uma seção crítica não pode impedir que outros o façam, ou seja, se nenhum processo está na seção crítica, então um processo que queira executá -la não pode ser impedido, caso ele tenha permissão para tal. Além disso, quem sai da SC, não pode indicar o próximo a entrar.
Espera limitada: um processo não pode ser impedido de executar uma seção crítica por tempo indeterminado.
o
Espera ocupada:
Teste contínuo de uma variável até que ocorra uma mudança no seu valor.
A Espera ocupada desperdiça