Pesquisa
Comunicação Interprocesso (CIP)
Processos precisam se comunicar com outros processos frequentemente
Exemplo: Um pipeline do shell
Três questões sobre CIP
Como um processo pode passar informações para outro processo? Como certificar-se de que os dois (ou mais) processos não interfiram um com outro quando envolvidos em atividades críticas? Como respeitar uma sequência de atividades a serem executadas quando existem pendências?
A Dados para impressão B Ex.: O que acontece se B tentar imprimir algo que A ainda não produziu?
Condições de Corrida
Quando processos trabalham juntos, eles podem compartilhar dados. Este armazenamento compartilhado de dados pode estar na memória ou em um arquivo Condições de corrida acontece quando dois ou mais processos estão lendo ou gravando alguns dados compartilhados e o resultado final depende de quem executa precisamente quando.
Condições de Corrida
Exemplo:
Dois processos (A e B) querem acessar a memória compartilhada ao mesmo tempo.
Seções críticas
Como evitar condições de corrida?
Impedindo que mais de um processo acesse dados compartilhados ao mesmo tempo. - isto chama-se exclusão mútua
Seção crítica (ou região crítica) - é a parte do programa em que a memória compartilhada é acessada.
Boa solução de exclusão mútua
Uma boa solução de exclusão mútua deve sustentar quatro condições:
Nenhum dos processos pode estar simultaneamente dentro de suas regiões críticas Nenhuma suposição eve ser feita sobre velocidade ou número de CPU's Nenhum processo que executa fora de sua região crítica pode bloquear outro processo. Nenhum processo deve esperar eternamente para entrar em sua região crítica.
Soluções de Exclusão Mútua
Desativar interrupções – nenhuma interrupção pode ser executada até que o processo saia de sua região crítica.
Problema: E se o processo nunca mais reativar as interrupções?
Continua...