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

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

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

Apresentações semelhantes


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

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

2 2 1 – Introdução Sumário

3 3 2 – Concorrência no nível de subprograma Sumário

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

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

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

7 7 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 Sumário

8 8 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 Sumário

9 9 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 Sumário

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26 26 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 Sumário

27 27 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 Sumário

28 28 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 Sumário

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

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

31 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 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 33 1 – Introdução 2 – Concorrência no nível de subprograma 3 – Semáforos Sumário

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

35 35 Semáforos - Dijkstra, ) 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 36 Semáforos - Dijkstra, ) 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 37 Semáforos - Dijkstra, ) 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 – 1 devido a P(sem) então senão reative-o suspende o processo senão sem = sem + 1

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

39 39 Semáforos - Sincronização de cooperação PRODUTORCONSUMIDOR BUFFER

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

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

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

43 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end.

44 44 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND

45 45 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra

46 46 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra LOAD R,[X] INC R LOAD [X],R

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

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

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

50 50 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra

51 51 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra sem : semaphore = 1;

52 52 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra sem : semaphore = 1; P(sem); V(sem);

53 53 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; begin x := x –1; end; begin x := 0; soma; diminui; write(x); end. PARBEGIN PAREND Dijkstra sem : semaphore = 1; P(sem); V(sem); P(sem); V(sem);

54 54 Semáforos em SR (Synchronizing Resources)

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

56 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 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 58 1 – Introdução 2 – Concorrência no nível de subprograma 3 – Semáforos 4 – Monitores Sumário

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

60 60 Monitores - Hoare, 1974

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

62 62 Monitores - Hoare, ) 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 63 Monitores - Hoare, ) 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 64 Monitores - Hoare, ) 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 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; begin x := x –1; end; begin x := 0; end; begin parbegin; regiao_critica.soma; regiao_critica.diminui; parend; end.

66 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; begin x := x –1; end; begin x := 0; end; begin parbegin regiao_critica.soma; regiao_critica.diminui; parend end.

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

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

69 69 Mensagens - Hansen (1978) e Hoare (1978)

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

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

72 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 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 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 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 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 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 78 Modelo de Mensagens em SR INVOCAÇÃO SERVIÇO EFEITO call proc Chamada de procedimento... CALL... PROC... END

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

80 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 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 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)... end process q var z : int in f(x) -> z := z + x [] g(u) returns v -> v := u * u – 9.3 ni... end

83 83 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 Sumário

84 84 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 Sumário

85 85 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 ) Sumário

86 86 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 Sumário


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

Apresentações semelhantes


Anúncios Google