25
1 Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição Processos e Processos e Threads Threads Sistemas Operacionais (SOP- Sistemas Operacionais (SOP- BCC) BCC) De: De: Andrew S. Tanenbaum Andrew S. Tanenbaum Tradução: Tradução: Ronaldo A.L. Gonçalves Ronaldo A.L. Gonçalves Luís A. Consulado Luís A. Consulado Responsável pela disciplina: Responsável pela disciplina: Prof. Dr. Maurício Aronne Pillon Prof. Dr. Maurício Aronne Pillon Curso de Ciência da Computação Curso de Ciência da Computação

SOP 02 ExclusaoMutua02

Embed Size (px)

Citation preview

Page 1: SOP 02 ExclusaoMutua02

1Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Processos e Processos e ThreadsThreads

Sistemas Operacionais (SOP-Sistemas Operacionais (SOP-BCC)BCC)

BB

De: De: Andrew S. Tanenbaum Andrew S. Tanenbaum Tradução: Tradução: Ronaldo A.L. GonçalvesRonaldo A.L. Gonçalves

Luís A. ConsuladoLuís A. Consulado

Responsável pela disciplina:Responsável pela disciplina: Prof. Dr. Maurício Aronne PillonProf. Dr. Maurício Aronne Pillon

Curso de Ciência da ComputaçãoCurso de Ciência da Computação

Page 2: SOP 02 ExclusaoMutua02

51Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Exclusão Mútua com diretivas sleep e wakeup

Page 3: SOP 02 ExclusaoMutua02

52Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Dormir e Acordar

• Não baseia-se no princípio da

espera ociosa.

– Gasto de CPU

– Efeitos inesperados (problema da

inversão de prioridade)

i

• Princípio do bloqueio (sleep e

wakeup).

Page 4: SOP 02 ExclusaoMutua02

53Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Problema do produtor­consumidor (c/ Sleep/Wakeup)

c

• Dois ou mais processos compartilham um

buffer comum e de tamanho fixo;

• Produtor põe informação no buffer;

• Consumidor retira informação do buffer;

• O que fazer quando:

– o produtor quiser colocar mais informações e

o buffer estiver cheio?

– o consumidor quiser retirar mais informações e

o buffer estiver vazio?

Page 5: SOP 02 ExclusaoMutua02

54Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Problema do produtor­consumidor (c/ Sleep/Wakeup)

c

• Condição de disputa no count;

– Buffer esta vazio;

– Consumidor lê o buffer e verifica o valor 0, é

interrompido;

– Produtor executa, incrementa o count;

– Produtor dispara sinal de wakeup (count esta

em 0);

– Consumidor ainda não esta adormecido,

portanto sinal é perdido.

• Bit de espera pelo sinal de acordar.

Page 6: SOP 02 ExclusaoMutua02

55Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Dormir e Acordar

Problema do produtor­consumidor com uma condição de disputa fatal

Page 7: SOP 02 ExclusaoMutua02

56Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Semáforos• Uma variável que conta o número de sinais de

acordar (0 se não houver; caso contrário valor

positivo)

p

• As operações do semáforos são como ação

atômica:

• Down (P): verifica se o valor é maior que 0;

– Se for o caso, decrementa de 1 e prossegue;

– Senão ele é posto para dormir sem terminar o down.

• Up (V): incrementa o valor de um semáforo;

Caso haja mais de um processo dormindo, o

sistema escolheria um deles para acordar

(prosseguir).

Page 8: SOP 02 ExclusaoMutua02

57Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Implementando

Semáforos• Implementação de forma indivisível

– Desabilitando as instruções

– Variável de Impedimento com o

auxílio de instruções TSL p/ múltiplas

CPUs;

Page 9: SOP 02 ExclusaoMutua02

58Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Produtor-Consumidor c/

semáforos• Full – conta o número de lugares preenchidos;

• Empty – conta o número de lugares vazios;

• Mutex – garante que o produtor e consumidor não

terão acesso ao buffer ao mesmo tempo;

– Valores iniciais: Full = 0; Empty = nMax; mutex

= 1;

– Semáforos que iniciam em 1 e são usados por

dois ou mais processos são chamados de

semáforos binários;

Page 10: SOP 02 ExclusaoMutua02

59Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Semáforos

O problema do produtor­consumidor usando semáforos

Page 11: SOP 02 ExclusaoMutua02

60Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Exercício• Considere o conjunto de execução de três processos

conforme descrito abaixo que compartilham duas variáveis do tipo semáforo:

» semaphore U = 3; semaphore V = 0;

» [Process 1] [Process 2] [Process 3]

» L1:down(U) L2:down(V) L3:down(V)

L

» Printf ("C") printf("A") printf("D")

P

» up(V) printf("B") goto L3

» goto L1 up(V)

g

» goto L2

Page 12: SOP 02 ExclusaoMutua02

61Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Exercício - Responda

(1)Quantas vezes a letra C aparecerá na tela? Explique.

(2)Quantas vezes a letra D aparecerá na tela?

Explique.

(3)Qual o menor número de vezes que a letra A

poderá ser escrita na tela? Explique.

(4)A seguinte seqüência de letras é uma saída

possível - CABABDDCABCABD?

Page 13: SOP 02 ExclusaoMutua02

62Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Mutexes• É uma versão simplificada do semáforo;

• Úteis em pacotes de threads implementados

em espaço usuário;

• Mutex – variável que pode ocupar dois

estados: desimpedido (valor 0) e impedido;

– mutex_lock e mutex_unlock

Page 14: SOP 02 ExclusaoMutua02

63Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Mutexes• Facilmente implementado caso haja instrução TSL

disponível;

• Mais eficiente do que enter_region/leave_region

pois não trabalha com espera ocupada.

• Quando falha em verificar a variável de

impedimento mutex_lock chama thread_yield;

• Não necessita de chamada ao núcleo;

Page 15: SOP 02 ExclusaoMutua02

64Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Mutexes

Implementação de mutex_lock e mutex_unlock

Page 16: SOP 02 ExclusaoMutua02

65Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores• No problema do produtor-consumidor

implementado com semáforo: inverter down

mutex com down empty; (Deadlock)

• Monitor: unidade básica de sincronização de

alto nível.

• Compilador implementa a exclusão mútua

(mutex ou semáforo) para os procedimentos

declarados no monitor.

Page 17: SOP 02 ExclusaoMutua02

66Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores

• Princípio básico para o desenvolvedor: converter

todas as regiões críticas em procedimentos no

monitor;

• Como bloquear processos com monitores?

– Variáveis condicionais (wait e signal):

• Produtor c/ buffer cheio (wait full)

• Consumidor retira um produto (produtor em

wait), então signal full;

Page 18: SOP 02 ExclusaoMutua02

67Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores

• Proposta de Brinch Hansen: o processo que

lançar o Signal deve imediatamente sair do

monitor;

• A diferença entre Sleep/Wakup e monitor é que

monitor garante um processo só pode estar em

um estado (dormindo ou acordado).

• Synchronized monitor em Java

Page 19: SOP 02 ExclusaoMutua02

68Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores (1)

M

Exemplo de um monitor

Page 20: SOP 02 ExclusaoMutua02

69Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores (2)

M

• Delineamento do problema do produtor­consumidor com monitores• somente um procedimento está ativo por vez no monitor

– o buffer tem N lugares

Page 21: SOP 02 ExclusaoMutua02

70Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Monitores (3)

M

Page 22: SOP 02 ExclusaoMutua02

71Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Troca de Mensagens

• Métodos de sincronização vistos até agora

funcionam para máquinas com memória

compartilhada;

• Baseia-se em duas diretivas (chamadas ao

sistema): send e receive.

Page 23: SOP 02 ExclusaoMutua02

72Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Troca de Mensagens

• Problema: mensagens perdidas na rede;

• Sugestão: confirmação de recebimento;

– Problema: recebimento duplicado;

– Solução: número de controle na mensagem;

• O servidor/cliente não é um impostor?

(autenticação)

• Send/Receive na mesma máquina: desempenho;

Page 24: SOP 02 ExclusaoMutua02

73Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Troca de Mensagens

O problema do produtor­consumidor com N mensagens

Page 25: SOP 02 ExclusaoMutua02

74Pearson Education                                                                         Sistemas Operacionais Modernos – 2ª Edição

Barreiras

• Uso de uma barreiraa) processos se aproximando de uma 

barreirab) todos os processos, exceto um, 

bloqueados pela barreirac) último processo chega, todos passam