Processos Concorrentes
PROCESSOS
CONCORRENTES
MSC. JESSE TEIXEIRA DA SILVA
SO – PROCESSOS CONCORRENTES
• PROCESSOS QUE EXECUTAM AO MESMO
TEMPO:
– Podem existir de maneira independente –Exigir sincronização ocasional
–Exigir cooperação
PROCESSOS INDEPENDENTES E
COOPERANTES
• Processos Independentes
– Não afetam e nem são afetados por outros processos sendo executados – O sistema operacional é quem gerencia os recursos
– Ex: Processos de usuários ou Programas diferentes
• Processos Cooperantes
– Podem afetar e serem afetados por outro processos em execução – Os processos se coordenam mutualmente, como por exemplo para trocas de dados ou acesso a espaço compartilhado de memória – Ex: Processos da mesma aplicação ou que interajam entre si.
O PROBLEMA PRODUTOR- CONSUMIDOR
• É um paradigma para certos processos cooperantes (padrão comportamental)
• O processo produtor deve “produzir” conforme o processo consumidor “consome”
• A comunicação entre estes processos cooperativos utiliza um buffer:
– Bounded-Buffer (Tamanho fixo)
– Unbounded-Buffer ( Sem limite de tamanho)
O PROBLEMA PRODUTOR-CONSUMIDOR
• Memória compartilhada
• Processo Produtor
• Processo Consumidor
PROBLEMA – CONDIÇÃO DE CORRIDA
• O acesso concorrente aos dados compartilhados pode danificar os mesmos
• Para manter estes dados consistentes, é preciso que os processos sejam executados de forma ordenada • Quando um ou mais processos querem compartilhar um recurso, temos uma race condition (condição de corrida)
• O resultado de uma condição de corrida depende da ordem de escalonamento dos processos.
PROBLEMA – CONDIÇÃO DE CORRIDA
• Para evitar esta condição, devemos evitar que os processos escrevam dados compartilhados ao mesmo tempo.
• Se um processo estiver utilizando uma variável ou arquivo, nenhum outro processo terá acesso a estes recursos. Este método é conhecido como
EXCLUSÃO MÚTUA.
• A parte do programa em