Programação em sistemas de memória distribuída
|
|
- Vagner Valgueiro Lencastre
- 5 Há anos
- Visualizações:
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) 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 maisTé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 maisComputaçã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 maisProgramaçã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 maisMPI - 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 maisComputaçã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 maisProgramaçã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 maisMessage 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.
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 maisProgramaçã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.
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 maisSistemas 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.
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 maisComputaçã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 maisSistemas 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 maisParalela 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 maisTé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 maisAula 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 maisProgramaçã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 maisNesta 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 maisProgramaçã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 maisParadigmas 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 maisParalelizaçã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 maisUniversidade 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 maisProgramaçã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 maisMPI (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 maisAULA 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 maisALua. 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 maisPUC-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 maisSó 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 maisMessage 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 maisCapí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 maisSistemas 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 maisPython 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 maisCarlos 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 maisBibliografia 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 maisVamos 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 maisINE 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 maisProgramaçã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 maisDesenvolvimento 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 maisInformá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 maisBacharelado 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 maisThreads. 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 maisProgramaçã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 maisTCC 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 maisLinguagens 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 maisProgramaçã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 maisConceito 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 maisAula 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 maisAula 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 maisCurso 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 maisArquitetura 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 maisSistemas 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 maisProgramaçã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 maisCarla 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 maisIntroduçã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 maisSSC 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 maisOpenMP: 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 maisFundamentos 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 maisThreads 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 maisProgramaçã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 maisConcorrê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 maisDefinindo 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 maisPROGRAMAÇÃ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 maisProgramaçã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 maisReplicaçã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 maisFundamentos 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 maisSistemas 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 maisUniversidade 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 maisSistemas 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 maisSSC510 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 maisProcessos. 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 maisComunicaçã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 maisOpenMP. 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 maisEXERCÍ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 maisModelos 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 maisProcessos. 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 maisProcessos. 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 maisProgramaçã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 maisComunicaçã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 maisPRIMEIROS 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 maisDEM-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 maisFundamentos 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 maisProgramaçã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 maisINTRODUÇÃ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 maisINE 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 maisProgramaçã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 maisArquitetura 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 maisNa 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 maisSistemas 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 maisArquitetura 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 maisGabriel 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 maisProblema 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 maisIntel 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 maisProcessos. 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 maisInfra-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 maisSSC0640 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 maisThreads. 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 maisFundamentos 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