Sistemas Operacionais Sincronismo e Comunicação entre processos

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Operacionais Aula II
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sincronização de Processos (1)
Sistemas Operacionais Gerência de Processador
WebDesign Redes de Computadores Aula 07
Sistema Operacional Sincronização e Comunicação entre Processos
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS VIVIANE LUCY Sistemas Operacionais Gerência de Processador WebDesign Redes de Computadores.
Sincronismo e Comunicação entre Processos
Sincronismo e Comunicação entre Processos
Deadlocks - Impasses 3.1. Recurso 3.2. Introdução aos deadlocks
Escalonamento Linux.
Arquitetura de Sistemas Operacionais
Conceitos de Programação Paralela - 2
Capítulo 7: Deadlocks.
Sistemas Operacionais II
Sistemas Operacionais
Deadlock Marcos José Santana Regina Helena Carlucci Santana
Capítulo 3 Deadlocks - Impasses 3.1. Recurso
Sincronização e Comunicação entre Processos
Claudio de Oliveira – Thread 09/03/10 20:13 Claudio de Oliveira –
Threads.
Sistemas Operacionais Adriana Vettorazzo
Sistemas Operacionais
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Threads sem Sincronização
Sistemas Operacionais I
Monitores.
Unidade 3 Controle de Concorrência
Sistemas Operacionais
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistema Operacional Processos
Processo Entidade dinâmica e efêmera
Prof. Alexandre Monteiro Recife
Controle de concorrência
Sistemas Operacionais Prof. Galvez. PROBLEMA DE SEÇÃO CRITICA.
Capítulo 7: Deadlocks.
Processos.
SISTEMAS OPERACIONAIS I
SISTEMAS OPERACIONAIS I
SISTEMAS OPERACIONAIS I
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Bruna Rafaella da Costa Moura Silvana dos Santos Lima
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Sistemas Operacionais
Faculdade Pernambucana - FAPE
©André Santos, Concorrência: Sincronização de fina granularidade André Santos CIn-UFPE.
Gerenciamento de Processos
Processos Concorrentes
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Deadlocks Impasses Vinícius Pádua.
Sistemas Operacionais IV – Gerenciamento de E/S
Deadlocks.
Programação Concorrente
Sistemas Operacionais
Comunicação Interprocesso Condições de Disputa (corrida)
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Sistemas Operacionais Sincronização e Comunicação Introdução Aplicações concorrentes (mecanismos de sincronização: variáveis compartilhadas e troca de.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
ProgramaçãoConcorrente Glêdson Elias
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROF. HORACIO RIBEIRO Sistemas operacionais.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Sistemas Operacionais Sincronismo e Comunicação entre processos WebDesign Redes de Computadores Aula 12

Semáforos Apesar dos algoritmos apresentados até então resolverem as questões de sincronização condicional e exclusão mútua, o problema da espera ocupada se faz presente. Espera Ocupada ocorre quando os processos que estão esperando a liberação de uma região crítica continuam ocupando o processador, mesmo estando num while que não faz nada.

Semáforos O semáforo é um mecanismo de sincronização que permite implementar, de forma simples, a exclusão mútua e a sincronização condicional entre processos. Um semáforo é uma variável inteira, não negativa, que só pode ser manipulada por duas instruções: UP e DOWN

Semáforos A instrução UP incrementa uma unidade ao valor do semáforo. A instrução DOWN decrementa uma unidade ao valor do semáforo. Se um semáforo tiver valor 0 e uma instrução DOWN for executada no mesmo, o processo entra em estado de espera.

Semáforos Os semáforos podem ser classificados como: Binários (também chamados de mutex) – podem receber valores 0 ou 1. Contadores – Podem assumir qualquer valor inteiro positivo, além do 0.

Exclusão mútua com semáforos A exclusão mútua pode ser implementada através de um semáforo binário associado a um recurso compartilhado. As instruções UP e DOWN funcionam como protocolos de entrada e saída. Sempre que um processo deseja entrar na região crítica, um processo executa uma instrução DOWN.

Exclusão mútua com semáforos Se o semáforo for igual a 1, esse valor é decrementado e o processo que solicitou a operação pode executar as instruções da região crítica. Se o semáforo for igual a 0, o processo fica impedido do acesso permanecendo em estado de espera. E consequentemente, não ocupando o processador.

Exclusão mútua com semáforos O processo que está acessando o recurso, ao sair da região crítica, executa uma instrução UP, incrementando o valor do semáforo e liberando o acesso ao recurso. Se um ou mais processos estiverem esperando pela liberação do recurso, o sistema selecionará um processo na fila de espera, associada ao recurso e alterará o seu estado para pronto.

Exclusão mútua com semáforos Processo deseja entrar na região crítica DOWN (S = 1) DOWN (S = 0) UP (S) – processo sai da região crítica Libera processo da fila de espera Processo acessa a região crítica Fila de espera de processos

void process_A(void){ while(1){ DOWN(s); Regiao_Critica_A; UP(s); } void process_B(void){ Regiao_Critica_B; void main(void){ semaforo s = 1; process_A(); process_B(); Processo Instrução S Espera A While 1 * B DOWN(S) Regiao_Critica Processo_B UP(S) Regiao_Critica_B

Sincronização Windows XP Em um sistema monoprocessado quando o kernel do Windows XP acessa um recurso global, ele mascara as interrupções para todos os tratadores de interruções que podem acessar o recurso. Em um sistema multiprocessado o Windows XP protege o acesso aos recursos globais usando semáforos.

Sincronização Linux No modo kernel, para regiões críticas consistindo em seções curtas de código, o Linux desativa interrupções. Para regiões críticas mais longas o Linux utiliza semáforos para bloquear dados do kernel. Em sistemas multiprocessados o Linux também utiliza semáforos como mecanismo de proteção.

Troca de mensagens Troca de mensagens é um mecanismo de comunicação e sincronização entre processos. O sistema operacional possui um subsistema de mensagem que suporta esse mecanismo sem que haja necessidade do uso de variáveis compartilhadas.

Troca de mensagens Os processos cooperativos podem fazer uso de um buffer para trocar mensagens através de duas rotinas: SEND ( receptor, mensagem) Permite o envio de uma mensagem para o processo receptor. RECEIVE ( transmissor, mensagem) Possibilita o recebimento de uma mensagem enviada por um transmissor.

Troca de mensagens A troca de mensagens pode ser implementada de duas maneiras distintas: Comunicação Direta – ao enviar ou receber uma mensagem, o processo especifica explicitamente o nome do processo receptor ou transmissor. Comunicação Indireta – Utiliza uma área compartilhada onde as mensagens podem ser colocadas pelo processo transmissor e retiradas pelo processo receptor.

Troca de mensagens Na comunicação indireta, o buffer de comunicação é conhecido como mailbox ou port. As características do buffer (mailbox ou port), como identificação e capacidade de armazenamento, são definidos no momento de sua criação. Podemos ter vários processos associados ao mailbox, os parâmetros dos procedimentos SEND e RECEIVE passam a ser os nomes de mailbox, e não nome de processos.

Troca de mensagens Processos que trocam mensagens devem ter suas execuções sincronizadas em função do fluxo de mensagem. O primeiro esquema de sincronização é garantir: que um processo, ao enviar uma mensagem, permaneça esperando até que o processo receptor a leia. Um processo ao tentar receber uma mensagem ainda não enviada, deve permanecer aguardando até que o processo transmissor faça o envio.

Troca de mensagens O problema desta implementação é que a execução dos processos fica limitada ao tempo de processamento no tratamento das mensagens. Um variação desse esquema é permitir que o processo transmissor não fique bloqueado aguardando a leitura da mensagem pelo receptor. Um terceiro esquema implementa uma forma assíncrona de comunicação, onde nem o transmissor nem o receptor permaneçam aguardando o envio e o recebimento de mensagens.

Troca de mensagens No terceiro esquema de comunicação, deve haver outros mecanismos de sincronização que permitam que o processo identifique se uma mensagem já foi enviada ou recebida. Esse mecanismo aumenta a eficiência das aplicações concorrentes.

Deadlock Deadlock é uma situação em que o processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá. Essa situação é conseqüência do compartilhamento de recursos (arquivos, registros, dispositivos) entre processos concorrentes em que a exclusão mútua é exigida.

Deadlock Recurso 2 Recurso 1 Processo A Processo A Recurso 1 solicita o Recurso 2 Recurso 1 alocado ao Processo A Recurso 2 Recurso 1 Processo B solicita o Recurso 1 Recurso 2 alocado ao Processo B Processo B

Deadlock A figura anterior ilustra o problema do deadlock entre os processos A e B, quando utilizam os recursos 1 e 2. Inicialmente o processo A tem acesso exclusivo ao recurso 1. E o processo B tem acesso ao recurso 2. Durante o processamento, o processo A necessita do recurso 2 para prosseguir. Como o recurso 2 está alocado ao processo B, o processo A ficará aguardando o recurso ser liberado.

Deadlock Em seguida, o processo B necessita utilizar R1, e ficará aguardando até que o processo A libere o recurso. Como cada processo está esperando que o outro libere o recurso alocado, é estabelecida uma condição conhecida como espera circular.

Deadlock 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 determinado instante. 2. Espera por recurso – um processo, além dos recursos alocados, pode estar esperando por outros recursos.

Deadlock 3. Não-preempção – um recurso não deve ser liberado por um processo, só porque outros processos desejam o mesmo recurso. 4. Espera circular – um processo pode ter de esperar por um recurso alocado a outro processo, e vice-versa.

Métodos para tratamento de deadlock Podemos lidar com o problema do deadlock de três maneiras: Podemos usar um protocolo para prevenir ou evitar deadlocks, garantindo que o sistema nunca entrará em deadlock. Podemos permitir que o sistema entre em deadlock, detectá-lo e recuperá-lo. Podemos ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema.

Prevenção do Deadlock Para prevenir a ocorrência de deadlocks, devemos garantir que uma das quatro condições apresentadas nunca se satisfaça. A ausência da primeira condição (exclusão mútua) acaba com o problema do deadlock, pois nenhum processo precisará esperar para ter acesso a um recurso Para evitar a segunda condição (espera por recurso) – processos que já possuem recursos garantidos não devem requisitar outros recursos.

Prevenção do Deadlock Uma maneira de implementar esse mecanismo de prevenção é que, antes do início da execução um processo deve pré-alocar todos os recursos necessários. Todos os recursos necessários à execução do processo devem estar disponíveis para o início da execução, caso contrário nenhum recurso será alocado e o processo permanecerá aguardando.

Prevenção do Deadlock Esse mecanismo produz desperdício de recursos, pois um recurso pode estar alocado por um grande período de tempo, sendo utilizado apenas por um breve momento. A terceira condição (não–preempção) – pode ser evitada quando é permitido que o recurso seja retirado de um processo no caso de outro processo necessitar do mesmo recurso.

Prevenção do Deadlock A liberação de recursos já disponíveis a um processo pode causar sérios problemas, podendo impedir a continuidade da execução do processo. A última maneira de evitar o deadlock é exluir a possibilidade da quarta condição (espera - circular) – uma forma de implementar esse mecanismo é forçar o processo a ter apenas um recurso por vez. Caso o processo necessite de outro recurso, o recurso já alocado deve ser liberado. Esta condição restringiria muito o grau de compartilhamento e o processamento do programa.

Detecção correção de Deadlock A detecção do deadlock é o mecanismo que determina a existência da situação de deadlock, permitindo identificar os recursos e processos envolvidos no problema. Para detectar deadlocks, os sistemas operacionais devem manter estruturas de dados capazes de identificar cada recurso do sistema, o processo que o está alocando e os processo que estão à espera da liberação do recurso.

Detecção e correção de Deadlock Toda vez que o recurso é alocado ou liberado, a estrutura de dados é atualizada. Os algoritmos que implementam esses mecanismos de detecção de deadlock verificam a existência de espera circular, percorrendo toda a estrutura sempre que um processo solicita o recurso e ele não pode ser imediatamente garantido.

Detecção e correção de Deadlock Após identificar o deadlock o sistema operacional deverá de alguma forma corrigir o problema. O S.O. pode eliminar um ou mais processos envolvidos no deadlock. O S.O. pode também suspender um processo, liberar o recurso e, após a resolver o problema retornar a execução do processo.