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

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

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

Apresentações semelhantes


Apresentação em tema: "Concorrência e Occam Paulo Abadie Guedes 09/2002."— Transcrição da apresentação:

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

2 A linguagem Occam n Estrutura –Introdução –Características –Sintaxe da linguagem –Exemplos –Occam na prática –O compilador KROC

3 Introdução n A linguagem Occam –Homenagem a William of Ockham n Occam’s Razor –“Things should be complicated, but no more than necessary” –A explicação mais simples, em geral, tende a ser a correta –Keep it simple Fonte:

4 Características n Criada para considerar paralelismo –Construtores na linguagem para denotar operações com execução em paralelo n Linguagem com base formal –Baseada em CSP n Sintaxe simples e limpa –Processamento, comunicação e controle

5 Communicant Sequential Processes n Base formal para a linguagem Occam n Modelo de processamento paralelo n Processos seqüenciais n Cooperação: –Comunicação explícita (troca de dados) –Não existem variáveis compartilhadas

6 Occam e CSP - Propriedades n Permite a verificação de propriedades –Análise e transformação de programas n Como garantir que: –Não haverá nunca deadlock? –Não ocorrem condições de corrida? –Não haverá starvation e livelock? n Conveniente para paralelismo –PISH e Co-Design:Implementação HW/SW

7 Concorrência, Paralelismo e Tempo Real n Concorrência –Compartilhamento da CPU n Paralelismo –Várias unidades de processamento –Execução de operações ao mesmo tempo n Tempo real –Processamento no tempo certo –Forte interação com o ambiente

8 Concorrência n Compartilhamento da CPU –Simulação do paralelismo n S.O. é responsável pelo escalonamento –Melhor esforço n Objetivos: –Melhor uso de recursos –Otimizar a resposta, na média –Interação usuário/máquina

9 Concorrência Execução Seqüencial Fonte: Introduction to POSIX Threads Programming

10 Concorrência Execução Concorrente Fonte: Introduction to POSIX Threads Programming

11 Concorrência Fonte: Introduction to POSIX Threads Programming

12 Paralelismo n Diversas unidades de processamento –Execução das operações em paralelo n Escalonamento –S.O. + usuário/programa determinam o escalonamento –Otimizado para carga de trabalho pesada n Linguagens –Fortran, C e assembler

13 Paralelismo n Objetivos –Velocidade máxima –Minimizar comunicação e espera –Problemas com processamento pesado n Requer hardware especializado –Algumas formas: Temporal: pipelines (arquitetura escalar) Espacial: dupla canalização (superescalar)

14 Paralelismo n Exemplo –Problemas –Máquinas paralelas n Grand Challenge Problems –Modelagem meteorológica e física –Seqüenciamento e análise de DNA –...

15 Tempo Real n Concorrência ou paralelismo n Forte interação com o ambiente –Em geral, são sistemas embutidos n Objetivo: –Garantir a resposta certa nos tempos corretos, mesmo no pior caso possível –Controle, e não apenas velocidade

16 Tempo Real n Aplicações específicas n Escalonamento –HW, SW e S.O. próprios –Em geral, criados pelo desenvolvedor –Análise profunda dos cenários de execução n Garantias funcionais e temporais –Soft Real Time X Hard Real Time n Existem centenas de kernels para RT

17 Tempo Real n Exemplos –Circuitos de proteção Monitoração contra sobrecarga da rede elétrica Falhas de suprimento de energia: No-break –Freios ABS –Injeção eletrônica –Sistemas de navegação e controle aéreo, terrestre, ferroviário e espacial –Sondas espaciais e robôs Para trabalho em ambiente hostil –Sistemas de monitoração e suporte vital

18 A linguagem Occam

19 n Baseada em processos seqüenciais n Comunicação explícita via canais n Tipos fortes n Permite descrever naturalmente –Execução seqüencial –Execução paralela –Comunicação –Sincronização

20 A linguagem Occam n Tipos básicos –Inteiro (INT, INT16, INT32, INT64) INT size: –Byte –Fracionário (REAL,REAL32, REAL64) n Outras primitivas da linguagem –TIMER –Canal CHAN OF BYTE stdin: –Processo Pode ser uma composição de outros processos

21 A linguagem Occam n Processos básicos –Atribuição –Seleção (if) e iteração (for e while) –Stop, Skip –Combinação de outros processos Seq: execução seqüencial Par: execução em paralelo –Comunicação Send/receive (? e !) Canais de comunicação

22 n Sintaxe baseada na posição do texto –Identação muda a semântica do programa –Ex.: IF ( x > 1) x = 0 TRUE SKIP A linguagem Occam Deslocado 2 caracteres à direita

23 Composição de processos n Execução em seqüência SEQ p1 p2 n Execução em paralelo PAR p1 p2 n Procedimentos PROC meuProc(INT x, VAL INT i) SEQ p1(x, i) p2(x) : n Funções INT FUNCTION inc(INT x) INT aux: VALOF SEQ aux = (x + 1) RESULT aux :

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]) :

25 Passagem de parâmetros n Por valor ou cópia ( PROC meuProc(VAL INT x) ) –Não altera variáveis externas n Por referência ( PROC meuProc(INT x) ) –Efeitos colaterais visíveis n Compilador usa regras estritas –Constantes passadas apenas por valor n Conversão explícita de tipos –Mesmo conversão de int para float é explícita

26 Executando Occam n Processador específico –O Transputer (INMOS) –Processamento paralelo n Compilação –Fonte occam => executável linux –Processamento concorrente

27 O Transputer

28 O Compilador KROC n Kent Retargettable Occam Compiler –Compilador para a linguagem Occam 2.0 –Programas usam concorrência –Código aberto, sob a licensa GNU n Disponível no CIn na rede Linux –Suporte bom à linguagem Occam –Configuração do compilador: source /opt/kroc/bin/setup.csh n A página do KROC está em –http://www.cs.ukc.ac.uk/projects/ofa/kroc/

29 O Compilador KROC n Compilador de linha de comando n Desenvolvimento –Criar o código fonte (arquivo.occ) –Compilar (Occam => C => arquivo objeto) –Ligar e executar diretamente Não precisa de um ambiente para execução n O programa –Executável no formato ELF –Depende apenas das bibliotecas

30 O Compilador KROC n Flags e parâmetros –Executável a ser gerado: “-o ” –Depuração Flag “-d”. Útil inclusive para parar processos “travados” –Geração de arquivos intermediários –Flags para passar parâmetros ao gcc –Verbose mode (“-v”) –Mais opções: digitar “kroc” n Uso do kroc na prática –Usar um makefile (just “make” it!) –Para criar o makefile: kmakef

31 Opções do compilador Kroc - 1 bonito:~> kroc KROC version 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

32 Opções 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:~>

33 KROC – Programas Auxiliares n Compilação –Executáveis kroc e occ21 n Criação de bibliotecas –Occam: ilibr –Unix: ar e ranlib n Análise do conteúdo dos executáveis –tdump n Depuração e desenvolvimento –gcc + gdb –kmakef (criação automática de makefiles)

34 Compilando o Hello Occam n Fonte n Compilação n Execução Arquivos Fonte (hello.occ) Arquivos Fonte em C Compilador Kroc Compilador gcc Arquivos objeto (.o) Bibliotecas C Bibliotecas Occam Executável

35 Métodos Nativos n Integração de C com Occam n Interface de programação –Permite usar bibliotecas e funções em C n Uso: –Criar o fonte.c –Criar o fonte.occ –Criar a interface Occam/C

36 O Comando “make” n Programa auxiliar –Automatizar tarefas repetitivas n O make –Analisa dependências entre os alvos –Executa as regras na ordem correta –Apenas executa o que for necessário n Vantagens –Facilita o processo de desenvolvimento –Facilita compilação e instalação

37 n Função –Guiar a ordem de execução das tarefas –Algoritmo para a compilação n Lista de regras de execução –Formato das regras: : O arquivo Makefile Tabs separando os itens

38 O arquivo Makefile n Alvo (destino) –Arquivo a ser criado –Ação a ser realizada ou rótulo intermediário n Dependências –Pré-condições para a regra –Arquivos ou outros alvos n Ações –Comandos para a criação de cada alvo

39 n Regra: Hello:hello.occ kroc hello.occ -o hello -d n Usando o make: –Criar o arquivo fonte (hello.occ) –Criar o makefile –Executar “make” O arquivo Makefile Dependência: Arquivo fonte Ação para a criação do alvo Alvo

40 Make - Outras Opções n Símbolo “#” usado para comentários n Parâmetros –Definição: FONTE=hello.occ –Uso: $(FONTE) n Regras sem dependências: –Sempre executarão clean: rm -f hello n Execução completa –make Executa a primeira regra n Execução específica –make Executa a regra

41 Um Makefile Realista n Estrutura geral de um bom makefile: –# Criado por... em... para... –Parâmetros –Help (texto com a forma de uso) –Alvo principal (em geral, “all”) –Lista de alvos secundários –Regras para manutenção clean => eliminar arquivos intermediários cleanAll => eliminar todos os arquivos gerados n Usar o kmakef para criar o makefile

42 Um Makefile Realista bonito:~/grad/Mestrado/mp3/desenvolvimento/copy_occ> more makefile # Makefile built by kmakef for pag on Tue Jun 26 17:24: # with 'kmakef copy' # KROC=kroc ILIBR=ilibr AR=ar RANLIB=ranlib DEL=rm -f LIB_DIR=/opt/kroc.old/lib INC_DIR=$(LIB_DIR) # Default - build all targets all: copy LIBS=$(LIBDIR)/libfile.a $(LIB_DIR)/libhostio.a $(LIB_DIR)/libcourse.a $(LIB_DIR)/libstring.a $(LIB_DIR)/libconvert.a INCS=$(INC_DIR)/filelib.inc $(INC_DIR)/hostio.inc $(INC_DIR)/consts.inc clean: -$(DEL) copy *.tce *.o *.lib *.a *.s *.kt* *~ #copy: copy.occ $(INCS) $(LIBS) # $(KROC) copy.occ -o copy -lfile -lhostio -lcourse -lstring -lconvert -d copy: copy.occ /opt/kroc.old/lib/inc/filelib.inc /opt/kroc.old/lib/libfile.a \ /opt/kroc.old/lib/inc/hostio.inc /opt/kroc.old/lib/libhostio.a \ /opt/kroc.old/lib/inc/consts.inc /opt/kroc.old/lib/libcourse.a \ /opt/kroc.old/lib/libstring.a /opt/kroc.old/lib/libconvert.a $(KROC) copy.occ -o copy -lfile -lhostio -lcourse -lstring -lconvert -d

43 Documentação n Arquivos do kroc –Manuais de uso em formato PostScript (ps) –Exemplos de aplicativos em Occam –Código do compilador kroc n Livro sobre Occam 2.0 –Diretório de exemplos da ferramenta n Help on-line: páginas sobre o KROC –http://wotug.ukc.ac.uk/kroc/ –http://www.cs.ukc.ac.uk/projects/ofa/kroc/

44 Exercício prático n Configurar o ambiente n Criar o arquivo fonte(hello.occ) n Compilar manualmente e executar n Criar o makefile n Compilar usando o make –Hello.occ –Exemplo de comunicação –Servidor WEB em Occam

45 Referências n Kent Retargetable Occam TM Compiler (KRoC) –http://www.cs.ukc.ac.uk/projects/ofa/kroc/ n Compilers for the Occam Language –http://wotug.ukc.ac.uk/occam/compilers/index.shtml n The WWW Virtual Library (http://www.vlib.org) –The Occam archive –The CSP archive –The transputer archive n William of Ockham –http://wotug.ukc.ac.uk/parallel/www/occam/occam-bio.html

46 Referências n Parallel Programming in C for the Transputer –http://cs.smith.edu/~thiebaut/transputer/toc.html n Introduction to POSIX Threads Programming –http://www.llnl.gov/computing/tutorials/workshops/workshop/ pthreads/MAIN.html n Concurrent and Real-time Systems: the CSP Approach (Steve Schneider) –http://www.cs.rhbnc.ac.uk/books/concurrency/ n Professor C.A.R. Hoare, FRS –http://users.comlab.ox.ac.uk/tony.hoare/


Carregar ppt "Concorrência e Occam Paulo Abadie Guedes 09/2002."

Apresentações semelhantes


Anúncios Google