concorrência e occam paulo abadie guedes 09/2002

Download Concorrência e Occam Paulo Abadie Guedes 09/2002

Post on 19-Apr-2015

104 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Concorrncia e Occam Paulo Abadie Guedes 09/2002
  • Slide 2
  • A linguagem Occam n Estrutura Introduo Caractersticas Sintaxe da linguagem Exemplos Occam na prtica O compilador KROC
  • Slide 3
  • Introduo n A linguagem Occam Homenagem a William of Ockham n Occams Razor Things should be complicated, but no more than necessary A explicao mais simples, em geral, tende a ser a correta Keep it simple Fonte: http://wotug.ukc.ac.uk/parallel/www/occam/occam-bio.html
  • Slide 4
  • Caractersticas n Criada para considerar paralelismo Construtores na linguagem para denotar operaes com execuo em paralelo n Linguagem com base formal Baseada em CSP n Sintaxe simples e limpa Processamento, comunicao e controle
  • Slide 5
  • Communicant Sequential Processes n Base formal para a linguagem Occam n Modelo de processamento paralelo n Processos seqenciais n Cooperao: Comunicao explcita (troca de dados) No existem variveis compartilhadas
  • Slide 6
  • Occam e CSP - Propriedades n Permite a verificao de propriedades Anlise e transformao de programas n Como garantir que: No haver nunca deadlock? No ocorrem condies de corrida? No haver starvation e livelock? n Conveniente para paralelismo PISH e Co-Design:Implementao HW/SW
  • Slide 7
  • Concorrncia, Paralelismo e Tempo Real n Concorrncia Compartilhamento da CPU n Paralelismo Vrias unidades de processamento Execuo de operaes ao mesmo tempo n Tempo real Processamento no tempo certo Forte interao com o ambiente
  • Slide 8
  • Concorrncia n Compartilhamento da CPU Simulao do paralelismo n S.O. responsvel pelo escalonamento Melhor esforo n Objetivos: Melhor uso de recursos Otimizar a resposta, na mdia Interao usurio/mquina
  • Slide 9
  • Concorrncia Execuo Seqencial Fonte: Introduction to POSIX Threads Programming
  • Slide 10
  • Concorrncia Execuo Concorrente Fonte: Introduction to POSIX Threads Programming
  • Slide 11
  • Concorrncia Fonte: Introduction to POSIX Threads Programming
  • Slide 12
  • Paralelismo n Diversas unidades de processamento Execuo das operaes em paralelo n Escalonamento S.O. + usurio/programa determinam o escalonamento Otimizado para carga de trabalho pesada n Linguagens Fortran, C e assembler
  • Slide 13
  • Paralelismo n Objetivos Velocidade mxima Minimizar comunicao e espera Problemas com processamento pesado n Requer hardware especializado Algumas formas: Temporal: pipelines (arquitetura escalar) Espacial: dupla canalizao (superescalar)
  • Slide 14
  • Paralelismo n Exemplo Problemas Mquinas paralelas n Grand Challenge Problems Modelagem meteorolgica e fsica Seqenciamento e anlise de DNA ...
  • Slide 15
  • Tempo Real n Concorrncia ou paralelismo n Forte interao com o ambiente Em geral, so sistemas embutidos n Objetivo: Garantir a resposta certa nos tempos corretos, mesmo no pior caso possvel Controle, e no apenas velocidade
  • Slide 16
  • Tempo Real n Aplicaes especficas n Escalonamento HW, SW e S.O. prprios Em geral, criados pelo desenvolvedor Anlise profunda dos cenrios de execuo n Garantias funcionais e temporais Soft Real Time X Hard Real Time n Existem centenas de kernels para RT
  • Slide 17
  • Tempo Real n Exemplos Circuitos de proteo Monitorao contra sobrecarga da rede eltrica Falhas de suprimento de energia: No-break Freios ABS Injeo eletrnica Sistemas de navegao e controle areo, terrestre, ferrovirio e espacial Sondas espaciais e robs Para trabalho em ambiente hostil Sistemas de monitorao e suporte vital
  • Slide 18
  • A linguagem Occam
  • Slide 19
  • n Baseada em processos seqenciais n Comunicao explcita via canais n Tipos fortes n Permite descrever naturalmente Execuo seqencial Execuo paralela Comunicao Sincronizao
  • Slide 20
  • A linguagem Occam n Tipos bsicos Inteiro (INT, INT16, INT32, INT64) INT size: Byte Fracionrio (REAL,REAL32, REAL64) n Outras primitivas da linguagem TIMER Canal CHAN OF BYTE stdin: Processo Pode ser uma composio de outros processos
  • Slide 21
  • A linguagem Occam n Processos bsicos Atribuio Seleo (if) e iterao (for e while) Stop, Skip Combinao de outros processos Seq: execuo seqencial Par: execuo em paralelo Comunicao Send/receive (? e !) Canais de comunicao
  • Slide 22
  • n Sintaxe baseada na posio do texto Identao muda a semntica do programa Ex.: IF ( x > 1) x = 0 TRUE SKIP A linguagem Occam Deslocado 2 caracteres direita
  • Slide 23
  • Composio de processos n Execuo em seqncia SEQ p1 p2 n Execuo em paralelo PAR p1 p2 n Procedimentos PROC meuProc(INT x, VAL INT i) SEQ p1(x, i) p2(x) : n Funes INT FUNCTION inc(INT x) INT aux: VALOF SEQ aux = (x + 1) RESULT aux :
  • Slide 24
  • Exemplo: #INCLUDE "hostio.inc" #USE "hostio.lib" PROC today (CHAN OF BYTE stdin, stdout, stderr) CHAN OF SP fs, ts: [80]BYTE textline: SEQ [textline FOR 18] := "The date/time is: " so.today.ascii (fs, ts, FALSE, TRUE, [textline FROM 18 FOR 19]) so.write.string.nl (fs, ts, [textline FOR 35]) :
  • Slide 25
  • Passagem de parmetros n Por valor ou cpia ( PROC meuProc(VAL INT x) ) No altera variveis externas n Por referncia ( PROC meuProc(INT x) ) Efeitos colaterais visveis n Compilador usa regras estritas Constantes passadas apenas por valor n Converso explcita de tipos Mesmo converso de int para float explcita
  • Slide 26
  • Executando Occam n Processador especfico O Transputer (INMOS) Processamento paralelo n Compilao Fonte occam => executvel linux Processamento concorrente
  • Slide 27
  • O Transputer
  • Slide 28
  • O Compilador KROC n Kent Retargettable Occam Compiler Compilador para a linguagem Occam 2.0 Programas usam concorrncia Cdigo aberto, sob a licensa GNU n Disponvel no CIn na rede Linux Suporte bom linguagem Occam Configurao do compilador: source /opt/kroc/bin/setup.csh n A pgina do KROC est em http://www.cs.ukc.ac.uk/projects/ofa/kroc/
  • Slide 29
  • O Compilador KROC n Compilador de linha de comando n Desenvolvimento Criar o cdigo fonte (arquivo.occ) Compilar (Occam => C => arquivo objeto) Ligar e executar diretamente No precisa de um ambiente para execuo n O programa Executvel no formato ELF Depende apenas das bibliotecas
  • Slide 30
  • O Compilador KROC n Flags e parmetros Executvel a ser gerado: -o Depurao Flag -d. til inclusive para parar processos travados Gerao de arquivos intermedirios Flags para passar parmetros ao gcc Verbose mode (-v) Mais opes: digitar kroc n Uso do kroc na prtica Usar um makefile (just make it!) Para criar o makefile: kmakef
  • Slide 31
  • Opes do compilador Kroc - 1 bonito:~> kroc KROC version 1.3.2 targeting i686-pc-linux-gnu (driver V1.38) Usage: kroc [options] [occam sources/pre-compiled sources] Options: -b, --brief Give brief occ21 error messages -c, --compile Compile source to objects, do not link -s, --strict Strict checking mode -d Enable post-mortem debugging -di Enable insert debugging (implied by -d) -h, --help Print this message and exit -IDIRECTORY Search DIRECTORY for occam libs & includes, C headers -k, --keep-temp Keep temporary files -V, --version Print version -l, --library Generate.so shared library -lNAME Link with native library libNAME.a -LDIRECTORY Search DIRECTORY for native libraries
  • Slide 32 ">
  • Opes do compilador Kroc - 2 -n, --dry-run Do not run any commands; just print them. --oc-opts=opts Use these occam compiler (occ21) options --oc-opts opts "" --cc-opts=opts Use these C compiler (gcc) options --cc-opts opts "" -nw, --no-warn Give no warnings from occ21 -nd, --no-dynmem Disable dynamic memory support -oFILE, -o FILE Place output in file FILE -p, --pre-compile Pre-compile occam source to.ktx files -t2, -t4, -t8, -t9 Set processor compilation class (default t8) -O --optimise Enable optimisations [now default] -P --pause Event/schedule check at loop-ends and backward jumps -io, --inline-io Inline input/output kernel calls -is, --inline-sched Inline parts of the scheduler -it, --inline-ldtimer Inline load-timer instruction -v, --verbose Show commands run during compilation -w, --warn Additional warnings from occ21 -X5 Enable MOBILEs and extended input (experimental) --oos Compile for OOS (experimental) bonito:~>
  • Slide 33
  • KROC Programas Auxiliares n Compilao Executveis kroc e occ21 n Criao de bibliotecas Occam: ilibr Unix: ar e ranlib n Anlise do contedo dos executveis tdump n Depurao e desenvolvimento gcc + gdb kmakef (criao automtica de makefiles)
  • Slide 34
  • Compilando o Hello Occam n Fonte n Compilao n Execuo Arquivos Fonte (hello.occ) Arquivos Fonte em C Compilador Kroc Compilador gcc Arquivos objeto (.o) Bibliotecas C Bibliotecas Occam Executvel
  • Slide 35
  • Mtodos Nativos n Integrao de C com Occam n Interface de programao Permite usar bibliotecas e funes em C n Uso: Criar o fonte.c Criar o fonte.occ Criar a interface Occam/C
  • Slide 36
  • O Comando make n Programa auxiliar Automatizar tarefas repetitivas n O make Analisa dependncias entre os alvos Executa as regras na ordem correta Apenas executa o que for necessrio n Vantagens Facilita o processo de desenvolvimento Facilita compilao e instalao