universidade de são paulo instituto de ciências matemáticas e de computação departamento de...

36
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula 8 –Comunicação e Sincronização de Processos Profa. Sarita Mazzini Bruschi Regina Helena Carlucci Santana Marcos José Santana Slides adaptados de Luciana A. F. Martimiano baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

Universidade de São PauloInstituto de Ciências Matemáticas e de ComputaçãoDepartamento de Sistemas de Computação

SSC 541 - SISTEMAS OPERACIONAIS I

Aula 8 –Comunicação e Sincronização de Processos

Profa. Sarita Mazzini BruschiRegina Helena Carlucci Santana

Marcos José Santana

Slides adaptados de Luciana A. F. Martimiano baseados no livroSistemas Operacionais Modernos de A. Tanenbaum

Page 2: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

2

Soluções Exclusão Mútua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semáforos; Monitores; Passagem de Mensagem;

Page 3: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

3

Comunicação de Processos Sincronização Produtor-Consumidor

Pro cessog ravad o r

Pro cessoleito r

d ado

Sin cro n ização

Bu ffer

Page 4: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

4

Comunicação de Processos – Primitivas Sleep/Wakeup Buffer: variável count controla a

quantidade de dados presente no buffer. Produtor:

Se count = valor máximo (buffer cheio)

Então processo produtor é colocado para dormir

Senão produtor coloca dados no buffer e

incrementa count

Page 5: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

5

Comunicação de Processos – Primitivas Sleep/Wakeup Consumidor:

Se count = 0 (buffer vazio)

Então processo vai “dormir”

Senão retira os dados do buffer e decrementa

count

Page 6: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

6

Comunicação de Processos – Primitivas Sleep/Wakeup

# define N 100int count = 0;

void producer(void){ int item; while (TRUE) { item = produce_item(); if (count == N)

sleep(); insert_item(item); count = count + 1; if (count == 1)

wakeup(consumer) }}

void consumer(void){ int item; while (TRUE) { if (count == 0)

sleep(); item = remove_item(); count = count - 1; if (count == N - 1)

wakeup(producer) consume_item(item); }}

Page 7: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

7

Soluções Exclusão Mútua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semáforos; Monitores; Passagem de Mensagem;

Page 8: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

8

Comunicação de Processos –Semáforos Idealizados por E. W. Dijkstra (1965); Variável inteira que armazena o número de sinais

wakeups enviados; Um semáforo pode ter valor 0 quando não há

sinal armazenado ou um valor positivo referente ao número de sinais armazenados;

Duas primitivas de chamadas de sistema: down (sleep) e up (wake);

Originalmente P (down) e V (up) em holandês;

Page 9: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

9

Comunicação de Processos –Semáforos Down: verifica se o valor do semáforo é maior do

que 0; se for, o semáforo é decrementado; se o valor for 0, o processo é colocado para dormir sem completar sua operação de down;

Todas essas ações são chamadas de ações atômicas; Ações atômicas garantem que quando uma operação

no semáforo está sendo executada, nenhum processo pode acessar o semáforo até que a operação seja finalizada ou bloqueada;

Page 10: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

10

Comunicação de Processos –Semáforos Up: incrementa o valor do semáforo,

fazendo com que algum processo que esteja dormindo possa terminar de executar sua operação down;

Semáforo Mutex: garante a exclusão mútua, não permitindo que os processos acessem uma região crítica ao mesmo tempo Também chamado de semáforo binário

Page 11: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

11

Comunicação de Processos –Semáforo Binário

Fila de esperad e processos

Processo acessaa reg iã o cr ítica

Processo d eseja en tra rn a reg ião cr ítica

DOW

N (S=

0)DO

WN

(S>

0)

U P (S) - p rocesso sa id a reg ião cr ítica

Libe ra processod a fi la de espe ra

Processo ébloqueado sem finalizarDown(s), pois s=0;

Processo executa Down(s)

Processo finalizaDown(s), pois s>0;

Page 12: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

12

Comunicação de Processos –Semáforos Problema produtor/consumidor: resolve o

problema de perda de sinais enviados; Solução utiliza três semáforos:

Full: conta o número de slots no buffer que estão ocupados; iniciado com 0; resolve sincronização;

Empty: conta o número de slots no buffer que estão vazios; iniciado com o número total de slots no buffer; resolve sincronização;

Mutex: garante que os processos produtor e consumidor não acessem o buffer ao mesmo tempo; iniciado com 1; também chamado de semáforo binário; Permite a exclusão mútua;

Page 13: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

13

Comunicação de Processos –Semáforos# include “prototypes.h”# define N 100

typedef int semaphore;semaphore mutex = 1;semaphore empty = N;semaphore full = 0;

void producer (void){ int item; while (TRUE){ produce_item(&item); down(&empty); down(&mutex); enter_item(item); up(&mutex); up(&full); }}

void consumer (void){ int item; while (TRUE){ down(&full); down(&mutex); remove_item(item); up(&mutex); up(&empty); consume_item(item); }}

Page 14: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

14

Comunicação de Processos –Semáforos Problema: erro de programação pode gerar um

deadlock; Suponha que o código seja trocado no processo

produtor;

Se o buffer estiver cheio, o produtor será bloqueado com mutex = 0; Assim, a próxima vez que o consumidor tentar acessar o buffer, ele tenta executar um down sobre o mutex, ficando também bloqueado.

.. ..down(&empty); down(&mutex);

down(&mutex); down(&empty); .. ..

Page 15: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

15

Soluções Exclusão Mútua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semáforos; Monitores; Passagem de Mensagem;

Page 16: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

16

Comunicação de Processos –Monitores Idealizado por Hoare (1974) e Brinch Hansen

(1975) Monitor: primitiva (unidade básica de

sincronização) de alto nível para sincronizar processos: Conjunto de procedimentos, variáveis e estruturas de

dados agrupados em um único módulo ou pacote; Somente um processo pode estar ativo dentro do

monitor em um mesmo instante; outros processos ficam bloqueados até que possam estar ativos no monitor;

Page 17: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

17

Comunicação de Processos –Monitoresmonitor example int i; condition c;

procedure A(); . end; procedure B(); . end;end monitor;

Estrutura básica de um Monitor

Dependem da linguagemde programação Compilador é que garantea exclusão mútua. JAVA

Todos os recursos compartilhados entre processos devem estarimplementados dentro do Monitor;

Page 18: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

18

Comunicação de Processos –Monitores Execução:

Chamada a uma rotina do monitor; Instruções iniciais teste para detectar se um

outro processo está ativo dentro do monitor; Se positivo, o processo novo ficará bloqueado

até que o outro processo deixe o monitor; Caso contrário, o processo novo executa as

rotinas no monitor;

Page 19: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

19

Comunicação de Processos –Monitores Condition Variables (condition): variáveis

que indicam uma condição; e Operações Básicas: WAIT e SIGNAL

wait (condition) bloqueia o processo;

signal (condition) “acorda” o processo que executou um wait na variável condition e foi bloqueado;

Page 20: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

20

Comunicação de Processos –Monitores Variáveis condicionais não são contadores,

portanto, não acumulam sinais; Se um sinal é enviado sem ninguém

(processo) estar esperando, o sinal é perdido;

Assim, um comando WAIT deve vir antes de um comando SIGNAL.

Page 21: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

21

Comunicação de Processos –Monitores Como evitar dois processos ativos no monitor ao

mesmo tempo?(1) Hoare colocar o processo mais recente para rodar, suspendendo o outro!!! (sinalizar e esperar)(2) B. Hansen um processo que executa um SIGNAL deve deixar o monitor imediatamente; O comando SIGNAL deve ser o último de um

procedimento do monitor;

A condição (2) é mais simples e mais fácil de se implementar.

Page 22: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

22

Comunicação de Processos –Monitores

Page 23: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

23

Comunicação de Processos –MonitoresSe parar

aquiConsumidor não pode

entrar no monitor

Page 24: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

24

Comunicação de Processos –Monitores Devido a exclusão mútua automática dos

procedimentos do monitor, tem-se: o produtor dentro de um procedimento do

monitor descobre que o buffer está cheio produtor termina a operação de WAIT sem se

preocupar consumidor só entrará no monitor após

produtor dormir

Page 25: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

25

Comunicação de Processos –Monitores Limitações de semáforos e monitores:

Ambos são boas soluções somente para CPUs com memória compartilhada. Não são boas soluções para sistema distribuídos;

Nenhuma das soluções provê troca de informações entre processo que estão em diferentes máquinas;

Monitores dependem de uma linguagem de programação – poucas linguagens suportam Monitores;

Page 26: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

26

Soluções Exclusão Mútua:

Espera Ocupada; Primitivas Sleep/Wakeup; Semáforos; Monitores; Passagem de Mensagem;

Page 27: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

27

Comunicação de Processos –Passagem de Mensagem Provê troca de mensagens entre processos

rodando em máquinas diferentes; Utiliza-se de duas primitivas de chamadas

de sistema: send e receive;

Page 28: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

28

Comunicação de Processos –Passagem de Mensagem Podem ser implementadas como procedimentos:

send (destination,&message);

receive (source,&message);

O procedimento send envia para um determinado destino uma mensagem, enquanto que o procedimento receive recebe essa mensagem em uma determinada fonte; Se nenhuma mensagem está disponível, o procedimento receive é bloqueado até que uma mensagem chegue.

Page 29: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

29

Comunicação de Processos –Passagem de Mensagem Problemas desta solução:

Mensagens são enviadas para/por máquinas conectadas em rede; assim mensagens podem se perder ao longo da transmissão;

Mensagem especial chamada acknowledgement o procedimento receive envia um acknowledgement para o procedimento send. Se esse acknowledgement não chega no procedimento send, esse procedimento retransmite a mensagem já enviada;

Page 30: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

30

Comunicação de Processos –Passagem de Mensagem Problemas:

A mensagem é recebida corretamente, mas o acknowledgement se perde.

Então o receive deve ter uma maneira de saber se uma mensagem recebida é uma retransmissão cada mensagem enviada pelo send possui uma identificação – seqüência de números; Assim, ao receber uma nova mensagem, o receive verifica essa identificação, se ela for semelhante a de alguma mensagem já recebida, o receive descarta a mensagem!

Page 31: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

31

Comunicação de Processos –Passagem de Mensagem Problemas:

Desempenho: copiar mensagens de um processo para o outro é mais lento do que operações com semáforos e monitores;

Autenticação Segurança;

Page 32: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

32

Comunicação de Processos –Passagem de Mensagem

Page 33: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

33

Comunicação de ProcessosOutros mecanismos RPC – Remote Procedure Call

Rotinas que permitem comunicação de processos em diferentes máquinas;

Chamadas remotas; MPI – Message-passing Interface;

Sistemas paralelos; RMI Java – Remote Method Invocation

Permite que um objeto ativo em uma máquina virtual Java possa interagir com objetos de outras máquinas virtuais Java, independentemente da localização dessas máquinas virtuais;

Web Services Permite que serviços sejam compartilhados através da

Web

Page 34: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

34

Comunicação de ProcessosOutros mecanismos Pipe:

Permite a criação de filas de processos; ps -ef | grep luciana; Saída de um processo é a entrada de outro; Existe enquanto o processo existir;

Named pipe: Extensão de pipe; Continua existindo mesmo depois que o processo terminar; Criado com chamadas de sistemas;

Socket: Par endereço IP e porta utilizado para comunicação entre

processos em máquinas diferentes; Host X (192.168.1.1:1065) Server Y (192.168.1.2:80);

Page 35: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

35

Processos Introdução

Escalonamento de Processos

Comunicação entre ProcessosComunicação entre Processos

Condição de DisputaCondição de Disputa

Região CríticaRegião Crítica

Formas de Exclusão MútuaFormas de Exclusão Mútua

Problemas ClássicosProblemas Clássicos

Threads

Deadlock

Page 36: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC 541 - SISTEMAS OPERACIONAIS I Aula

36

Problemas clássicos de comunicação entre processos

Problema do Jantar dos Filósofos Cinco filósofos desejam

comer espaguete; No entanto, para poder comer, cada filósofo precisa utilizar dois garfo e não apenas um. Portanto, os filósofos precisam compartilhar o uso do garfo de forma sincronizada.

Os filósofos comem e pensam;