0
Engenharia de Controle e Automação            Automação em Tempo Real              Módulo 1:Introdução aos Sistemas de Aut...
Livro   Seixas, Constantino e Szuster, Marcelo, Programação    Concorrente em ambiente WNT: Uma visão de automação,    Ed...
Filosofia Geral – Modelo   Hierárquico9290-102-24 (rev.:00)         3
Programação Concorrente   Programação concorrente x Programação Seqüencial   Programação seqüencial [Gary Larson, The Far...
Monotarefa X Multitarefas   Hoje tudo na vida é multitasking (multitarefas)      Trabalho, esporte, lazer, cuidar de fil...
Por que programação               concorrente ?   O computador é mais rápido que seus usuários    Exemplo: digitação     ...
Arquitetura Microkernel                            QNX                            File                           Manager  ...
Natureza das Aplicações   Cíclicas (Evento de tempo)   Em resposta a eventos de processo ou de operação   Sincronizadas...
Definições Básicas   Escalonamento   Scheduler = Escalonador   Time-sharing   Time-slice = Quantum   Tasks: implement...
Preempção9290-102-24 (rev.:00)   10
Chaveamento de Contexto                            Chaveamento                 Chaveamento               Processo A    de ...
Instruções Atômicas    X : = X + 1;                         CPU CISC     CPU RISC                        inc <X>     ld AX...
CISC x RISC  CISC = Complete Instruction Set Computer   Instruction Set com grande repertório de instruções   Instruções...
CISC x RISC  RISC = Reduced Instruction Set Computer       Instruction Set com pequeno repertório de instruções       In...
Pipeline   Várias operações simultâneas                                                9290-102-24-003 (Rev.:00)   A CPU...
Superescalar   Duplicando a linha de montagem                                     9290-102-24-003 (Rev.:00)9290-102-24 (r...
Mais Conceitos       S.O. Multitasking  Multiprogramação (multitasking)       S.O. Multiusuário       S.O. Multiproces...
Interrelação entre Processos   Não dependentes   Contenção   Cooperação                                  P2            ...
O Problema Fundamental da   Programação Concorrente                            Processo A                                 ...
O Problema Fundamental da   Programação Concorrente                        Caso      Intercalação                         ...
Exercícios: Mandelbrot Set                        zn +1 = z 2 n + p                          p = x + jy                   ...
Exercícios: Mandelbrot Set                             Por que este problema                              é bom para ser ...
Exercícios   Como desenhar um círculo na tela do computador de forma    eficiente e dividindo a tarefa entre pelo menos d...
Exercícios  void MidPointCircle(int raio, int valor) // Fonte: Foley van Damn  // Assume centro do círculo na origem  // A...
Exercícios     void CirclePoints(int X, int Y, int valor)     begin          PutPixel(CX + X, CY + Y, valor); // ponto no ...
Exercícios - Sort      Colocar os números abaixo em ordem crescente usando um       algoritmo que permita dividir a taref...
Exercícios - Escalonamento     Um casal deve realizar três tarefas: cortar a grama, passar o      aspirador no chão e dar...
Exercícios - Escalonamento     Quatro pessoas têm de atravessar uma passarela bamba à noite.      Há muitos buracos na pa...
Muito Obrigado      Constantino Seixas Filho      constantino.seixas@task.com.br9290-102-24 (rev.:00)                  29
Upcoming SlideShare
Loading in...5
×

Atr cap1

144

Published on

Concurrent Programming in Windows NT

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
144
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Atr cap1"

  1. 1. Engenharia de Controle e Automação Automação em Tempo Real Módulo 1:Introdução aos Sistemas de Automação A problem well stated is a problem half solved (Sir Isaac Newton)Professor: Constantino Seixas Filho sexta-feira, 12 de outubro de 2012 1
  2. 2. Livro  Seixas, Constantino e Szuster, Marcelo, Programação Concorrente em ambiente WNT: Uma visão de automação, Editora da UFMG, 20039290-102-24 (rev.:00) 2
  3. 3. Filosofia Geral – Modelo Hierárquico9290-102-24 (rev.:00) 3
  4. 4. Programação Concorrente  Programação concorrente x Programação Seqüencial Programação seqüencial [Gary Larson, The Far side Gallery]9290-102-24 (rev.:00) 4
  5. 5. Monotarefa X Multitarefas  Hoje tudo na vida é multitasking (multitarefas)  Trabalho, esporte, lazer, cuidar de filhos, etc.  Só faz sentido quando não estamos utilizando o mesmo recurso da máquina9290-102-24 (rev.:00) 5
  6. 6. Por que programação concorrente ?  O computador é mais rápido que seus usuários Exemplo: digitação  Bom digitador: 60 palavras /minuto  Tempo de processamento de 1 caracter = 10 s  Computador realiza 10 s de trabalho a cada 2.3 dias  Em geral várias atividades não concorrem pelos mesmos recursos: digitar, imprimir, ouvir mp3, baixar arquivos, compilar, etc.  Melhor modelamento das atividades  O próprio sistema operacional é formado por dezenas de processos concorrentes: arquitetura microkernel9290-102-24 (rev.:00) 6
  7. 7. Arquitetura Microkernel QNX File Manager CD-ROM File Manager Flash File Manager Process Manager NFS File Process File System DOS File Manager Manager Manager Managerkernel Microkernel Software buscode Device Network Neutrino Manager Manager Application Photon Network GUI Character Manager Manager Manager TCP/IP CIFS File Manager Manager 9290-102-24-002 (Rev.:00) Mqueue Manager 9290-102-24 (rev.:00) 7
  8. 8. Natureza das Aplicações  Cíclicas (Evento de tempo)  Em resposta a eventos de processo ou de operação  Sincronizadas ao mudo externo  De tempo real9290-102-24 (rev.:00) 8
  9. 9. Definições Básicas  Escalonamento  Scheduler = Escalonador  Time-sharing  Time-slice = Quantum  Tasks: implementadas como processos ou threads  Colaborativo x Preemptivo9290-102-24 (rev.:00) 9
  10. 10. Preempção9290-102-24 (rev.:00) 10
  11. 11. Chaveamento de Contexto Chaveamento Chaveamento Processo A de contexto Processo B de contexto Processo A  A programação concorrente é mais ineficiente que a programação seqüencial. Por que ?  Só faz sentido quando não estamos utilizando o mesmo recurso da máquina  Processor bound (intensivo) x I/O bound9290-102-24 (rev.:00) 11
  12. 12. Instruções Atômicas X : = X + 1; CPU CISC CPU RISC inc <X> ld AX, <X> inc <AX> ld <X>, AX  Instruções atômicas são instruções que o processador executa como uma operação indivisível, isto é, sem interrupção9290-102-24 (rev.:00) 12
  13. 13. CISC x RISC CISC = Complete Instruction Set Computer  Instruction Set com grande repertório de instruções  Instruções gastam vários clocks para completar  Processador possui poucos registradores internos  Instruções envolvem memória externa  ALU para inteiros apenas  Operações floating point executadas em co-processador externo  Instruções utilizam microcódigo  Exemplo: Intel 803869290-102-24 (rev.:00) 13
  14. 14. CISC x RISC RISC = Reduced Instruction Set Computer  Instruction Set com pequeno repertório de instruções  Instruções executam em apenas 1 ou menos ciclos de clock  Processador possui muitos registradores internos  Instruções buscam dados externos para registardor interno e operam com estes registardores  Operações com inteiros e floating points  Instruções não utilizam microcódigo  Arquitetura pipeline e superescalar  Exemplo: CPU Sparc SUN9290-102-24 (rev.:00) 14
  15. 15. Pipeline  Várias operações simultâneas 9290-102-24-003 (Rev.:00)  A CPU trabalha como uma linha de montagem9290-102-24 (rev.:00) 15
  16. 16. Superescalar  Duplicando a linha de montagem 9290-102-24-003 (Rev.:00)9290-102-24 (rev.:00) 16
  17. 17. Mais Conceitos  S.O. Multitasking  Multiprogramação (multitasking)  S.O. Multiusuário  S.O. Multiprocessado  Programação paralela  Multiprocessamento Simétrico (SMP)  Programação Distribuída9290-102-24 (rev.:00) 17
  18. 18. Interrelação entre Processos  Não dependentes  Contenção  Cooperação P2 P1 P1 P1 P3 Mutex P2 P29290-102-24 (rev.:00) 18
  19. 19. O Problema Fundamental da Programação Concorrente Processo A Processo B int ConfirmaReserva(int PosicaoDesejada) int ConfirmaReserva(int PosicaoDesejada) { A1: if (MapaOcupacao[PosicaoDesejada]== LIVRE) { B1: if (MapaOcupacao[PosicaoDesejada]== LIVRE) A2: MapaOcupacao[PosicaoDesejada]=OCUPADO; B2: MapaOcupacao[PosicaoDesejada]= OCUPADO; else return(FALHA); else return(FALHA); return(SUCESSO); return(SUCESSO); } } L L L O L L L L O L L O O L O O9290-102-24 (rev.:00) 19
  20. 20. O Problema Fundamental da Programação Concorrente Caso Intercalação Resultado 1 A1, A2, B1, B2 Programa A retorna SUCESSO e o Programa B retorna FALHA 2 B1, B2, A1, A2 Programa A retorna FALHA e o Programa B retorna SUCESSO Programa A retorna SUCESSO e o Programa B retorna 3 A1, B1, A2, B2 SUCESSO Programa A retorna SUCESSO e o Programa B retorna 4 B1, A1, A2, B2 SUCESSO Programa A retorna SUCESSO e o Programa B retorna 5 A1, B1, B2, A2 SUCESSO Programa A retorna SUCESSO e o Programa B retorna 6 B1, A1, B2, A2 SUCESSO  Conclusão: Na programação concorrente não basta que cada programa seqüencial esteja logicamente correto. É necessário que produza um resultado correto para qualquer ordem de intercalação de suas instruções com uma outra instância do mesmo programa ou com qualquer outro programa em execução. Isto não exclui o próprio sistema operacional9290-102-24 (rev.:00) 20
  21. 21. Exercícios: Mandelbrot Set zn +1 = z 2 n + p p = x + jy (real_max, imag_max) (0,0) coluna y P Plano complexo Tela linha T x (real_min, imag_min) (xmax, ymax)9290-102-24 (rev.:00) 21
  22. 22. Exercícios: Mandelbrot Set  Por que este problema é bom para ser dividido entre diversos processadores ?9290-102-24 (rev.:00) 22
  23. 23. Exercícios  Como desenhar um círculo na tela do computador de forma eficiente e dividindo a tarefa entre pelo menos duas tarefas ? x2 + y2 = r2 para 0<x<r x = r cos θ y = r sin θ para 0<θ<45o9290-102-24 (rev.:00) 23
  24. 24. Exercícios void MidPointCircle(int raio, int valor) // Fonte: Foley van Damn // Assume centro do círculo na origem // Algoritmo usando apenas aritmética de inteiros { int x = 0; int y = raio; int d = 1 – raio; CirclePoints (x, y, valor); while (y > x) { if (d < 0) // Seleciona E d += 2 * x + 3; else { // Seleciona SE d += 2 * (x-y) + 5; y--; Princípio: } // Compare dist de M ao centro com R2 x++; if M é interno ao círculo CirclePoints(x, y, valor); escolha E } // while else escolha SE } // MidpointCircle9290-102-24 (rev.:00) 24
  25. 25. Exercícios void CirclePoints(int X, int Y, int valor) begin PutPixel(CX + X, CY + Y, valor); // ponto no octante 1 PutPixel(CX - X, CY + Y, valor); // ponto no octante 4 PutPixel(CX - X, CY - Y , valor); // ponto no octante 5 PutPixel(CX + X, CY – Y, valor); // ponto no octante 8 PutPixel(CX + Y, CY + X, valor); // ponto no octante 2 PutPixel(CX - Y, CY + X, valor); // ponto no octante 3 PutPixel(CX - Y, CY – X, valor); // ponto no octante 6 PutPixel(CX + Y, CY – X, valor) // ponto no octante 7 end; // Circle Points9290-102-24 (rev.:00) 25
  26. 26. Exercícios - Sort  Colocar os números abaixo em ordem crescente usando um algoritmo que permita dividir a tarefa entre dois ou mais processos. Qual o algoritmo clássico mais aderente a este problema ?  N = { 737, 4, 4354, 22, 54, 742, 672, 223, 42, 3, 77, 122, 4554, 675, 1, 564, 12, 343 }9290-102-24 (rev.:00) 26
  27. 27. Exercícios - Escalonamento  Um casal deve realizar três tarefas: cortar a grama, passar o aspirador no chão e dar banho e trocar o bebê. Todas as três tarefas levam trinta minutos para ser realizadas e podem ser executadas por uma pessoa individualmente. Como conseguir a melhor alocação destas tarefas no tempo de tal forma a terminar o mais rápido possível ?9290-102-24 (rev.:00) 27
  28. 28. Exercícios - Escalonamento  Quatro pessoas têm de atravessar uma passarela bamba à noite. Há muitos buracos na passarela, que suporta apenas duas pessoas de cada vez (mais do que isso ela cai). O grupo deve usar uma lanterna para guiar seus passos; caso contrário, acabará caindo num buraco e morrendo. Só há uma lanterna. As quarto pessoas andam a velocidades diferentes. Adam consegue cruzar a passarela em um minuto; Larry, em dois minuto; Edge leva cinco minutos; e o mais lento, Bono, precisa de dez minutos. A passarela vai ruir dentro de exatamente dezessete minutos. Como os quarto podem atravessá-la ?9290-102-24 (rev.:00) 28
  29. 29. Muito Obrigado Constantino Seixas Filho constantino.seixas@task.com.br9290-102-24 (rev.:00) 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×