310 likes | 910 Views
Sincronismo e Comunicação entre Processos. Conteúdo. Introdução; Aplicações Concorrentes; Problemas no Compartilhamento de Recursos; Exclusão Mútua; Soluções de Exclusão Mútua; Sincronização Condicional; Semáforos; Monitores; Troca de Mensagens; Deadlock; Prevenção de Deadlocks;
E N D
Sincronismo e Comunicação entre Processos Sistemas Operacionais
Conteúdo • Introdução; • Aplicações Concorrentes; • Problemas no Compartilhamento de Recursos; • Exclusão Mútua; • Soluções de Exclusão Mútua; • Sincronização Condicional; • Semáforos; • Monitores; • Troca de Mensagens; • Deadlock; • Prevenção de Deadlocks; • Detecção e Recuperação; • Gerenciamento Manual de Deadlocks; • Exercícios. Sistemas Operacionais
Introdução • Com os sistemas multiprogramáveis, é possível que partes diferentes do código do programa possam ser executadas concorrentemente. É denominada de Aplicação Concorrente e baseia-se na execução cooperativa de múltiplos processos, que trabalham em uma mesma tarefa na busca de um resultado comum. • Estes processos compartilham recursos e isso pode ocasionar situações indesejáveis, podendo comprometer a execução das aplicações. • Para evitar isso, os Processos Concorrentes possuem suas execuções sincronizadas, com o objetivo de garantir o processamento correto dos programas. Sistemas Operacionais
Aplicações Concorrentes • Em uma aplicação concorrente é necessário que processos comuniquem-se entre si através de variáveis compartilhadas na Memória Principal outroca de mensagens. • Nessa situação os processos devem ter sua execução sincronizadas pelo SO. • São os Mecanismos de Sincronização que garantem a comunicação entre processos concorrentese o acesso aos recursos. Sistemas Operacionais
Problemas no Compartilhamento de Recursos • Problemas podem ocorrer devido a falha de Sincronização entre processos concorrentes. • Exemplo: Situação onde dois processos (A e B) executam um comando de atribuição. O processo A soma 1 na variável X e o processo B diminui 1 da mesma variável que está compartilhada. Inicialmente X=2. • Seria razoável que o resultado de X continuasse 2, porém isso nem sempre será verdade. • Qualquer situação onde dois ou mais processos compartilham um mesmo recurso, deve existir um mecanismo de controle para evitar problema similar ao exemplo acima e esse controle é conhecido como RACE CONDITIONS, ou Condições de Corrida. Sistemas Operacionais
Exclusão Mútua • Impede que dois ou mais processos acessem um mesmo recurso simultaneamente. Exclusividade de acesso. • Enquanto um processo estiver acessando um recurso, os demais que queiram acessá-lo deverão esperar pelo término de sua utilização. • A parte do código do programa onde é feito o recurso de compartilhamento é a REGIÃO CRÍTICA. Se for possível evitar que dois processos entrem em Região Crítica ao mesmo tempo, os problemas de compartilhamento estarão evitados. • Tanto para executar uma instruções na Região Crítica quanto para sair dela, executa-seum protocolo que garante a Exclusão Mútua da Região Crítica do programa. Sistemas Operacionais
Exclusão Mútua O acesso sincronizado, além da Exclusão Mútua evitaduas situações indesejáveis: • STARVATION ou Espera Indefinida: É a situação em que um processo nunca consegue executar sua Região Crítica, acessando o recurso compartilhado. Quando o processo é liberado, é o SO que seleciona qual processo fará parte do recurso. O critério de Escolha é baseado pela prioridade do processo. A solução é a implementação de uma fila FIFO. • Um processo fora de sua Região Crítica impeça que outros processos entrem em suas próprias Regiões Críticas. Isto ocorre ao recurso estar livre, não está sendo utilizado, mas ainda alocado a um processo, impedindo que os demais o utilizem. Sistemas Operacionais
Soluções para a Exclusão Mútua Desabilitação de Interrupções: Faz com que o processo desabilite todas as interrupções antesde entrar na Região Crítica e as reabilite apósdeixar a Região Crítica. Instruções de Test – and – Set: Permite ler uma variável, armazenar seu conteúdo em outra área e atribuir um novo valor a mesma variável, através de uma única instrução de máquina. Com isso torna-se impossível que dois processos manipulem uma variável compartilhada ao mesmo tempo. Sistemas Operacionais
Sincronização Condicional Situação onde o acesso ao recurso compartilhado exige a Sincronização de processos vinculada a uma condição de acesso. Ex.: Comunicação entre dois processos através de operações de leitura e gravação em buffer, onde os processos que geram informações (processos produtores) são utilizados por outros processos (consumidores). Enquanto um processo grava os dados em um buffer, o outro lê os dados concorrentemente. Esse problema de sincronização é conhecido como Produtor / Consumidor ou Buffer Limitado Sistemas Operacionais
Sincronização Condicional Sincronização e comunicação entre processos Sistemas Operacionais
Semáforo É uma variável inteira, não negativa, que só pode ser manipulada por duas instruções DOWN E UP, chamadas também de P (Proberen, teste em holandês) e V (Verhogen, incremento em holandês). São instruções que não podem ser interrompidas e são classificadas em: Binários: Chamados de Mutexes (Mutual Exclusion Semaphores), só podem assumir valores de O e 1. Semáforos Contadores: Podem assumir qualquer valor inteiro positivo além do O. Sistemas Operacionais
Semáforo Semáforo binário na exclusão mútua Sistemas Operacionais
Monitores • São implementados pelo compilador, possibilitando o desenvolvimento de programas concorrentes com chances de menos erros. • É formado por procedimentos e variáveis encapsulados dentro de um módulo, implementando de forma automática a Exclusão Mútua entre os procedimentos declarados. • Toda vez que algum processo faz uma chamada a um procedimento, o Monitor verifica se já existe outro processo executando algum procedimento no monitor. Caso exista, o processo fica aguardando a sua vez em uma fila de entrada. • Encarrega-se de garantir a Exclusão Mútua entre os procedimentos definidos. Sistemas Operacionais
Monitores Estrutura do monitor Sistemas Operacionais
Troca de Mensagens • Esse tipo de mecanismo de comunicação e sincronização de processos, o SO possui um subsistema de mensagens onde não há necessidade do uso de variáveis compartilhadas. É necessário que exista um buffer ou um link de uma rede de computadores como canal de comunicação. • Os processos cooperativos que podem utilizar o buffer através de duas rotinas: SEND e RECEIVE. • A rotina SEND envia uma mensagem para o processo receptor, enquanto a RECEIVE recebea mensagem enviada por um processo transmissor. • Com isso exige que os processos envolvidos na comunicação tenham suas execuções sincronizadas. Sistemas Operacionais
Troca de Mensagens Transmissão de mensagem Sistemas Operacionais
Troca de Mensagens A Troca de Mensagens pode ser implementada de duas maneiras: COMUNICAÇÃO DIRETA:Exige que tanto ao enviar ou receber uma mensagem, enderece o nome do processo Receptor ou Transmissor. Só permite a troca de mensagens entre dois processos. Sistemas Operacionais
Troca de Mensagens COMUNICAÇÃO INDIRETA: • Utiliza uma área compartilhada onde as mensagens podem ser colocadas pelo processo transmissor e retiradas pelo receptor. Esse buffer é conhecido como MAILBOX e suas características, como identificação e capacidade de armazenamento de mensagens, são definidas no momento de criação. • Vários processos podem estar associados a MAILBOX. • Também possuem suas execuções sincronizadas em função do fluxo de mensagens. Sistemas Operacionais
Deadlock É a situação onde o processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá. É conseqüência do compartilhamento de recursos entre processos onde a Exclusão Mútua é exigida. Para que ocorra a situação de Deadlock, quatro condições são necessárias simultaneamente: 1- Exclusão Mútua: Cada recurso só pode estar alocado a um único processo em um determinado instante; 2- Espera por Recursos: Um processo, além dos recursos já alocados, ainda aguarda por outros recursos; 3- Não-Preempção: Um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo recurso; 4- Espera Circular: Um processo pode ter que esperar por um recurso alocado a outro processo e vice-versa. Sistemas Operacionais
Deadlock Espera circular Sistemas Operacionais
Prevenção de Deadlocks Para que um Deadlock ocorra, todas as quatro condições devem ocorrer simultaneamente. Se garantirmos que uma delas não ocorra, prevenirmos a ocorrência de Deadlocks em um determinado sistema. Examinaremos as quatro condições separadamente: 1- Negando a condição “Exclusão Mútua”: • Essa condição não deve ser negada, pois dois processos acessando um recurso simultaneamente poderia causar caos no sistema. Ex.: Dois processos acessando uma impressora ao mesmo tempo. Utilizando o sistema de spool é solucionado esse problema pois um único processo de spool acessa a impressora diretamente e não acessa outro recurso, com isso deadlocks não podem ocorrer, porém nem todos os recursos utilizam o spool. Sistemas Operacionais
Prevenção de Deadlocks 2- Negando a condição “Esperar por Recurso”: • Requer que todos os recursos que um processo precise devem ser requisitados de uma só vez. • O sistema deve liberar os recursos segundo uma política de tudo ou nada. • Se todos os recursos que o processo solicitou estão disponíveis, então o sistema pode alocá-los todos ao mesmo processo de uma vez. • Caso contrário, ele deverá esperar até que todos estejam disponíveis, porém nessa espera, não deve deter nenhum recurso. Assim a condição é negada e Deadlocks não podem ocorrer. Desvantagens: • Desperdício de Recursos: O recurso que será executado por último fica alocado ao processo antes de ser efetivamente utilizado. • Possibilidade de um processo ficar indefinidamente esperando, se outros processos estiverem usando os recursos que ele deseja com freqüência. Sistemas Operacionais
Prevenção de Deadlocks 3- Negando a condição “Não Preempção”: Negar a condição de “não-preempção” é uma estratégia ainda pior do que a anterior. Para vários recursos, não é interessante que um processo perca seus dados, porque foi interrompido durante seu uso. 4- Negando a condição “Espera Circular”: 1ª Maneira: Estabelecer regra que um processo só pode alocar um único recurso em um dado momento. Se ele precisa de um 2º recurso, deve liberar o primeiro; 2ª Maneira: Todos os recursos devem ser numerados em ordem crescente, assim processos podem requisitar recursos sempre. Sistemas Operacionais
Detecção e Recuperação • Alguns sistemas verificam se existe a possibilidade de surgir um Deadlock. (periodicamente ou certos eventos) • Caso esse algoritmo de detecção for executado muitas vezes, tornará o sistema lento, mas se não for executado vezes suficientes, os processos em Deadlock e os recursos do sistema ficam entrelaçados até que o sistema seja recuperado. • Problema acima surge devido a um Deadlock que impede de executar algum evento que dispare o algoritmo de execução. • Na estratégia do algoritmo de detecção, ele primeiramente detecta se ocorre a situação de Deadlock e depois recupera, desbloqueiando os recursos. Essa é a estratégia mais utilizada para tratamento de Deadlock. Sistemas Operacionais
Exercícios • Defina o que é uma aplicação concorrente e dê um exemplo de sua utilização? 2) O que é Exclusão Mútua e como é implementada? 3) Explique o que é sincronização condicional e dê um exemplo de sua utilização. 4) Diferencie Semáforos e Monitores. 5) Quais são os tipos possíveis de Semáforos? 6) O que é Deadlock, qual a condição para obtê-lo e quais as soluções possíveis? 7) O que é mecanismo de troca de mensagens e como pode ser implementado? 8) O que é Região Crítica em um programa? 9) Liste uma solução para a Exclusão Mútua explicando-a. 10) " Independente do mecanismo de comunicação adotado, processos que estão trocando mensagens devem ter suas execuções sincronizadas".Esta afirmação está correta? Justifique Sistemas Operacionais