Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gerhard Saboia Comunicação entre Processos IPC – Inter-Process Communication A Comunicação entre Processos está associada à comunicação de forma estruturada, não baseada em interrupções. Comunicação entre Processos Processos muitas vezes usam memória comum, que pode ser: ● Principal; ● Secundária; A natureza da memória compartilhada não influi na natureza da comunicação ou nos problemas criados. Aplicações Concorrentes Sincronização e comunicação entre processos Processo gravador Processo leitor dado Sincronização Buffer Especificação de Concorrência em Programas Processo p rinci pal Processo p rinci pal Processo 1 Processo 2 Processo n PARBEGIN Comando_1; Comando_2; . . Comando_n; PAREND Um Exemplo: Spool de impressão. Os processos gravam os nomes dos arquivos a serem impressos no diretório especial de spool; O processo " impressor" verifica este diretório e imprime os arquivos, retirando-os, em seguida, do diretório. Variáveis compartilhadas: ● in próxima entrada livre do diretório; ● out próximo arquivo a ser impresso. 1 Um Exemplo: Spool de impressão. Tais variáveis são mantidas na memória e acessíveis a todos os processos; Num determinado instante... Um Exemplo: Spool de impressão. Um Exemplo: Spool de impressão. Um Exemplo: Spool de impressão. Condição de Corrida São situações onde 2 ou mais processos estão acessando dados compartilhados, e o resultado final do processamento depende de quem executa e quando. Condições de corrida não-determinismo potencial geração de fatos imprevisto e inexplicável. Condição de Corrida Como evitar a ocorrência de condições de corrida? R: Encontrar alguma forma de proibir que mais de um processo acesse o dado compartilhado ao mesmo tempo. 2 Exclusão Mútua de Execução É uma forma de ter certeza que se um processo estiver usando uma variável compartilhada, os demais processos serão impedidos de fazer o mesmo. Grande desafio no projeto de S.O.’s a escolha das operações primitivas adequadas à implementação da exclusão mútua de execução. Em qualquer programa, há seções não-críticas e pode haver ou não seções críticas. Exclusão Mútua Região crítica Protocolos de acesso BEGIN . . Entra_Regiao_Critica; Regiao_Critica; Sai_Regiao_Critica; . . END. Região Crítica ou Seção Crítica É uma parte do programa cujo processamento pode levar à ocorrência de condições de corrida. Para que processos paralelos cooperem de forma correta e eficiente no uso de recursos compartilhados, é necessário: 1. Dois ou mais processos não podem estar dentro de suas regiões críticas correspondentes (que acessam a mesma variável compartilhada) ao mesmo tempo; 2. Nenhuma consideração pode ser feita a respeito da velocidade relativa dos processos e do número de processadores disponíveis no sistema; 3. Nenhum processo que esteja rodando fora de sua seção crítica pode bloquear a execução de outro processo; 4. Nenhum processo pode ser obrigado a esperar indefinidamente por entrar em sua região crítica. Exclusão mútua com espera ocupada Propostas para obtenção de exclusão mútua: ● Quando um processo estiver executando sua seção crítica, nenhum outro processo poderá entrar na sua seção crítica correspondente. ● Ex: Inibição das Interrupções: Exclusão Mútua Soluções de hardware ● Desabilitação de interrupções BEGIN . Desabilita_Interrupcoes; Regiao_Critica; Habilita_Interrupcoes; . END. 3 Inibição das Interrupções Def.: Cada processo pode inibir as interrupções logo após seu ingresso em uma região crítica, habilitando- as novamente logo antes de deixá-la. Inibição das Interrupções Características: ● Solução mais simples. ● Implementada por hardware. ● O processo não poderá ser interrompido por exceder o tempo de processamento concedido a ele. ● Com as interrupções inibidas , o processo não poderá ser interrompido por exceder o tempo de processamento concedido a ele; ● Como o processador só poderá ser chaveado entre processos através de interrupções de tempo, com as interrupções inibidas não haverá chaveamento; ● Então uma vez inibidas as interrupções, o processo pode examinar e atualiza a memória compartilhada, sem se preocupar com a eventual intervenção de outro processo em seu processamento; Inibição das Interrupções VANTAGEM / USO: É conveniente que o Kernel possa emitir interrupções do sistema quando algumas operações estiverem realizando tarefas críticas (Se uma interrupção ocorrer quando o Kernel estiver atualizando a fila de processos prontos, esta poderá ficar inconsistente pode gerar condições de corrida). DESVANTAGENS: Não é boa prática dar a processos de usuários o poder de desabilitar interrupções (O que aconteceria se algum usuário desabilitar e não habilitar novamente?). Em sistemas com mais de um processador, a inibição afeta somente o processador que executou a instrução. (os outros processadores vão continuar executando normalmente, com seus processos podendo acessar a memória compartilhada); Inibição das Interrupções CONCLUSÃO: Esta técnica não é apropriada para implementação de exclusão mútua entre processos de usuários, só para processos de kernel. Exclusão Mútua Exemplos de Soluções de software: ● Variáveis de Travamento ● Primeiro algoritmo ● Segundo algoritmo ● Terceiro algoritmo ● Quarto algoritmo ● Algoritmo de Dekker ● Algoritmo de Peterson ● Algoritmo para exclusão mútua entre N processos Variáveis de Travamento Solução implementada por software. Uso de variável de travamento (V.T.) ● variável compartilhada: 0 - não há processo executando sua região crítica; 1 - há processo executando sua região crítica. 4 Variáveis de Travamento Algoritmo Variáveis de Travamento Observações: ● Suponha que um processo leia a variável de travamento e verifique que seu valor é 0; ● Antes que ele possa ser atualizado para 1 e entrar em sua região crítica, ocorre uma interrupção; ● Outro processo começa a executar; ● Tal processo encontra a variável de travamento com valor 0, atualiza para 1 e entra em sua Região crítica; ● Ocorre que o processo anterior que foi interrompido guardou o seu valor 0, e quando ele for ativado irá atualizar seu valor para 1 e também entrará em sua região crítica; ● Dois processos poderão está executando sua região crítica ao mesmo tempo. Variáveis de Travamento DESVANTAGEM: ● Mesma falha do spool; ● Imagine se depois que lê a V.T. (entre o teste e a atribuição de 1 a V.T) ocorrer uma interrupção? ● Dois processos podem estar executando suas regiões críticas ao mesmo tempo ! Conclusão: ● Não funciona bem! 5
Compartilhar