Sincronização e Comunicação entre Processos

Documentos relacionados
Sincronização e Comunicação entre Processos. Adão de Melo Neto

Sincronização e comunicação entre processos

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

SISTEMAS OPERACIONAIS. Sincronização e Comunicação entre Processos UNIBAN

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica

Sistemas Distribuídos

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto

Comunicação entre Processos

Sistemas de Informação. Sistemas Operacionais

Programação Orientada a Objetos. Concorrência

Sistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos

ALGORITMOS DISTRIBUÍDOS Deadlock

Programação concorrente (processos e threads)

SSC0640 Sistemas Operacionais I

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5)

Sistemas Operacionais: Deadlocks

Capítulo 7: Impasse (Deadlocks( Deadlocks)

Programação Concorrente. 2º Semestre 2010

Algoritmos Distribuídos (deadlock) ALGORITMOS DISTRIBUÍDOS Deadlock. Algoritmos Distribuídos (deadlock) Algoritmos Distribuídos (deadlock)

Resumo: Sistemas Operacionais Abertos

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

Sincronização em Sistemas Distribuídos

Capítulo 3 Deadlocks - Impasses

Capítulo 3. Deadlocks. Recursos

Comunicação entre processos

Sistemas Distribuídos Aula 7

Problema do Produtor -Consumidor. Solução por semáforos

Sistemas Operacionais: Sincronização entre processos

Gerência de Recursos. Gerência do Processador

Fundamentos de Sistemas Operacionais

Sistemas de Troca de Mensagens

1B Conceitos Básicos: Indique Verdade/Falso

Questões de Múltipla escolha

DEADLOCKS IMPASSES. Vinícius Pádua

Capítulo 7: Deadlocks. Operating System Concepts 8th Edition

Sistemas de Informação. Sistemas Operacionais

Semáforos. Gerenciamento de Recursos I

ENADE 2011 SISTEMAS OPERACIONAIS

Semáforos. Gerenciamento de Recursos I

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Capítulo 3 Deadlocks - Impasses

Problema dos Leitores/Escritores

Sistemas Operacionais II

Sistemas Operacionais. Gerência de Processador

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

Aula 9. Deadlocks. Caracterização Grafo de dependência Métodos de tratamento Detecção Recuperação. Universidade Federal de Minas Gerais

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Comunicação entre processos (2)

Sincronização de Processos (2)

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Sistemas Operacionais

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Exclusão Mútua (mutex)

Fundamentos de Sistemas Operacionais

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização

Transcrição:

Sincronização e Comunicação entre Processos

Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas. Monitores Mecanismos de sincronização estruturados; Formado por procedimentos e variáveis encapsuladas dentro de um módulo; Implementação automática da exclusão mútua.

Exclusão Mútua Utilizando Monitores A implementação da exclusão mútua utilizando monitores não é realizada diretamente pelo programador, como no caso do uso de semáforos. As regiões críticas devem ser definidas como procedimentos no monitor, e o compilador se encarregará de garantir a exclusão mútua entre esses procedimentos.

Exclusão Mútua Utilizando Monitores A comunicação do processo com o monitor é feita unicamente através de chamadas a seus procedimentos e dos parâmetros passados. O programa a seguir apresenta uma solução para o problema anterior, onde dois processos somam e diminuem, concorrentemente, o valor 1 da variável compartilhada X.

Exclusão Mútua Utilizando Monitores PROGRAM Monitor_1; MONITOR Regiao_Critica; VAR X : INTEGER; PROCEDURE Soma; BEGIN X := X + 1; END; PROCEDURE Diminui; BEGIN X := X 1; END; BEGIN X := 0; END; BEGIN END; PARBEGIN PAREND; Regiao_Critica.Soma; Regiao_Critica.Diminui; Assim podemos garantir que o valor de X ao final da execução concorrente de Soma e Diminui será igual a Zero, porque, como os procedimentos estão definidos dentro do monitor, estará garantida a execução mutuamente exclusiva Valor 0 inicializado apenas uma vez, no momento da inicialização do Monitor Regiao_Critica.

Sincronização Condicional Utilizando Monitores Monitores também podem ser utilizados na implementação da sincronização condicional. Através de variáveis especiais de condição, é possível associar a execução de um procedimento que faz parte do monitor a uma determinada condição, garantindo a sincronização condicional.

Sincronização Condicional Utilizando Monitores As variáveis especiais de condição são manipuladas por intermédio de duas instruções, conhecidas como WAIT e SIGNAL. WAIT - faz com que o processo seja colocado no estado de espera, até que algum outro processo sinalize. SIGNAL - condição de espera satisfeita. Caso seja executada e não haja processo aguardando a condição, nenhum efeito surtirá.

Sincronização Condicional Utilizando Monitores A execução da instrução SIGNAL libera apenas um único processo da fila de espera da condição associada. Declaração de variáveis globais Fila de entrada Monitor Procedimentos Pr oc. 1 Pr oc. 2 Pr oc. n Condição C1 Condição C2 Condição Cn Inicialização de variáveis Filas de espera

Sincronização Condicional Utilizando Monitores MONITOR Condicional; VAR Cheio, Vazio : (* Variaveis especiais de condição *); BEGIN END; PROCEDURE Produz; BEGIN IF (Cont = TamBuf) THEN WAIT (Cheio);.. IF (Cont = 1) THEN SIGNAL (Vazio); END; PROCEDURE Consome; BEGIN IF (Cont = 0) THEN WAIT (Vazio);.. IF (Cont = TamBuf -1) THEN SIGNAL (Cheio); END;

Troca de Mensagens É um mecanismo de comunicação e sincronização entre processos. O SO possui um subsistema de mensagens que suporta esse mecanismo sem que haja necessidade do uso de varáveis compartilhadas. Os processos podem fazer uso de um buffer para trocar mensagens através de duas rotinas SEND(receptor, mensagem) e RECEIVE(transmissor, mensagem).

Troca de Mensagens A rotina SEND permite o envio de uma mensagem para um processo receptor, enquanto a rotina RECEIVE possibilita o recebimento de mensagens enviada por um processo transmissor. Pr ocesso transmissor Pr ocesso receptor Canal de comunicação SEND RECEIVE

Troca de Mensagens Exige que os processos envolvidos na comunicação tenham suas execuções sincronizadas. A troca de mensagens entre processos pode ser implementada de duas maneiras distintas, que são: comunicação direta e comunicação indireta.

Troca de Mensagens Comunicação Direta Exige que, ao enviar ou receber uma mensagem, o processo enderece explicitamente o nome do processo receptor ou transmissor. Só permite a troca de mensagens entre dois processos. Principal problema é a necessidade da especificação do nome dos processos envolvidos.

Troca de Mensagens Comunicação Direta Processo A Processo B

Troca de Mensagens Comunicação Indireta Utiliza uma área compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e retiradas pelo receptor. Conhecido como Mailbox ou Port. Estão associados a Mailbox, e os parâmetros dos procedimentos SEND e RECEIVE passam a ser nomes de mailboxes e não mais nomes de processos.

Troca de Mensagens Comunicação Indireta Processo A Processo B Mailbox ou Port

Troca de Mensagens Independente da forma utilizada, processos que estão trocando mensagens devem ter suas execuções sincronizadas em função do fluxo de mensagens. Existem diferentes esquemas de implementar a sincronização entre processos que trocam mensagens.

Troca de Mensagens O processo transmissor fica esperando que o processo receptor leia a mensagem ou o processo receptor fica esperando que o processo transmissor mande a mensagem forma síncrona de comunicação. Os processo não ficam bloqueados à espera de mensagens forma assíncrona de comunicação (uso de buffers).

Deadlock Situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá. Gerado principalmente devido ao compartilhamento de recursos. Torna-se cada vez mais freqüente e crítico na medida em que os sistemas operacionais evoluem no sentido de implementar o paralelismo de forma intensiva, e permitir a alocação dinâmica de um número ainda maior de recursos.

Deadlock Inicialmente, PA obtém acesso exclusivo de R1, da mesma forma que PB obtém de R2. Durante o processamento, PA necessita de R2 para poder prosseguir. Como R2 está alocado a PB, PA ficará aguardando que o recurso seja liberado. Em seguida, PB necessita utilizar R1 e da mesma forma, ficará aguardando até que PA libere o recurso. Como cada processo está esperando que o outro libere o recurso alocado, é estabelecida uma condição conhecida por espera circular.

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

Deadlock Condições necessárias para ocorrer o deadlock: Exclusão mútua: cada recurso só pode estar alocado a um único processo em um determinado instante; Espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos; Não-preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo recurso. Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa.

Prevenção de Deadlock Para prevenir a ocorrência, é preciso garantir que uma das quatro condições apresentadas, necessárias para sua existência, nunca se satisfaça. A ausência da primeira condição certamente acaba com o problema, pois nenhum processo terá que esperar para ter acesso a um recurso, mesmo que já esteja sendo utilizado por outro.

Prevenção de Deadlock Para evitar a segunda condição, processos que já possuam recursos garantidos não devem requisitar novos recursos. Um forma e a de que no início da execução, um processo deve pré-alocar todos os recursos necessários. Grande desperdício na utilização dos recursos do sistema. Pode ocorrer espera indefinida.

Prevenção de Deadlock A terceira condição pode ser evitada quando é permitido que um recurso seja retirado de um processo no caso de outro processo necessitar do mesmo recurso. A última maneira de evitar um deadlock é excluir a possibilidade da espera circular. Uma forma de implementar esse mecanismo é forçar o processo a ter apenas um recurso por vez.

Detecção de Deadlock É o mecanismo que determina, realmente, a existência da situação de deadlock, permitindo identificar os recursos e processos envolvidos no problema. Para detectar, os SO s devem manter estruturas de dados capazes de identificar cada recurso do sistema, o processo que está alocando e os processos que estão à espera de liberação do recurso. Toda vez que um recurso é alocado ou liberado por um processo, a estrutura deve ser atualizada.

Detecção de Deadlock Dependendo do tipo de sistema, o ciclo de busca por um deadlock pode variar. Em sistemas de tempo compartilhado, o tempo de busca pode ser maior, sem comprometer o desempenho e a confiabilidade do sistema. Sistema de tempo real, por sua vez, devem constantemente certificar-se da ocorrência de deadlocks.

Correção do Deadlock Uma solução bastante utilizada pela maioria dos sistemas é, simplesmente, eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos já garantidos por eles, quebrando, assim, a espera circular. A escolha do processo a ser eliminado é feita, normalmente, de forma aleatória ou, então, com base em algum tipo de prioridade. Este esquema, porém, pode consumir considerável tempo do processador.

Correção do Deadlock Uma solução menos drástica envolve a liberação de apenas alguns recursos alocados aos processos para outros processo, até que o ciclo de espera termine.