Programação em sistemas de memória distribuída

Tamanho: px
Começar a partir da página:

Download "Programação em sistemas de memória distribuída"

Transcrição

1 Programação em sistemas de memória distribuída (Message-Passing Computing) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.1

2 Programação distribuída requer bibliotecas com rotinas para comunicação por mensagens. São necessários dois mecanismos base: 1. Um método para criar processos para execução em computadores/processadores diferentes 2. Um método para enviar e receber mensagens. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.2

3 Multiple program, multiple data (MPMD) model Source fi le Source fi le Compile to suit processor Executable Processor 0 Processor p - 1 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.3

4 Single Program Multiple Data (SPMD) model Diferentes processos construídos num único programa. Instruções de controlo selecionam diferentes partes do código a serem executadas por cada processo. Todos os executáveis começam ao mesmo tempo (criação estática).. Basic MPI w a y Source fi le Compile to suit processor Ex ecutab les Processor 0 Processor p - 1 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.4

5 Multiple Program Multiple Data (MPMD) Model Programas separados para cada processador. Um processador executa o processo master. Os outros processos são criados dinamicamente pelo master. Process 1 spawn(); Star t e x ecution of process 2 Process 2 Time Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.5

6 Rotinas para comunicação ponto a ponto: Send and Receive Envio de uma mensagem entre processos: Process 1 Process 2 x y send(&x, 2); Mo v ement of data recv(&y, 1); Sintaxe genérica) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.6

7 Comunicação por mensagens síncrona Rotinas que só retornam quando a transferência da mensagem está completa. Rotina de envio (send) síncrona Antes de enviar a mensagem, espera até que a mesma possa ser aceite pelo processo receptor. Rotina de receção (receive) síncrona Espera até que a mensagem esperada chegue. Rotinas síncronas executam duas ações: transferem dados e sincronizam processos. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.7

8 Synchronous send() and recv() using 3-way protocol Process 1 Process 2 Time Suspend process Both processes contin ue send(); (a) When send() Request to send Ac kno wledgment recv(); Message occurs bef ore recv() Process 1 Process 2 Time Both processes contin ue send(); (b) When recv() Request to send Message Ac kno wledgment occurs bef ore send() recv(); Suspend process Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.8

9 Comunicação por mensagens assíncrona Rotinas não esperam que a comunicação termine antes de retornarem. É necessário um sistema de armazenamento de mensagens. Mais do que uma versão, dependendo da semântica de retorno. Geralmente não sincronizam processos mas permitem aumentar o paralelismo. Devem ser usadas com cuidado. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.9

10 Blocking versus Non-Blocking em MPI Blocking retornam após as operações locais serem completadas, a transferência da mensagem pode não estar completa. Non-blocking retornam imediatamente. Assume que os dados a transferir não são alterados por outras instruções antes de serem transferidos. Assegurar isso é da responsabilidade do programador. Os termos blocking / non-blocking podem ter diferentes interpretações, dependendo da implementação. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.10

11 Rotinas que retornam antes da mensagem ser transferida: Necessário um Buffer de mensagens entre a origem e o destino: Process 1 Process 2 Time Contin ue process send(); Message b uff er recv(); Read message b uff er Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.11

12 Rotinas assíncronas (blocking) que passam a rotinas síncronas Quando as operações locais estão completas e a mensagem está armazenada em segurança, o emissor prossegue o seu trabalho. O buffer tem tamanho finito, pode acontecer que a rotina de envio bloqueie porque o buffer está cheio. Nesse caso, a rotina de send é suspensa até que o buffer esteja disponível, i.e., a rotina comporta-se como se fosse síncrona. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.12

13 Etiquetas (tags) em mensagens Usadas para diferenciar mensagens de diferentes tipos. A etiqueta é enviada com a mensagem. Se a mensagem pode ser qualquer, poderá ser usado um wild card na mensagem. Assim um receive vai corresponder a qualquer send. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.13

14 Exemplo de uma Message Tag Envio da mensagem, x, com a tag 5 pelo processo 1 para o processo 2 sendo atribuída a y: Process 1 Process 2 x y send(&x,2, 5 ); Mo v ement of data recv(&y,1, 5 ); Espera mensagem do processo 1 com a tag 5 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.14

15 Rotinas de Grupo Existem rotinas que enviam mensagens para um grupo de processos ou que recebem mensagens de um grupo de processos. Mais eficiente do que usar rotinas de comunicação ponto a ponto separadamente. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.15

16 Broadcast Envio de mensagens a todos os processos relacionados com o problema a resolver. Multicast enviar a mesma mensagem a um grupo prédefinido de processos. Process 0 Process 1 Process p - 1 data data data Action buf Code bcast(); bcast(); bcast(); MPI f or m Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.16

17 Scatter Enviar cada elemento de um array no processo root para outro processo. Conteúdo da posição i do array é enviado para o processo i. Process 0 Process 1 Process p - 1 data data data Action buf Code scatter(); scatter(); scatter(); MPI f or m Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.17

18 Gather Um processo recolhe valores individuais de um conjunto de processos. Process 0 Process 1 Process p - 1 data data data Action buf Code gather(); gather(); gather(); MPI f or m Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.18

19 Reduce Operação de gather combinada com uma operação aritmética ou lógica. Exemplo: valores são recolhido e adicionados no processo root: Process 0 Process 1 Process p - 1 data data data Action buf + Code reduce(); reduce(); reduce(); MPI f or m Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. All rights reserved. 2.19

20 2.20 Modelos híbridos de programação CPU CPU CPU CPU threading memory threading memory CPU CPU CPU CPU network MPI MPI MPI MPI CPU CPU CPU CPU threading memory threading memory CPU CPU CPU CPU

21 2.21 Modelos híbridos de programação GPU C U D A GPU O P E N C L CPU CPU CPU CPU threading memory threading memory CPU CPU CPU CPU network MPI MPI

22 Programação distribuída em python módulo multiprocessing #Criar um processo: import multiprocessing def function(i): print ('called function in process: %s' %i) return if name == ' main ': Process_jobs = [] for i in range(5): p = multiprocessing.process(target=function, args=(i,)) Process_jobs.append(p) p.start() # iniciar execução p.join() # esperar que termine 2.22

23 2.23 Programação distribuída em python módulo multiprocessing #output called function in process: 0 called function in process: 1 called function in process: 2 called function in process: 3 called function in process: 4

24 2.24 Programação distribuída em python módulo multiprocessing #Classe Process: class multiprocessing.process(group=none, target=none, name =None, args=(), kwargs={}, *, daemon=none) Permite criar um fluxo de atividade que executará num processo separado. group - só existe por compatibilidade com threading.thread target - callable object invocado pelo método run. name - nome do processo.

25 2.25 Programação distribuída em python módulo multiprocessing #Classe Process: args - tuplo com os argumentos para a invocação do target. invocation. daemon - True ou False, por omissão, o processo herda o valor do processo pai.

26 2.26 Programação distribuída em python módulo multiprocessing #Dar nome a um processo import multiprocessing import time def foo(): name = multiprocessing.current_process().name print ("Starting %s \n" %name) time.sleep(3) print ("Exiting %s \n" %name)

27 2.27 Programação distribuída em python módulo multiprocessing #Dar nome a um processo if name == ' main ': process_with_name = multiprocessing.process\ (name='foo_process', target=foo) process_with_default_name = multiprocessing.process \ (target=foo) process_with_name.start() process_with_default_name.start()

28 2.28 Programação distribuída em python módulo multiprocessing #Output Starting Process-2 Exiting Process-2 Starting foo_process Exiting foo_process

29 2.29 Programação distribuída em python módulo multiprocessing #Terminar um processo import multiprocessing import time def foo(): print ('Starting function') time.sleep(0.1) print ('Finished function')

30 2.30 Programação distribuída em python módulo multiprocessing if name == ' main ': p = multiprocessing.process(target=foo) print ('Process before execution:', p, p.is_alive()) p.start() print ('Process running:', p, p.is_alive()) p.terminate() print ('Process terminated:', p, p.is_alive()) p.join() print ('Process joined:', p, p.is_alive()) print ('Process exit code:', p.exitcode)

31 2.31 Programação distribuída em python módulo multiprocessing #output Process before execution: <Process(Process-1, initial)> False Process running: <Process(Process-1, started)> True Process terminated: <Process(Process-1, started)> True Process joined: <Process(Process-1, stopped[sigterm])> False Process exit code: -15

32 Programação distribuída em python módulo multiprocessing if name == ' main ': p = multiprocessing.process(target=foo) print ('Process before execution:', p, p.is_alive()) p.start() print ('Process running:', p, p.is_alive()) time.sleep(5) p.terminate() print ('Process terminated:', p, p.is_alive()) p.join() print ('Process joined:', p, p.is_alive()) print ('Process exit code:', p.exitcode) 2.32

33 2.33 Programação distribuída em python módulo multiprocessing #output Process before execution: <Process(Process-1, initial)> False Process running: <Process(Process-1, started)> True Starting function Finished function Process terminated: <Process(Process-1, stopped)> False Process joined: <Process(Process-1, stopped)> False Process exit code: 0 O que aconteceu de diferente?

34 2.34 Programação distribuída em python módulo multiprocessing # Criar um processo como subclasse de Process import multiprocessing class MyProcess(multiprocessing.Process): #sobrepor métod run def run(self): print ('called run method in %s' %self.name) return

35 2.35 Programação distribuída em python módulo multiprocessing # Criar um processo como subclasse de Process if name == ' main ': jobs = [] for i in range(5): p = MyProcess() jobs.append(p) p.start() p.join()

36 2.36 Programação distribuída em python módulo multiprocessing # output: called run method in MyProcess-1 called run method in MyProcess-2 called run method in MyProcess-3 called run method in MyProcess-4 called run method in MyProcess-5

37 2.37 Exemplo: Somar os inteiros de uma lista, sequencialmente, com threads, com processos: import threading import multiprocessing import random import time SIZE = def somaparcial ( lista, p, u ): soma = 0 for i in range(p, u): soma += lista[i] print (soma) return soma

38 2.38 Exemplo: Somar os inteiros de uma lista, sequencialmente, com threads, com processos: if name ==" main ": start= time.time() lista = [random.randint(1,10) for i in range(size)] print ("random values %s" % (time.time() - start) ) print ("starting") start= time.time() somaparcial(lista, 0, SIZE) print ("Sequential time = %s" %(time.time() - start))

39 2.39 Exemplo: Somar os inteiros de uma lista, sequencialmente, com threads, com processos: start= time.time() t1 = threading.thread (target = somaparcial, args =(lista, 0, \ int(size/2)) ) t2 = threading.thread (target = somaparcial, args =(lista, \ int(size/2), SIZE)) t1.start() t2.start() t1.join() t2.join() print ("Multithreaded time = %s" % (time.time() - start))

40 2.40 Exemplo: Somar os inteiros de uma lista, sequencialmente, com threads, com processos: print ("Multithreaded time = %s" % (time.time() - start)) start= time.time() t1 = multiprocessing.process (target = somaparcial, args = \ (lista, 0, int(size/2)) ) t2 = multiprocessing.process (target = somaparcial, args = \ (lista, int(size/2), SIZE)) t1.start() t2.start() t1.join() t2.join() print ("Multiprocessing time = %s" % (time.time() - start))

41 2.41 Exercício: - Testar o programa anterior, analisando os tempos de execução. - Exercício para férias: Como obter o valor parcial calculado por cada thread e cada processo? - Quais os tempos de execução, se na versão multiprocessador, só passarmos para cada Processo a parte da lista que vai ser somada?

42 2.42 Programação distribuída em python módulo multiprocessing Modifique o código da aula teórica T03 (pp ) para Estudar os tempos de execução das 3 funções analisadas, lançadas em processos independentes. Teste para 1, 2, 4 e 8 processos.

43 2.43 Python multiprocessing Comunicação de dados entre processos Queues permite vários produtores e vários recetores. Pipes comunicar entre dois processos

44 2.44 Python multiprocessing Comunicação de dados entre processos #Queue - exemplo import multiprocessing import random import time class producer(multiprocessing.process): def init (self, queue): multiprocessing.process. init (self) self.queue = queue

45 2.45 Python multiprocessing Comunicação de dados entre processos def run(self) : for i in range(10): item = random.randint(0, 256) self.queue.put(item) print ("Process Producer : item %d appended to queue %s % (item,self.name)) time.sleep(1) print ("The size of queue is %s % self.queue.qsize())

46 2.46 Python multiprocessing Comunicação de dados entre processos class consumer(multiprocessing.process): def init (self, queue): multiprocessing.process. init (self) self.queue = queue

47 2.47 Python multiprocessing Comunicação de dados entre processos def run(self): while True: if (self.queue.empty()): print("the queue is empty") break; else : time.sleep(2) item = self.queue.get() print ('Process Consumer : item %d popped from by %s time.sleep(1) Método task_done() não existe \n % (item, self.name))

48 2.48 Python multiprocessing Comunicação de dados entre processos if name == ' main ': queue = multiprocessing.queue() process_producer = producer(queue) process_consumer = consumer(queue) process_producer.start() process_consumer.start() process_producer.join() process_consumer.join()

49 2.49 Python multiprocessing Comunicação de dados entre processos #Pipe exemplo import multiprocessing class producer(multiprocessing.process): def init (self, pipe): multiprocessing.process. init (self) self.pipe = pipe

50 2.50 Python multiprocessing Comunicação de dados entre processos def run(self) : output_pipe, input_pipe = self.pipe for item in range(10): output_pipe.send(item) output_pipe.send(99) output_pipe.close() #Pipe() devolve um par de connection objects ligados por um pipe bidirecional.

51 2.51 Python multiprocessing Comunicação de dados entre processos class consumer(multiprocessing.process): def init (self, pipe): multiprocessing.process. init (self) self.pipe = pipe def run(self): close, input_pipe = self.pipe close.close() while (True): item = input_pipe.recv() if (item == 99): break input_pipe.close() print ("1: ", str(item * item))

52 2.52 Python multiprocessing Comunicação de dados entre processos if name == ' main ': pipe = multiprocessing.pipe() process_producer = producer(pipe) process_consumer = consumer(pipe) process_producer.start() process_consumer.start() process_producer.join() process_consumer.join()

53 2.53 Python multiprocessing Sincronização de processos Lock, Rlock, Semaphore, Condition, Event Barrier ponto de sincronização entre um conjunto de processos Todos os processos têm de atingir um determinado ponto antes de prosseguirem a execução em paralelo

54 import multiprocessing Python multiprocessing Sincronização de processos from multiprocessing import Barrier, Lock, Process from time import time from datetime import datetime if name == ' main ': synchronizer = Barrier(2) número de processo na barreira: 2 serializer = Lock() Process(name='p1 - test_with_barrier, target=test_with_barrier,\ args=(synchronizer, serializer)).start() Process(name='p2 - test_with_barrier', target=test_with_barrier,\ args=(synchronizer,serializer)).start() Process(name='p3 - test_without_barrier, target=test_without_barrier).start() Process(name='p4 - test_without_barrier,target=test_without_barrier).start() 2.54

55 2.55 Python multiprocessing Sincronização de processos def test_with_barrier(synchronizer, serializer): name = multiprocessing.current_process().name synchronizer.wait() # barrier now = time() with serializer: print("process %s ----> %s" %(name,datetime.fromtimestamp(now))) def test_without_barrier(): name = multiprocessing.current_process().name now = time() print("process %s ----> %s" %(name,datetime.fromtimestamp(now)))

56 2.56 Python multiprocessing Sincronização de processos Output: process p3 - test_without_barrier ----> :27: process p2 - test_with_barrier ----> :27: process p1 - test_with_barrier ----> :27: process p4 - test_without_barrier ----> :27:

57 Instrução with import threading import logging logging.basicconfig(level=logging.debug, format='(%(threadname)-10s) %(message)s',) if name == ' main ': lock = threading.lock() t1 = threading.thread(target=threading_with, args=(lock,)) t2 = threading.thread(target=threading_not_with, args=(lock,)) t1.start() t2.start() t1.join() t2.join() 2.57

58 2.58 #Instrução with def threading_with(statement): with statement: logging.debug('%s acquired via with' %statement) def threading_not_with(statement): statement.acquire() try: logging.debug('%s acquired directly' %statement ) finally: statement.release()

59 2.59 #Instrução with Output: (Thread-5 ) <_thread.lock object at 0x ADC8> acquired via with (Thread-6 ) <_thread.lock object at 0x ADC8> acquired directly Com with o lock é adquirido, só existe dentro do âmbito do with e é libertado quando termina o bloco do with

60 2.60 Python multiprocessing Process Pool - Permite criar um conjunto de processos Algumas funções: - map () divide um conjunto iterável de dados em pedaços que submete aos processos da pool como tarefas individuais; bloqueia até à obtenção do resultado; - map_async() map não bloqueante; devolve um objeto

61 2.61 Python multiprocessing Process Pool - exemplo import multiprocessing def function_square(data): result = data*data return result

62 2.62 Python multiprocessing Process Pool - exemplo if name == ' main ': inputs = list(range(0,100)) pool = multiprocessing.pool(processes=4) pool_outputs = pool.map(function_square, inputs) print ('Pool :', pool_outputs) inputs2 = list(range(100,200)) pool2 = multiprocessing.pool(processes=4) x = pool2.map_async(function_square, inputs2) #some work... x.wait() print ('Pool :', x.get())

Programação com memória partilhada (exemplos)

Programação com memória partilhada (exemplos) Programação com memória partilhada (exemplos) 1 A classe queue.queue Classe que implementa uma fila (FIFO) sincronizada. - Usa locks para bloquear threads que competem pelo acesso aos elementos da fila.

Leia mais

Técnicas de Paralelização

Técnicas de Paralelização Técnicas de Paralelização 2 Particionar e dividir para conquistar Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson &

Leia mais

Computação por Passagem de Mensagens

Computação por Passagem de Mensagens Computação por Passagem de Mensagens Programação por passagem de mensagens Programação de multiprocessadores conectados por rede pode ser realizada: criando-se uma linguagem de programação paralela especial

Leia mais

Programação com memória partilhada

Programação com memória partilhada Programação com memória partilhada 1 Multiprocessadores com memória partilhada Qualquer localização de memória pode ser acedida por qualquer processo. Só existe um espaço de endereçamento. Exige o controlo

Leia mais

MPI - Continuação. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm.

MPI - Continuação. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm.get_rank() MPI - Continuação if rank == 0: print ("Myrank: %s:" % rank) for proc in range(1,

Leia mais

Computação por Passagem de Mensagens

Computação por Passagem de Mensagens Computação por Passagem de Mensagens Programação por passagem de mensagens Programação de multiprocessadores conectados por rede pode ser realizada: criando-se uma linguagem de programação paralela especial

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída Programação Paralela e Distribuída Referência: Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd Edition, by B. Wilkinson & M. Allen, 2004

Leia mais

Message Passing Interface - MPI

Message Passing Interface - MPI Message Passing Interface - Pedro de Botelho Marcos Maio/2008 1 Sumário Introdução; Conceitos básicos; Comunicação; Principais rotinas; Compilando e executando códigos ; Exemplos; Referências; 2 Introdução

Leia mais

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and Guy Steele,

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and

Leia mais

Sistemas Distribuídos Aula 2

Sistemas Distribuídos Aula 2 Sistemas Distribuídos Aula 2 Aula passada Logísitica Regras do jogo Definição e características Exemplos Aula de hoje Processos IPC Características Ex. sinais, pipes, sockets Objetivos Processos O que

Leia mais

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and

Leia mais

Computação Paralela e Distribuída. Heucles Jr

Computação Paralela e Distribuída. Heucles Jr Computação Paralela e Distribuída Heucles Jr 9395391 Agenda Breve Histórico Sintaxe Just-in-Time Compiler Tipos Numéricos Macros Paralelismo Tasks Workers Messaging Parallel loops and maps Distributed

Leia mais

Sistemas Operativos 2014/15

Sistemas Operativos 2014/15 Guião de apoio 5 Comunicação entre processos Sistemas Operativos 2014/15 1. Introdução ao tema Na última aula estudámos a criação, execução e terminação de processos. Em particular, vimos como a chamada

Leia mais

Paralela e Distribuída. com o MPI e o OpenMP

Paralela e Distribuída. com o MPI e o OpenMP Programação Paralela e Distribuída Programação Híbrida com o e o OpenMP e OpenMP Uma forma de executar um programa em paralelo num cluster multiprocessor é criar um processo por cada processador. Nesse

Leia mais

Técnicas de Paralelização

Técnicas de Paralelização Técnicas de Paralelização 3 Linha de Produção (Pipelining) 5.1 Computação em pipeline Divisão do problema num conjunto de tarefas que têm de ser concluídas uma após outra (base da programação sequencial).

Leia mais

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

Leia mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programação Concorrente e Paralela. Noemi Rodriguez 2013 Objetivos princípios e técnicas de programação concorrente multiprocessadores memória compartilhada troca de mensagens obs: diferentes níveis de abstração! que princípios e técnicas são esses? notações

Leia mais

Nesta aula... Parâmetros opcionais Atribuição abreviada Instruções break e continue Interrupção da execução. 1 Estudo desta disciplina.

Nesta aula... Parâmetros opcionais Atribuição abreviada Instruções break e continue Interrupção da execução. 1 Estudo desta disciplina. Nesta aula... 1 2 Parâmetros opcionais Atribuição abreviada Instruções break e continue Interrupção da execução 3 Forum: https://piazza.com/up.pt/fall2012/cc101/home Livro: versão PDF: http: //www.greenteapress.com/thinkpython/html/index.html

Leia mais

Programação concorrente em Java

Programação concorrente em Java Programação concorrente em Java Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Programação concorrente

Leia mais

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída)

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Modelos de consistência de memória João Luís Ferreira Sobral jls@... 29 Março 2011 Resumo Revisão: modelos de threads Qual a necessidade

Leia mais

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core RSS-Verão-01/08 p.1/36 Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7 Escola de Verão 2008 Arquiteturas Multi-Core Renato S. Silva LNCC - MCT Janeiro de 2008 RSS-Verão-01/08 p.2/36 Objetivo:

Leia mais

Universidade da Beira Interior. Sistemas Distribuídos. Folha 4-1. Threads Daemon Threads

Universidade da Beira Interior. Sistemas Distribuídos. Folha 4-1. Threads Daemon Threads Threads Daemon Threads Folha 4-1 Uma Thread Daemon é uma Thread, geralmente usada para executar serviços em background, que tem a particularidade de terminar automaticamente após todas as Threads não Daemon

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída Curso de Informática DCC-IM / UFRJ Programação Paralela e Distribuída Um curso prático Mario J. Júnior Gabriel P. Silva Colaboração: Adriano O. Cruz, Julio S. Aude Ementa Paradigma de Troca de Mensagens

Leia mais

MPI (Message Passing Interface)

MPI (Message Passing Interface) MPI (Message Passing Interface) Standard desenvolvido por académicos e indústria. Define rotinas, não a implementação. Não define como se criam os processos (depende da implementação) Existem várias implementações

Leia mais

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

ALua. asynchronous communication in Lua

ALua. asynchronous communication in Lua ALua asynchronous communication in Lua o que é modelo de programação troca de mensagens Lua assincronismo modelo de concorrência cada evento tratado até o final estrutura da rede daemons intermediando

Leia mais

PUC-SP Depto. de Ciência da Computação

PUC-SP Depto. de Ciência da Computação Mensagens Concorrentes Prof. Dr. Italo Santiago Vega Julho de 2000 PUC-SP Depto. de Ciência da Computação www.pucsp.br/~italo Introdução Concorrência libera a modelagem de interações entre objetos tradicionalmente

Leia mais

Só podem ser executados por uma Thread que detenha o lock do objecto

Só podem ser executados por uma Thread que detenha o lock do objecto Transferência de controle entre Threads Os métodos wait(), notify() notifyall(), da classe Object, Permitem a transferência de controlo de uma Thread para outra. Só podem ser executados por uma Thread

Leia mais

Message Passing Interface - MPI. Jorge Barbosa

Message Passing Interface - MPI. Jorge Barbosa Message Passing Interface - MPI Jorge Barbosa Introdução ao MPI Até ao fim dos anos 80, os fabricantes de computadores desenvolviam a sua própria biblioteca de funções para desenvolver programas paralelos.

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída Exemplos de linguagens com comunicação por mensagens, Ada OCCAM Linda From: M. Ben-Ari Principles of Concurrent and Distributed Programming Prentice Hall

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

Leia mais

Python para quem sabe Python

Python para quem sabe Python Python para quem sabe Python Turma 0, aula 4 Metaclasses, programação funcional e programação assíncrona Exercício: execucao.py Para entender como o interpretador Python lê um arquivo.py Tudo é executável

Leia mais

Carlos Eduardo Batista Centro de Informática - UFPB

Carlos Eduardo Batista Centro de Informática - UFPB Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação Arquitetura de computadores modernos Desafios da programação concorrente Definição de concorrência Correr junto Disputa por

Leia mais

Bibliografia em processamento paralelo

Bibliografia em processamento paralelo Bibliografia em processamento paralelo Andrews, Concurrent Programming: Principles and Practice Foster, Designing and Building Parallel Programs Wolfe, High Performance Compilers for Parallel Computing

Leia mais

Vamos fazer um pequeno experimento

Vamos fazer um pequeno experimento 1 Vamos fazer um pequeno experimento Dividam-se em dois grupos: Mestre Escravo Projeto de Sistemas Distribuídos Comunicação entre Processos Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (2.0) (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela 2010.2 Objetivos princípios e técnicas de programação paralela multiprocessadores memória compartilhada troca de mensagens arquiteturas alternativas multicomputadores troca de mensagens obs: Essa troca

Leia mais

Desenvolvimento de um Middleware Distribuído para Ordenação de Mensagens Segundo os Algoritmos FIFO, Causal e Total

Desenvolvimento de um Middleware Distribuído para Ordenação de Mensagens Segundo os Algoritmos FIFO, Causal e Total Desenvolvimento de um Middleware Distribuído para Ordenação de Mensagens Segundo os Algoritmos FIFO, Causal e Total Rafael da Rosa Righi 1, Rodrigo da Rosa Righi 2 1 Laboratório de Redes e Gerência (LRG)

Leia mais

Informática UFRGS. Threads. Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 1

Informática UFRGS. Threads. Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 1 C# Threads Programação com Objetos Distribuídos (C. Geyer) C# Threads V5 1 Autoria Autores Cláudio Geyer Local Instituto de Informática disciplinas: Programação Distribuída e Paralela Programação com Objetos

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

Threads. Leonardo Gresta Paulino Murta

Threads. Leonardo Gresta Paulino Murta Threads Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos a execução em paralelo de programas em Java por meio de Threads Leonardo Murta Threads 2 Por que usar Threads? Threads

Leia mais

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Programação de Alto Desempenho - 2. Prof: Carla Osthoff Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda

Leia mais

TCC 00308: Programação de Computadores I Introdução

TCC 00308: Programação de Computadores I Introdução TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento

Leia mais

Linguagens para Programação Paralela. October 26, 2010

Linguagens para Programação Paralela. October 26, 2010 October 26, 2010 Linguagens X Bibliotecas expressividade facilidade de uso integração com programas e programadores Modelos de Linguagens Paralelas (lista não completa) paralelismo de dados (data-parallel)

Leia mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programação Concorrente e Paralela. Noemi Rodriguez 2016 o que é programação concorrente e paralela? programação concorrente: composição de linhas de atividades independentes programação paralela: execução simultânea de linhas de atividades Go blog (Rob

Leia mais

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos Conceito de Processo Módulo 4: Processos Um Sistema Operacional executa uma variedade de programas: Sistemas de processamento em lotes (batch) processa jobs Sistemas de tempo partilhado (time shared) roda

Leia mais

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos Aula 04 Capítulo 3 Gerência de Processos 3.1 Conceito de Processo 3.2 Escalonamento de Processos 3.3 Opera ões sobre Processos 3.4 Comunica ão entre Processos 3.1 Conceito de Processo Um sistema operacional

Leia mais

Aula 7 Estruturas de Repetição Cleverton Hentz

Aula 7 Estruturas de Repetição Cleverton Hentz Aula 7 Estruturas de Repetição Cleverton Hentz Sumário de Aula Estruturas de Repetições while do for 2 Introdução Nesta aula iremos introduzir outra tipo de estrutura importante na descrição de um algoritmos,

Leia mais

Curso de Python em 5 Horas

Curso de Python em 5 Horas Curso de Python em 5 Horas Classes e Trabalhando com Arquivo Gustavo Sverzut Barbieri GPSL - UNICAMP 12 de maio de 2005 ustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Comunicação e Coordenação Clientes e Servidores março de 2015 Comunicação entre Processos Distribuídos troca de mensagens exige coordenação receive?!?...... send............ Coordenação passos para execução

Leia mais

Programação Paralela por Passagem de Mensagens

Programação Paralela por Passagem de Mensagens de Mensagens Arquitecturas Paralelas 1 Luís Paulo Peixoto dos Santos Processos Sequenciais Comunicantes A computação paralela consiste em vários processos sequenciais, com o seu espaço de endereçamento

Leia mais

Carla Osthoff LNCC/MCTI Exemplos: https://goo.gl/amxo7e

Carla Osthoff LNCC/MCTI Exemplos: https://goo.gl/amxo7e Carla Osthoff LNCC/MCTI osthoff@lncc.br Exemplos: https://goo.gl/amxo7e Message Passing Interface www.mpi-forum.org http://mpi-forum.org/docs/ http://mpi-forum.org/mpi-40/ Manual online: http://www.mpich.org/static/docs/latest/

Leia mais

Introdução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Introdução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC Introdução ao Python Prof. Fabrício Olivetti de França Universidade Federal do ABC Python Linguagem interpretada criada em 1991 Objetivos: enfatizar a legibilidade do código e, encurtar o tamanho dos códigos.

Leia mais

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Threads em Java. Java Threads. Java Componentes: JVM JVM:

Threads em Java. Java Threads. Java Componentes: JVM JVM: Threads em Java (Aula 17) Java Threads Difícil de classificar com user thread ou kernel thread As threads Java são gerenciadas pela JVM. Threads em Java podem ser criadas das seguintes maneiras: Fazendo

Leia mais

Programação I Aula 11 Mais sobre ciclos e iteração

Programação I Aula 11 Mais sobre ciclos e iteração Programação I Aula 11 Mais sobre ciclos e iteração Pedro Vasconcelos DCC/FCUP 2017 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 11 Mais sobre ciclos e iteração 2017 1 / 26 Nesta aula Vamos ver a iteração

Leia mais

Concorrência em Processos

Concorrência em Processos Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação

Leia mais

Definindo melhor alguns conceitos

Definindo melhor alguns conceitos Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais de um thread/processo concorrendo por recursos Paralelismo uma aplicação é eecutada por um conjunto

Leia mais

PROGRAMAÇÃO JAVA. Parte 3

PROGRAMAÇÃO JAVA. Parte 3 PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos

Leia mais

Programação com Sockets

Programação com Sockets Sistemas Distribuidos e Paralelos Programação com Sockets Datagramas Objetivo Desenvolver programas que permitam o envio de informação pela rede mediante sockets usando o protocolo UDP. Bibliografía Deitel,

Leia mais

Replicação. Modelos de Consistência.

Replicação. Modelos de Consistência. Replicação. Modelos de Consistência. December 1, 2009 Sumário Introdução Questões Centrais da Replicação Modelos de Consistência Replicação O que é? O uso de múltiplas cópias de dados ou serviços (e estado

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Exame 13 de Janeiro de 2017 09:00 11:00 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta. (a)

Leia mais

Sistemas Operacionais Distribuídos e de Redes

Sistemas Operacionais Distribuídos e de Redes Contextualização Sistemas Operacionais Distribuídos e de Redes Comunicação Interprocessos Aula 04 Aula 04 Aplicação, serviços RMI e RPC Protocolo - (requisição-resposta) marshalling e representaçao externa

Leia mais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 7 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 9 Threads Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Threads Uma thread

Leia mais

SSC510 Arquitetura de Computadores. 6ª aula

SSC510 Arquitetura de Computadores. 6ª aula SSC510 Arquitetura de Computadores 6ª aula PARALELISMO EM NÍVEL DE PROCESSOS PROFA. SARITA MAZZINI BRUSCHI Tipos de Paralelismo Instrução (granulosidade fina) Paralelismo entre as instruções Arquiteturas

Leia mais

Processos. Conceitos Básicos

Processos. Conceitos Básicos Processos Conceitos Básicos Processo Abstração usada pelo S.O. para designar a execução de um programa. (1) É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Prof. Dr. André Carvalho andre@icomp.ufam.edu.br Agenda n Comunicação entre Processos n Características dos mecanismos de comunicação Comunicação direta ou indireta, sincronismos,

Leia mais

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas

Leia mais

EXERCÍCIO 1 MUDANDO AS CORES

EXERCÍCIO 1 MUDANDO AS CORES EXERCÍCIO 1 MUDANDO AS CORES O código abaixo ilustra o uso da comunicação ponto-a-ponto e a comunicação coletiva. Nesse código, uma matriz de três cores (verde, branco, vermelho e) é distribuída para todos

Leia mais

Modelos de Execução Bolsas de Tarefas

Modelos de Execução Bolsas de Tarefas Modelos de Execução Bolsas de Tarefas November 5, 2009 Modelos SPMD/MPI todos os processos executam o mesmo código quantidade de trabalho determinada estaticamente: tarefas pre-definidas quantidade de

Leia mais

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos

Leia mais

Processos. Conceitos Básicos

Processos. Conceitos Básicos Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos

Leia mais

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP Programação I Aula 19 Aritmética com racionais DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Aritmética com racionais 2 Simplificação 3 Operações 4 Comparações DCC/FCUP 2019 2/ 30 Aritmética com racionais

Leia mais

Comunicação orientada a mensagens

Comunicação orientada a mensagens Comunicação orientada a mensagens críticas a RPC sincronismo modelo um a um dificuldades de tratamento de falhas Þ volta ao modelo de troca de mensagens com diferentes níveis de abstração Sistemas de mensagens

Leia mais

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON 02/47 O QUE É PYTHON? Python é uma linguagem de propósito geral, de alto nível e interpretada Python será

Leia mais

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham

Leia mais

Fundamentos de Lógica e Algoritmos. Aula 3.2 IDLE, Variáveis e Tipos. Prof. Dr. Bruno Moreno

Fundamentos de Lógica e Algoritmos. Aula 3.2 IDLE, Variáveis e Tipos. Prof. Dr. Bruno Moreno Fundamentos de Lógica e Algoritmos Aula 3.2 IDLE, Variáveis e Tipos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br IDLE O IDLE é um ambiente de desenvolvimento integrado para Python; O IDLE permite: Escrever

Leia mais

Programação Concorrente em Java

Programação Concorrente em Java Programação Concorrente em Java Prof. Orlando Loques - IC/UFF versão 17-04-2001 Referências: - Programação Concorrente em Java, Sérgio Teixeira de Carvalho & Leonardo N. M. Reis IC-UFF - Ousterhout, J.:

Leia mais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos. INTRODUÇÃO AOS SISTEMAS OPERACIONAIS outubro/2013 SEMANA 10 Operações nos processos. Processos cooperativos, comunicação entre processos. 1 - Introdução Um processo, ao longo da sua vida, passa por diferentes

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO Prof. Bosco 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela Multithreading na camada de aplicação 2016 voltando ao PCAM particionamento comunicação aglomeração mapeamento voltando ao PCAM particionamento comunicação aglomeração mapeamento frequentemente resulta

Leia mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Na Aula Anterior... O Conceito de Threads

Na Aula Anterior... O Conceito de Threads GSI018 Sistemas Operacionais 12/09/2016 Na Aula Anterior... Nesta Aula Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Comunicação entre Processos Pipes;

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Programa Seqüencial Representado por apenas um processo Existe apenas

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Threads Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo

Leia mais

Gabriel Giorisatto De Angelo Luiz Otávio Gerhardt Fernandes

Gabriel Giorisatto De Angelo Luiz Otávio Gerhardt Fernandes Gabriel Giorisatto De Angelo Luiz Otávio Gerhardt Fernandes Histórico Desenvolvida em 2012 por Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman Gratuita, Open Source e licenciada sob a Licença

Leia mais

Problema do Produtor -Consumidor. Solução por semáforos

Problema do Produtor -Consumidor. Solução por semáforos Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3

Leia mais

Intel Thread Building Blocks (TBB)

Intel Thread Building Blocks (TBB) Intel Thread Building Blocks (TBB) MCZA020-13 - Programação Paralela Emilio Francesquini e.francesquini@ufabc.edu.br 2019.Q1 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Disclaimer

Leia mais

Processos. Conceitos Básicos

Processos. Conceitos Básicos Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos

Leia mais

Infra-Estrutura de Software

Infra-Estrutura de Software Infra-Estrutura de Software Entrada / Saída 2º. EE: 21/06 Próximas Datas http://www.cin.ufpe.br/~cagf/if677/2016-1/ slides/ Revisão de notas: 28/06 FINAL: 30/06 Diversidade de dispositivos Hardware de

Leia mais

SSC0640 Sistemas Operacionais I

SSC0640 Sistemas Operacionais I SSC0640 Sistemas Operacionais I 8ª Aula Comunicação e Sincronismo de Processos Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana

Leia mais

Threads. O que é uma Thread? Paralelismo

Threads. O que é uma Thread? Paralelismo Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais