Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Arquitetura de Sistemas Operacionais Capítulo 7 Sincronização e Comunicação entre Processos Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Sumário Introdução Aplicações concorrentes Especificação de concorrência em programas Problemas de compartilhamento de recursos Exclusão mútua Sincronização condicional Semáforos Monitores Troca de mensagens Deadlock Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Aplicações Concorrentes Muitas vezes é necessário que processos comuniquem-se entre si É possivel atraves de mecanismos (variaveis compartilhadas em MP ou trocas de mensagens) Sincronização é necessária Mecanismos de sincronização garantem o acesso a recursos compartilhados e comunicação entre processos concorrentes a sincronização é necessária para processos, subprocessos e threads Sem mecanismos de sincronização o travamento do sistema pode ser inevitável. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Aplicações Concorrentes Sincronização e comunicação entre processos Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Especificação de Concorrência em Programas Existem várias notaçõs para especificar concorrência em programas Uma forma é usando FORK e JOIN O comando FORK cria um novo processo O comando JOIN sincroniza o processo atual com o referenciado Outra forma é usando PARABEGIN e PARAEND ou COBEGIN e COEND Indicam que uma sequencia de passos serão executados e num ponto final serão sincronizados Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Especificação de Concorrência em Programas Concorrência em programas Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Especificação de Concorrência em Programas X := SQRT (1024) + (35.4 * 0.23) - (302 / 7) PROGRAM Expressao; VAR X, Temp1, Temp2, Temp3 : REAL; BEGIN PARBEGIN Temp1 := SQRT (1024); Temp2 := 35.4 * 0.23; Temp3 := 302 / 7; PAREND; X := Temp1 + Temp2 - Temp3; WRITELN ('x = ', X); END. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Prob. de Compartilhamento de Recursos Sincronização de processos concorrentes é fundamental para confiabilidade dos sistemas A seguir veremos dois problemas Compartilhamento de um arquivo em disco Uma variavel na memória principal sendo compartilhada por dois processo Após ver os dois exemplos pode-se concluir que para evitar problemas como “race conditions” (condições de corrida) tem que existir algum mecanismo de controle entre recursos compartilhados Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Prob. de Compartilhamento de Recursos PROGRAM Conta_Corrente; . . READ (Arq_Contas, Reg_Cliente); READLN (Valor_Dep_Ret); Reg_Cliente.Saldo := Reg_Cliente.Saldo+Valor_Dep_Ret; WRITE (Arq_Contas, Reg_Cliente); . . END. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Prob. de Compartilhamento de Recursos Processo A Processo B X := X + 1; X := X - 1; Processo A Processo B LOAD x,Ra LOAD x,Rb ADD 1,Ra SUB 1,Rb STORE Ra,x STORE Rb,x Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Solução mais simples: impedir que dois ou mais processos acessem simultaneamente um recurso Enquanto um estiver acessando os outros processos aguardam Deve ocorrer apenas para acessos a recursos compartilhados A parte do código onde o acesso é feito é denominada região crítica Evitar que dois processos entrem em suas regiões críticas ao mesmo tempo é garantida a execução mutuamente exclusiva Os mecanismos de exclusão mútua utilizam protocolos de acesso à região crítica Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Região crítica Protocolos de acesso BEGIN . . Entra_Regiao_Critica; Regiao_Critica; Sai_Regiao_Critica; . . END. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Os processos devem fazer acesso de forma sincronizada (para garantir a exclusão mútua) Dentro das soluções duas situações devem ser evitadas: Starvation ou espera indefinida (um processo nunca consegue executar sua região critica – acessando o recurso compartilhado) uma solução simples é adoção de uma fila FIFO Um processo fora de sua região crítica impede que outros entrem nas suas próprias regiões críticas (recurso livre, porém, alocado a um processo) Propostas para garantir a exclusão mútua de processos concorrentes: Soluçoes de HW Soluções de SW Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Soluções de hardware: Desabilitação (e reabilitação) de interrupções: para região crítica O processo tem acesso exclusivo garantido Mudanças de contexto é só através de interrupções Compromete a concorrencia e o funcionamento (inibe a interrupção) Em sistemas multiprocessados é ineficiente O mecanismo de clock é uma interrupção É simples, útil, mas exige muito cuidado Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Soluções de hardware Desabilitação de interrupções BEGIN . Desabilita_Interrupcoes; Regiao_Critica; Habilita_Interrupcoes; . END. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Soluções de hardware Instrução Test-and-Set Vários processadores possuem uma instrução de máquina especial que lê uma variável, armazena em outra área e atribui um novo valor É executada sem interrupção (indivisível) É manipulada ao mesmo tempo apenas por um processo Utiliza uma variável lógica global chamada “bloqueio” Valor falso libera o recurso, verdadeiro acessa o recurso de forma exclusiva Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Soluções de hardware Instrução Test-and-Set Test-and-Set (X,Y); Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Exclusão Mútua Soluções de software Primeiro algoritmo Segundo algoritmo Terceiro algoritmo Quarto algoritmo Algoritmo de Dekker Algoritmo de Peterson Algoritmo para exclusão mútua entre N processos Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Sincronização Condicional PROGRAM Produtor_Consumidor_1; CONST TamBuf = (* Tamanho qualquer *); TYPE Tipo_Dado = (* Tipo qualquer *); VAR Buffer : ARRAY [1..TamBuf] OF Tipo_Dado; Dado : Tipo_Dado; Cont : 0..TamBuf; BEGIN Cont := 0; PARBEGIN Produtor; Consumidor; PAREND; END. Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Sincronização Condicional PROCEDURE Produtor; BEGIN REPEAT Produz_Dado (Dado); WHILE (Cont = TamBuf) DO (* Nao faz nada *); Grava_Buffer (Dado, Cont); UNTIL False; END; PROCEDURE Consumidor; BEGIN REPEAT WHILE (Cont = 0) DO (* Nao faz nada *); Le_Buffer (Dado); Consome_Dado (Dado, Cont); UNTIL False; END; Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Semáforos Exclusão mútua utilizando semáforos Sincronização condicional utilizando semáforos Problema dos Filósofos Problema do Barbeiro Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Semáforos Semáforo binário na exclusão mútua Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Monitores Estrutura do monitor Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Monitores Estrutura do monitor com varáveis de condição Sistemas Operacionais- I Cap. 7 – Sincronização e Comunicação * Troca de Mensagens Transmissão de mensagem Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Troca de Mensagens Comunicação direta Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Troca de Mensagens Comunicação indireta Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Deadlock Espera circular Sistemas Operacionais - I Cap. 7 – Sincronização e Comunicação * Deadlock Condições necessárias Exclusão mútua Espera por recurso Não-preempção Espera circular Mecanismos Prevenção Detecção Correção
Compartilhar