A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 9 Concorrência Universidade do Vale do Rio dos Sinos

Apresentações semelhantes


Apresentação em tema: "Aula 9 Concorrência Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

1 Aula 9 Concorrência Universidade do Vale do Rio dos Sinos
< Página da Disciplina > <Endereço do Professor >

2 Sumário 1 – Introdução

3 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma

4 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos

5 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores

6 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens

7 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA

8 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA 7 – Threads em Java

9 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA 7 – Threads em Java 8 – Concorrência no nível de comando

10 Sumário 1 – Introdução - Tipos

11 Sumário 1 – Introdução - Tipos - Instrução - Comando - Unidade
- Programa

12 Sumário Linguagens de Programação 1 – Introdução - Tipos - Instrução
- Comando - Unidade - Programa Linguagens de Programação

13 Sumário 1 – Introdução - Tipos
- Gênese da concorrência: Sistemas Operacionais

14 Sumário 1 – Introdução - Tipos
- Gênese da concorrência: Sistemas Operacionais - Arquiteturas de Multiproc.: SIMD e MIMD

15 Sumário 1 – Introdução - Tipos
- Gênese da concorrência: Sistemas Operacionais - Arquiteturas de Multiproc.: SIMD e MIMD - Categorias de concorrência

16 Sumário 1 – Introdução - Tipos
- Gênese da concorrência: Sistemas Operacionais - Arquiteturas de Multiproc.: SIMD e MIMD - Categorias de concorrência Cooperação Competição

17 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa

18 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta

19 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização

20 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização

21 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização Cooperação Competição

22 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização Cooperação Competição Concorrência em Buffers

23 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização Cooperação Competição Concorrência em Buffers Exclusão Mútua

24 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização - Mecanismos de sincronização

25 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização - Mecanismos de sincronização Semáforos Monitores Mensagens

26 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização - Mecanismos de sincronização - Vivência / deadlock

27 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização - Mecanismos de sincronização - Vivência / deadlock - Questões de projeto

28 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
- Tarefa - Tarefa disjunta - Sincronização - Tipos de sincronização - Mecanismos de sincronização - Vivência / deadlock - Questões de projeto

29 Questões de projeto Como a sincronização de cooperação é fornecida ?

30 Questões de projeto Como a sincronização de cooperação é fornecida ?
Como a sincronização de competição é fornecida ?

31 Questões de projeto Como a sincronização de cooperação é fornecida ?
Como a sincronização de competição é fornecida ? Como e quando as tarefas iniciam e encerram a execução ?

32 Questões de projeto Como a sincronização de cooperação é fornecida ?
Como a sincronização de competição é fornecida ? Como e quando as tarefas iniciam e encerram a execução ? As tarefas são estática ou dinamicamente criadas ?

33 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos

34 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos

35 Semáforos Dijkstra, 1965 1) Variável inteira 2) Duas operações P e V
3) P e V são atômicas 4) P e V são suportadas pelo S. O.

36 Semáforos Dijkstra, 1965 1) Variável inteira 2) Duas operações P e V
3) P e V são atômicas 4) P e V são suportadas pelo S. O. P se sem > 0 então sem = sem – 1 senão suspende o processo

37 Semáforos Dijkstra, 1965 1) Variável inteira 2) Duas operações P e V
3) P e V são atômicas 4) P e V são suportadas pelo S. O. P V se sem > 0 então se um processo estiver suspenso sem = sem – devido a P(sem) então senão reative-o suspende o processo senão sem = sem + 1

38 Semáforos Sincronização de cooperação

39 Semáforos Sincronização de cooperação PRODUTOR CONSUMIDOR BUFFER

40 Semáforos Sincronização de cooperação PRODUTOR CONSUMIDOR BUFFER
var sem : semaforo = 0;

41 Semáforos Sincronização de cooperação PRODUTOR CONSUMIDOR BUFFER
var sem : semaforo = 0; ... ARMAZENA DADO NO BUFFER; V(sem);

42 Semáforos Sincronização de cooperação PRODUTOR CONSUMIDOR BUFFER
var sem : semaforo = 0; ... ARMAZENA DADO NO BUFFER; V(sem); ... P(sem); CONSOME DADO DO BUFFER;

43 Semáforos Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end.

44 Semáforos Sincronização de competição (exclusão mútua) PARBEGIN PAREND
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. PARBEGIN PAREND

45 Semáforos Dijkstra Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. PARBEGIN Dijkstra PAREND

46 Semáforos LOAD R,[X] INC R LOAD [X],R Dijkstra
Sincronização de competição (exclusão mútua) program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. LOAD R,[X] INC R LOAD [X],R PARBEGIN Dijkstra PAREND

47 Semáforos Sincronização de competição (exclusão mútua)
var sem : semaforo = 1;

48 Semáforos Sincronização de competição (exclusão mútua)
var sem : semaforo = 1; ... P(sem); SEÇÃO CRÍTICA; V(sem);

49 Semáforos Sincronização de competição (exclusão mútua)
var sem : semaforo = 1; ... P(sem); SEÇÃO CRÍTICA; V(sem); ... P(sem); SEÇÃO CRÍTICA; V(sem);

50 Semáforos Dijkstra Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. PARBEGIN Dijkstra PAREND

51 Semáforos Dijkstra Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. sem : semaphore = 1; PARBEGIN Dijkstra PAREND

52 Semáforos Dijkstra Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. sem : semaphore = 1; P(sem); V(sem); PARBEGIN Dijkstra PAREND

53 Semáforos Dijkstra Sincronização de competição (exclusão mútua)
program exemplo; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; soma; diminui; write(x); end. sem : semaphore = 1; P(sem); V(sem); P(sem); V(sem); PARBEGIN Dijkstra PAREND

54 Semáforos em SR (Synchronizing Resources)

55 Semáforos em SR (Synchronizing Resources)
Gregory R. Andrews (década de 80)

56 Semáforos em SR (Synchronizing Resources)
resource CS() const N := 20 var x := 0 sem mutex := 1 process p (i := 1 to N) ... P(mutex) x := x + 1 V(mutex) end

57 Semáforos em SR (Synchronizing Resources)
resource CS() const N := 20 var x := 0 sem mutex := 1 process p (i := 1 to N) ... P(mutex) x := x + 1 V(mutex) end

58 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores

59 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores

60 Monitores Hoare, 1974

61 Monitores Hoare, 1974 1) “O semáforo é uma ferramenta de sincronização
elegante para o programador ideal que jamais comete erro.” ( Per Hansen, 1973)

62 Monitores Hoare, 1974 1) “O semáforo é uma ferramenta de sincronização
elegante para o programador ideal que jamais comete erro.” ( Per Hansen, 1973) 2) Concurrent Pascal (Hansen, 1975)

63 Monitores Hoare, 1974 1) “O semáforo é uma ferramenta de sincronização
elegante para o programador ideal que jamais comete erro.” ( Per Hansen, 1973) 2) Concurrent Pascal (Hansen, 1975) 3) Baseado em TADs

64 Código de inicialização
Monitores Hoare, 1974 1) “O semáforo é uma ferramenta de sincronização elegante para o programador ideal que jamais comete erro.” ( Per Hansen, 1973) 2) Concurrent Pascal (Hansen, 1975) 3) Baseado em TADs 4) Estrutura: Variáveis Globais Procedimentos Código de inicialização

65 Monitores Sincronização de competição (exclusão mútua)
program exemplo; monitor regiao_critica; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; parbegin; regiao_critica.soma; regiao_critica.diminui; parend; end.

66 Monitores Sincronização de competição (exclusão mútua)
program exemplo; monitor regiao_critica; var x : integer; procedure soma; begin x := x + 1; end; procedure diminui; x := x –1; x := 0; parbegin regiao_critica.soma; regiao_critica.diminui; parend end.

67 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens

68 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens

69 Mensagens Hansen (1978) e Hoare (1978)

70 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada

71 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos?

72 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos? 3) Mensagens síncronas e assíncronas

73 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos? 3) Mensagens síncronas e assíncronas 4) Envio e recebimento devem possuir um modelo de sincronismo

74 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos? 3) Mensagens síncronas e assíncronas 4) Envio e recebimento devem possuir um modelo de sincronismo 5) Linguagem deve suportar o modelo proposto

75 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos? 3) Mensagens síncronas e assíncronas 4) Envio e recebimento devem possuir um modelo de sincronismo 5) Linguagem deve suportar o modelo proposto 6) Modelo do SR

76 Mensagens Hansen (1978) e Hoare (1978)
1) Semáforos e monitores em memória compartilhada 2) Sistemas distribuídos? 3) Mensagens síncronas e assíncronas 4) Envio e recebimento devem possuir um modelo de sincronismo 5) Linguagem deve suportar o modelo proposto 6) Modelo do SR

77 Modelo de Mensagens em SR
INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento call in rendezvous send proc Criação de processo dinâmica send in Passagem de mensagem assíncrona

78 Modelo de Mensagens em SR
INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento ... CALL PROC ... END

79 Modelo de Mensagens em SR
INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento call in rendezvous ... CALL ... IN NI

80 Modelo de Mensagens em SR
INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento call in rendezvous send proc Criação de processo dinâmica ... SEND PROC ... END

81 Modelo de Mensagens em SR
INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento call in rendezvous send proc Criação de processo dinâmica send in Passagem de mensagem assíncrona ... SEND ... IN NI

82 Exemplo de rendezvous em SR
resource main() op f(x:int), g(u:real) returns v:real process p1 var y : int ... call f(y) end process p2 var w : real w := g(3.8) process q var z : int in f(x) -> z := z + x [] g(u) returns v -> v := u * u – 9.3 ni

83 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA

84 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA 7 – Threads em Java

85 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA 7 – Threads em Java - Classe Thread - Prioridades - Sincronização de competição (synchronized) - Sincronização de colaboração (Métodos wait/notify)

86 Sumário 1 – Introdução 2 – Concorrência no nível de subprograma
3 – Semáforos 4 – Monitores 5 – Passagem de mensagens 6 – Concorrência em ADA 7 – Threads em Java 8 – Concorrência no nível de comando


Carregar ppt "Aula 9 Concorrência Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google