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
Livro




   Seixas, Constantino e Szuster, Marcelo, Programação
    Concorrente em ambiente WNT: Uma visão de automação,
    Editora da UFMG, 2003


9290-102-24 (rev.:00)                                      2
Filosofia Geral – Modelo
   Hierárquico




9290-102-24 (rev.:00)         3
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
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áquina




9290-102-24 (rev.:00)                                              5
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 microkernel




9290-102-24 (rev.:00)                                          6
Arquitetura Microkernel


                            QNX
                            File
                           Manager                    CD-ROM
                                                        File
                                                      Manager                     Flash
                                                                                   File
                                                                                 Manager
              Process
              Manager                                              NFS File                               Process              File System
                               DOS File
                                                                   Manager                                Manager               Manager
                               Manager




kernel
                                                                                                                        Microkernel

                                                Software bus


code

                                                                                                           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
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 real




9290-102-24 (rev.:00)                                  8
Definições Básicas

   Escalonamento

   Scheduler = Escalonador

   Time-sharing

   Time-slice = Quantum

   Tasks: implementadas como processos ou threads

   Colaborativo x Preemptivo




9290-102-24 (rev.:00)                                9
Preempção




9290-102-24 (rev.:00)   10
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 bound




9290-102-24 (rev.:00)                                                               11
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ção




9290-102-24 (rev.:00)                                              12
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 80386




9290-102-24 (rev.:00)                                       13
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 SUN




9290-102-24 (rev.:00)                                                 14
Pipeline

   Várias operações simultâneas




                                                9290-102-24-003 (Rev.:00)




   A CPU trabalha como uma linha de montagem
9290-102-24 (rev.:00)                                                       15
Superescalar

   Duplicando a linha de montagem




                                     9290-102-24-003 (Rev.:00)



9290-102-24 (rev.:00)                                            16
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ída




9290-102-24 (rev.:00)                                         17
Interrelação entre Processos

   Não dependentes
   Contenção
   Cooperação




                                  P2
                             P1           P1
          P1                                    P3
                                  Mutex


                        P2
                                           P2

9290-102-24 (rev.:00)                                18
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     O




9290-102-24 (rev.:00)                                                                                           19
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 operacional

9290-102-24 (rev.:00)                                                                                      20
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
Exercícios: Mandelbrot Set

                             Por que este problema
                              é bom para ser dividido
                              entre diversos
                              processadores ?




9290-102-24 (rev.:00)                               22
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<θ<45o




9290-102-24 (rev.:00)                                                23
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
  } // MidpointCircle

9290-102-24 (rev.:00)                                                                       24
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 Points




9290-102-24 (rev.:00)                                               25
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
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
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
Muito Obrigado




      Constantino Seixas Filho
      constantino.seixas@task.com.br




9290-102-24 (rev.:00)                  29

Atr cap1

  • 1.
    Engenharia de Controlee 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.
    Livro Seixas, Constantino e Szuster, Marcelo, Programação Concorrente em ambiente WNT: Uma visão de automação, Editora da UFMG, 2003 9290-102-24 (rev.:00) 2
  • 3.
    Filosofia Geral –Modelo Hierárquico 9290-102-24 (rev.:00) 3
  • 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.
    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áquina 9290-102-24 (rev.:00) 5
  • 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 microkernel 9290-102-24 (rev.:00) 6
  • 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 Manager kernel Microkernel Software bus code 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.
    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 real 9290-102-24 (rev.:00) 8
  • 9.
    Definições Básicas  Escalonamento  Scheduler = Escalonador  Time-sharing  Time-slice = Quantum  Tasks: implementadas como processos ou threads  Colaborativo x Preemptivo 9290-102-24 (rev.:00) 9
  • 10.
  • 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 bound 9290-102-24 (rev.:00) 11
  • 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ção 9290-102-24 (rev.:00) 12
  • 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 80386 9290-102-24 (rev.:00) 13
  • 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 SUN 9290-102-24 (rev.:00) 14
  • 15.
    Pipeline Várias operações simultâneas 9290-102-24-003 (Rev.:00)  A CPU trabalha como uma linha de montagem 9290-102-24 (rev.:00) 15
  • 16.
    Superescalar Duplicando a linha de montagem 9290-102-24-003 (Rev.:00) 9290-102-24 (rev.:00) 16
  • 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ída 9290-102-24 (rev.:00) 17
  • 18.
    Interrelação entre Processos  Não dependentes  Contenção  Cooperação P2 P1 P1 P1 P3 Mutex P2 P2 9290-102-24 (rev.:00) 18
  • 19.
    O Problema Fundamentalda 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 O 9290-102-24 (rev.:00) 19
  • 20.
    O Problema Fundamentalda 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 operacional 9290-102-24 (rev.:00) 20
  • 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.
    Exercícios: Mandelbrot Set  Por que este problema é bom para ser dividido entre diversos processadores ? 9290-102-24 (rev.:00) 22
  • 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<θ<45o 9290-102-24 (rev.:00) 23
  • 24.
    Exercícios voidMidPointCircle(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 } // MidpointCircle 9290-102-24 (rev.:00) 24
  • 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 Points 9290-102-24 (rev.:00) 25
  • 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.
    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.
    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.
    Muito Obrigado Constantino Seixas Filho constantino.seixas@task.com.br 9290-102-24 (rev.:00) 29