sistemas operacionais 6º semestre aula 6 prof. carlos vinícius [email protected] serviÇo...

41
Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius [email protected] SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS

Upload: bernadete-sales-teves

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Sistemas Operacionais6º Semestre

Aula 6

Prof. Carlos Viní[email protected]

SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIALFACULDADE DE TECNOLOGIA SENAC PELOTAS

Page 2: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Introdução

o Programa executado por apenas um processo é dito de programa sequencialo Existe apenas um fluxo de controle

o Programa concorrente é executado por diversos processos que cooperam entre si para realização de uma tarefa (aplicação)o Existem vários fluxos de controle o Necessidade de interação para troca de informações

(sincronização)

2

Page 3: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Introdução

o Emprego de termos o Paralelismo real: só ocorre em máquinas

multiprocessadoraso Paralelismo “aparente” (concorrência): máquinas

monoprocessadoraso Execução simultânea versus estar “em estado de

execução” simultaneamente

3

Page 4: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Programação Concorrente

o Composta por um conjunto de processos sequenciais que se executam concorrentemente

o Processos disputam recursos comunso e.g.: variáveis, periféricos, etc...

o Um processo é dito de cooperante quando é capaz de afetar, ou ser afetado, pela execução de outro processo

4

Page 5: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Motivação para Programação Concorrente

o Aumento de desempenho:o Permite a exploração do paralelismo real

disponível em máquinas multiprocessadoraso Sobreposição de operações de E/S com

processamentoo Facilidade de desenvolvimento de aplicações

que possuem um paralelismo intrínseco

5

Page 6: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Desvantagens da Programação Concorrente

o Programação complexao Aos erros “comuns” se adicionam erros

próprios ao modeloo Diferenças de velocidade relativas de

execução dos processoso Aspecto não determinístico

o Difícil depuração

6

Page 7: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Especificação do paralelismo

o Necessidade de especificar o paralelismo definindo:o Quantos processos participarãoo Quem fará o queo Dependência entre as tarefas (Grafo)

o Notação para expressar paralelismoo fork/wait (fork/join)o parbegin/parend

7

Page 8: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Fork/Wait

8

Processo B Processo C

Processo A

fork B;fork C;

...wait C;

wait B;

Bloqueado

Page 9: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Parbegin/Parend

o Comandos empregados para definir uma sequência de comandos a serem executados concorrentemente

o A primitiva parend funciona como um ponto de sincronização (barreira)

9

Processo BProcesso C

Processo A

ParbeginTarefa B;Tarefa C;Parend

Bloqueado

Page 10: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Comentários Gerais

o Primitivas de mais alto nível para descrição do paralelismo do tipo parbegin/parend podem ser traduzidas por pré-compiladores e/ou interpretadores para primitivas de mais baixo nível

o Processos paralelos podem ser executados em qualquer ordemo Duas execuções consecutivas do mesmo

programa, com os mesmos dados de entrada, podem gerar resultados diferenteso Não é necessariamente um erro

o Possibilidade de forçar a execução em uma determinada ordem10

Page 11: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

O problema do compartilhamento de recursos

o A programação concorrente implica em um compartilhamento de recursoso Variáveis compartilhadas são recursos

essenciais para a programação concorrenteo Acessos a recursos compartilhados devem ser

feitos de forma a manter um estado coerente e correto do sistema

11

Page 12: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (1)

o Relação produtor-consumidor é uma situação bastante comum em sistemas operacionais

o Servidor de impressão:o Processos usuários produzem “impressões”o Impressões são organizadas em uma fila a

partir da qual um processo (consumidor) os lê e envia para a impressora

12

Page 13: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (1)

13

P1

P2

Pn

PC

Produtores

Consumidor

Page 14: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (2)

o Suposições:o Fila de impressão é um buffer circularo Existência de um ponteiro (in) que aponta

para uma posição onde a impressão é inserida para aguardar o momento de ser efetivamente impressa

o Existência de um ponteiro (out) que aponta para a impressão que está sendo realizada

14

Page 15: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (2)

15

5 4 3 2 1

P1

Pd

outinP2

Page 16: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (3)

o Sequência de operações:o P1 vai imprimir; lê valor de in (5); perde

processadoro P2 ganha processador; lê valor de in (5);

insere arquivo; atualiza in (6)o P1 ganha processador; insere arquivo (5);

atualiza in (7)o Estado incorreto:

o Impressão de P1 é perdidao Na posição 6 não há uma solicitação válida

de impressão

16

Page 17: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Exemplo: relação produtor-consumidor (3)

17

outin

7 6 5 4 3 2 1

P1

Pd

P2

Page 18: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

O problema da seção crítica

o Corrida (race condition)o Situação que ocorre quando vários

processos manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que os acessos são feitos

o Seção crítica:o Segmento de código no qual um processo

realiza a alteração de um recurso compartilhado

18

Page 19: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Necessidade da programação concorrente

o Eliminar corridaso Criação de um protocolo para permitir que

processos possam cooperar sem afetar a consistência dos dados

o Controle de acesso a seção crítica:o Garantir a exclusão mútua

19Exit_section

Entry_section

Seção crítica

Page 20: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Propriedades para exclusão mútua

o Regra 1 - Exclusão mútuao Dois ou mais processos não podem estar

simultaneamente em uma seção críticao Regra 2 - Progressão

o Nenhum processo fora da seção crítica pode bloquear a execução de um outro processo

o Regra 3 - Espera limitadao Nenhum processo deve esperar infinitamente

para entrar em uma seção críticao Regra 4

o Não fazer considerações sobre o número de processadores, nem de suas velocidades relativas20

Page 21: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Obtenção da exclusão mútua

o Desabilitação de interrupçõeso Variáveis especiais do tipo locko Alternância de execução

21

Page 22: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Desabilitação de Interrupções

o Não há troca de processos com a ocorrência de interrupções de tempo ou de eventos externos

o Desvantagens:o Poder demais para um usuárioo Não funciona em máquinas

multiprocessadoras (SMP) pois apenas a CPU que realiza a instrução é afetada (violação da regra 4)

22

Seção crítica

CLI ;Desliga interrupções

STI ;Ativa interrupções

Page 23: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Variáveis do tipo lock

o Criação de uma variável especial compartilhada que armazena dois estados:o Zero: livreo 1: ocupado

o Desvantagem:o Apresenta Race conditions

23

While (lock==1);lock=1;

lock=0;

Seção crítica

Page 24: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Alternância

o Desvantagemo Teste contínuo do valor da variável

compartilhada provoca o desperdício do tempo do processador (busy waiting)

o Viola a regra 2 se a parte não crítica de um processo for muito maior que a do outro

24

while (TRUE) { while (turn!=0); critical_section(); turn=1; non_critical_section();}

while (TRUE) { while (turn!=1); critical_section(); turn=0; non_critical_section();}

Page 25: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Implementação de mecanismos para exclusão mútua

o Algorítmica:o Combinação de variáveis do tipo lock e

alternância (Dekker 1965, Peterson 1981)o Primitivas:

o Mutexo Semáforoso Monitor

25

Page 26: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Mutex

o Variável compartilhada para controle de acesso a seção crítica

o CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos

o Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica.o CAS: Compare and Store

o Copia o valor de uma posição de memória para um registrador interno e escreve nela o valor 1

o TSL: Test and Set Locko Lê o valor de uma posição de memória e coloca

nela um valor não zero26

Page 27: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Primitivas lock e unlock

o O emprego de mutex necessita duas primitivas

27

enter_region: tst register,flagcmp register,0jnz enter_regionret

leave_region: mov flag,0ret

lock(flag);

unlock(flag);Seção crítica

Page 28: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Primitivas lock e unlock: problemas (1)

o Busy waiting (spin lock)o Confiar no processo (programador)

o Fazer o lock e o unlock corretamenteo Inversão de prioridades

28

lock(m)

lock(m)

unlock(m)

Outros processos

Troca de processo

Bloqueado fazendobusy wait

Page 29: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Primitivas lock e unlock: problemas (2)

o Solução:o Bloquear o processo ao invés de executar

busy waitingo Baseado em duas novas primitivas

o sleep: Bloqueia um processo a espera de uma sinalização

o wakeup: Sinaliza um processo

29

Page 30: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Semáforos

o Mecanismo proposto por Dijkstra (1965)o Duas primitivas:

o P (Proberen, testar)o V (Verhogen, incrementar)

o Semáforo é um tipo abstrato de dados:o Um valor inteiroo Fila de processo

30

Page 31: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Implementação de Semáforos

o Primitivas P e V

o Necessidade de garantir a atomicidade nas operações de incremento (decremento) e teste da variável compartilhada s.valoro Uso de mutex

o Dependendo dos valores assumidos por s.valoro Semáforos binários: s.valor = 1o Semáforos contadores: s.valor = n31

P(s): s.valor = s.valor - 1 Se s.valor < 0 { Bloqueia processo (sleep); Insere processo em S.fila; }

V(s): s.valor = s.valor + 1 Se S.valor <=0 { Retira processo de S.fila; Acorda processo (wakeup); }

Page 32: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Semáforos X Mutex

o Primitivas lock e unlock são necessariamente feitos por um mesmo processoo Acesso a seção crítica

o Primitivas P e V podem ser realizadas por processos diferentes o Gerência de recursos

32

Page 33: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Troca de Mensagens

o Primitivas do tipo mutex e semáforos são baseadas no compartilhamento de variáveiso Necessidade do compartilhamento de

memóriao Sistemas distribuídos não existe memória

comumo Novo paradigma de programação

o Troca de mensagens o Primitivas

o send e receiveo RPC (Remote Procedure Call)

33

Page 34: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Primitivas send e receive (1)

o Diferentes comportamentos em função da semântica das primitivas send e receive

o Funcionamento básico:

34

Processo BProcesso A

send(dst, msg)

Bloqueado recv(src, msg)

Processo BProcesso A

recv(src, msg)

Bloqueado send(dst, msg)

Page 35: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Primitivas send e receive (2)

o Bibliotecas de comunicaçãoo e.g. sockets, MPI, PVM, etc.

o Grande variedade de funçõeso Ponto a pontoo Em grupoo Primitivas para testar status e andamento de

uma comunicaçãoo Diferentes semânticas

o Bloqueanteo Não bloqueanteo Rendez vous

35

Page 36: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Remote Procedure Call (1)

o Base de comunicação do DCEo Composto por :

o núcleo executivo (run time)o Interfaces para a geração de aplicações

(Interface de programação)36

Page 37: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Remote Procedure Call (2)

o Linguagem própria para descrever funções (chamada/definição)

o Compilador (rpcgen) para gerar stubs e ligar com programa aplicativo

o Comunicação é toda gerada pelo run-time de forma transparente37

Call S

Send

Cliente Servidor

Recv

Unpack

return

Pack Pack

SendRecv

UnpackStub (cliente) Stub (servidor)

Run timewait

Call S return

Page 38: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Deadlock

o Situação na qual um, ou mais processos, fica impedido de prosseguir sua execução devido ao fato de cada um estar aguardando acesso a recursos já alocados por outro processo

38

Page 39: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Condições para ocorrência de Deadlocks (1)o Para que ocorra um deadlock quatro condições

devem ser satisfeitas simultaneamente:

o 1. Exclusão mútua:o Todo recurso ou está disponível ou está

atribuído a um único processo

o 2. Segura/espera:o Os processo que detém um recurso

podem solicitar novos recursos

39

Page 40: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Condições para ocorrência de Deadlocks (2)o 3. Recurso não preemptível:

o Um recurso concedido não pode ser retirado de um processo por outro

o 4. Espera circular: o existência de um ciclo de 2 ou mais processos cada um

esperando por um recurso já adquirido (em uso) pelo próximo processo no ciclo

40

A

R1 R2

B

solicitação

em uso

em uso

solicitação

Page 41: Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA

Estratégias para tratamento de deadlockso Ignoraro Deteção e recuperação

o Monitoração dos recursos liberados e alocados

o Eliminação de processoso Impedir ocorrência cuidando na alocação de

recursoso Algoritmo do banqueiro

o Prevenção (por construção)o Evitar a ocorrência de pelo menos uma das

quatro condições necessárias

41