Comunicação Interprocessos
Prof. Alexandre Monteiro
Recife
‹#›
Contatos

Prof. Guilherme Alexandre Monteiro Reinaldo

Apelido: Alexandre Cordel

E-mail/gtalk: [email protected]
[email protected]

Site: http://www.alexandrecordel.com.br/fbv

Celular: (81) 9801-1878
Comunicação Interprocessos



Os processos podem precisar trocar informações entre eles
ou podem solicitar a utilização de um mesmo recurso
simultaneamente, como arquivos, registros, dispositivos de
E/S e memória.
O compartilhamento de recursos entre vários processos
pode causar situações indesejáveis e, dependendo do caso,
gerar o comprometimento da aplicação.
O Sistema Operacional tem a função de gerenciar e
sincronizar processos concorrentes, com o objetivo de
manter o bom funcionamento do sistema.
Comunicação Interprocesso
Condições de Disputa/Corrida
Dois processos querem ter acesso simultaneamente à memória
compartilhada (Ex: spool de Impressão )
4
Regiões Críticas




Para se evitar uma condição de corrida é preciso definir
métodos que proíba que mais de um processo acesse uma
determinada área de memória compartilhada ao mesmo
tempo.
Esses métodos são conhecidos como exclusão mútua ou
MUTEX (MUTual EXclusion).
A parte do programa no qual o processo acessa memória
compartilhada é chamada seção crítica ou região crítica.
Dessa forma, a solução para se evitar uma condição de
corrida seria organizar os problemas de tal forma que
nenhum de dois ou mais processos estivessem em suas
regiões críticas ao mesmo tempo.
Regiões Críticas (1)

Condições necessárias para prover exclusão mútua:
1. Nunca dois processos simultaneamente em uma
região crítica
2. Nada pode ser afirmado sobre a velocidade ou
sobre o número de CPUs
3. Nenhum processo executando fora de sua região
crítica pode bloquear outros processos
4. Nenhum processo deve esperar eternamente para
entrar em sua região crítica
6
Regiões Críticas (2)
Espera Ativa
Exclusão mútua usando regiões críticas
proposta de exclusão mútua na qual, um processo quando está acessando
sua região crítica, outro processo que deseja entrar também em região
crítica fica aguardando.
7
Exclusão Mútua com
Espera Ociosa (1) – Alternativa Estrita
Solução proposta para o problema da região crítica
(a) Processo 0.
(b) Processo 1.
8
Exclusão Mútua com
Espera Ociosa (2)
Solução de Peterson para implementar exclusão mútua
9
Dormir e Acordar
Problema do produtor-consumidor com uma condição de disputa fatal
10
Semáforos
O problema do produtor-consumidor usando semáforos
11
Mutexes
Implementação de mutex_lock e mutex_unlock
12
Monitores (1)
Exemplo de um monitor
13
Monitores (2)
•
Delineamento do problema do produtor-consumidor com monitores
– somente um procedimento está ativo por vez no monitor
– o buffer tem N lugares
14
Monitores (3)
Solução para o problema do produtor-consumidor em Java
15
Monitores (4)
Solução para o problema do produtor-consumidor em Java (parte 2)
16
Troca de Mensagens
O problema do produtor-consumidor com N mensagens
17
Barreiras
•
Uso de uma barreira
a) processos se aproximando de uma barreira
b) todos os processos, exceto um, bloqueados pela
barreira
c) último processo chega, todos passam
18
Jantar dos Filósofos (1)
•
•
Filósofos comem/pensam
Cada um precisa de 2
garfos para comer
•
Pega um garfo por vez
•
Como prevenir deadlock
•
Situação de impasse.
19
Jantar dos Filósofos (2)
Uma solução errada para o problema do jantar dos filósofos
20
Jantar dos Filósofos (3)
Uma solução para o problema do jantar dos filósofos (parte 1)
21
Jantar dos Filósofos (4)
Uma solução para o problema do jantar dos filósofos (parte 2)
22
O Problema dos Leitores
e Escritores
Uma solução para o problema dos leitores e escritores
23
O Problema do Barbeiro
Sonolento (1)
24
O Problema do Barbeiro Sonolento (2)
Solução para o problema do barbeiro sonolento
25
Referências


Sistemas Operacionais Modernos – 3ª Edição. A.
Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.
Download

Aula 5 (10/09/2015) - Comunicação Inter Processos