Gerência de Processos Distribuídos: Sub processamento múltiplo.

Documentos relacionados
Introdução na Computação Distribuída e Paralela

Arquitetura de Computadores. Processamento Paralelo

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Análise e desenho de algoritmos paralelos

Carlos Eduardo Batista Centro de Informática - UFPB

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

SIST706 Sistemas Distribuídos

Organização de Computadores II. Arquiteturas MIMD

Sistemas distribuídos. Prof. Emiliano Monteiro

Introdução à Computação: Sistemas de Computação

Concorrência em Processos

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

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

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

SSC510 Arquitetura de Computadores. 6ª aula

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Sistemas Distribuídos

Programação Concorrente

Caracterização de Sistemas Distribuídos

Arquitetura de sistemas distribuídos

SSC0611 Arquitetura de Computadores

Características de Sistemas Distribuídos

Sistemas Distribuídos e Paralelos

Linguagem de Programação II

MULTITHREADING. Prof.: Michele Nasu Tomiyama Bucci

Processamento Paralelo

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Organização e Arquitetura de Computadores I

Arquitetura de Sistemas Digitais

Sistema de Software Distribuído

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

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

Arranjo de Processadores

Arquiteturas Paralelas

Programação Paralela e Distribuída

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio

Múltiplas Linhas de Execução Java (Threads)

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

Sistemas Distribuídos

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica PLANO DE ENSINO. Revisão 7-17/02/16

Sistemas Distribuídos

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary

STD29006 Sistemas Distribuídos

Threads. O que é uma Thread? Paralelismo

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

SISTEMAS DISTRIBUÍDOS

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Multiprogramação leve em arquiteturas multi-core

Sistemas Distribuídos

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA

08/08/2016. Metodologia de trabalho Sistema de notas Trabalhos Artigos Celulares Presença Entrega de trabalhos Uso de laboratório

Disciplina de Arquitetura de Computadores

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Introdução aos Sistemas Distribuídos

Sistemas Distribuídos

SISTEMAS OPERACIONAIS DE REDE

Programação Concorrente e Paralela

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Programação Concorrente e Paralela. Noemi Rodriguez

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO IM DCC CURSO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I 2010/2 PROGRAMA DA DISCIPLINA

Modelo de Von Neumann

Programação Orientada a Objetos Threads

PARALELISMO NO NÍVEL DO PROCESSADOR

Unidade 12: Introdução ao Paralelismo:

Processos ca 3 pítulo

Técnicas Avançadas de Programação

Modelos para Concorrência

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Programação Orientada a Objetos. Concorrência

Organização e comunicação em plataformas paralelas

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

SO: SISTEMAS OPERACIONAIS Curso: Sistemas de Informação

Sistemas Multiprogramáveis/Multitarefa

Sistemas Operacionais

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

Sistemas Operacionais (SO)

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

SSC0640 Sistemas Operacionais I

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Tipos de SO

Computação Distribuída

Computadores e Programação (DCC/UFRJ)

08/02/2017. Metodologia de trabalho Sistema de notas Trabalhos Artigos Celulares Presença Entrega de trabalhos Uso de laboratório

Organização de Computadores 2005/2006 Processamento Paralelo

SSC0640 Sistemas Operacionais I

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Transcrição:

ISUTIC 2017 Gerência de Processos Distribuídos: Sub processamento múltiplo. Docente: MSc. Angel Alberto Vazquez Sánchez

Sumario Arquitectura e organização Distribuídos e Paralelos. de Subprocessamento múltiplo em JAVA Sistemas

Objetivo Compreender o funcionamento de subprocesos concorrentes em JAVA.

Bibliografía Tanenbaum, A. S., & Van Steen, M. (2007). Distributed systems: principles and paradigms. Prentice-Hall. Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2013). Sistemas Distribuídos-: Conceitos e Projeto. Bookman Editora.

Michael J. Flynn

Michael J. Flynn Michael J. Flynn é um professor emérito da Universidade Stanford estadounidense, com estudos em engenharia eletrónica e ciências da computação. Flynn cofundó Palyn Associates junto a Max Paley e é o Presidente de Maxeler Technologies.

Michael J. Flynn Nasceu o 20 de maio de 1934 (82 anos) em Nova York, Estados Unidos. Se graduó de Engenharia Elétrica em Manhattan College (1955), realizou uma maestría na Universidade de Syracuse (1960) e doctorado em Purdue Univ. (1961). En 1995 recibió el Premio Memorial Harry H. Goode.

Super computadores

Super computadores Rank Site Cores 1 10,649,600 93,014.6 Power (kw) 15,371 3,120,000 33,862.7 17,808 361,760 19,590.0 2,272 560,640 17,590.0 8,209 1,572,864 17,173.2 7,890 2 3 4 5 Sunway TaihuLight, National Supercomputing Center in Wuxi, China Tianhe-2 (MilkyWay-2), National Super Computer Center in Guangzhou, China Piz Daint, Swiss National Supercomputing Centre (CSCS), Switzerland Titan, DOE/SC/Oak Ridge National Laboratory United States Sequoia, IBM DOE/NNSA/LLNL United States Tflops/s

Arquitectura de Sistemas Distribuídos e Paralelos Organização MISD MIMD Múltiplas sequência de Múltiplas sequência de SISD instrução, uma instrução, múltiplas Uma sequência de sequência de dados SIMD sequências de dados Instruções, uma sequência de dados Uma sequência de instrução, múltiplas sequências de dados Memória compartilhada Memória distribuída Uni processador (fortemente acoplada) (fracamente acoplada) Processadores Processadores Multiprocessador vectoriais de matriz Simétrico (SMP) Acesso não uniforme a memória (NUMA) Clusters

Topologias de interconexão em sistemas distribuídos Tipos redes de interconexão estáticas 0 1 2 3 7 5 1 1 5 6 Formação linear 5 3 Anel Malha 2 2 4 Cubo - 3 1 3 4 Anel de cordas grau 3 Árvore binária 2 4 3 Totalmente conectada Estrela

Topologias de interconexão em sistemas paralelos Buses Conjunto de linhas que permitem comunicar selectivamente certo número de componentes de acordo a certas normas de conexão. Só se permite uma transmissão ao mesmo tempo. Ante petições simultâneas deve ter um árbitro de bus. Trata-se de buses de tempo compartilhado. Processador... Cache L1 Processador Cache L1 Memória Principal Estrutura de BUS único E/S Cache L2 Cache L2 BUS

Topologias de interconexão em sistemas paralelos Estrutura de bus jerarquizado: Pode estabelecer uma comunicação em seu nível independente de e simultânea aos demais. Processador Memória Principal Cache L1... Processador Cache L1 E/S Cache L2 Cache L2 BUS Local Interface de Bus Bus Principal Interface de Bus BUS Local Processador Memória Principal Cache L1 Cache L2... Processador Cache L1 Cache L2 E/S

Outra classificação Computadores reais: Multiprocessador ou computador com memória compartilhada (A memória é o meio de comunicação entre processadores). Multicomputadores ou computadores com memória distribuída (Os processadores se comunicam através da passagem de mensagem).

Tipos de Computadores Paralelos Tipos de Computadores Paralelos Memória Principal em M ia ór M em ór Processador Computador tradicional m o C ti r pa d a h l a P P... P 1 2 k Rede de interconexão M11 M M M22...... M Mkk Memória ia Di str ibu Rede de interconexão íd a P 1 M1 P P 2 M2 k.. Mk

Multithreading em JAVA Em JAVA pode-se especificar que um aplicativo contém subprocessos de execução separados, o qual lhe permite se executar concurrentemente com outros subprocessos, ao mesmo tempo que compartilha os recursos a nível de aplicativo (como a memória) com estes outros subprocessos.

Importante Programar aplicações simultâneas é uma tarefa difícil e propenso a erros Se você achar que você deve usar a sincronização em um programa, você deve seguir algumas diretrizes simples Use classes existentes da API Java que gerenciam a sincronização para você (ex: ArrayBlockingQueue) Se você achar que você precisa de mais funcionalidades personalizadas do que as fornecidas nas APIs Java, você deve usar a palavra-chave synchronized e os métodos do Object wait, notify e notifyall. Se você precisar de recursos ainda mais complexos, então você deve usar as interfaces Lock e Condition

Multithreading em JAVA

Prioridades dos subprocessos Ajuda ao sistema operativo a determinar a ordem no que se programam os subprocessos. MIN_PRIORITY (uma constante de 1) MAX_PRIORITY (uma constante de 10) NORM_PRIORITY (uma constante de 5) A cada novo subproceso herda a prioridade do subproceso que o criou. As prioridades dos subprocesos não garantem a ordem no que se executam os subprocesos.

Criação e execução de subprocessos Implementação da interface Runnable (do pacote java.lang ). Um objeto Runnable representa uma tarefa que pode se executar concurrentemente com outras tarefas. A interface Runnable declara um sozinho método: run, o qual contém o código que define a tarefa que deve realizar um objeto Runnable.

Classe Thread O código que executa um thread está definido pelo método run() que tem todo o objeto que seja instância da classe Thread, já que implementa Runnable. A execução do thread inicia-se quando sobre o objeto Thread se executa o método start(). De forma natural, um thread termina quando em run() se atinge uma sentença return ou o final do método.

Ciclo de vida de um thread

Visão interna do sistema operacional do estado runnable Java

Tarefa 1. Além dos métodos run() e start(), que outros métodos tem a classe Thread de JAVA e qual é o objectivo da cada um? 2. Executor é uma interface de JAVA para administrar a execução de objetos Runnable de maneira automática. Explique como funciona este mecanismo. Livro: JAVA. Cómo Programar. P. J. Deitel. Capítulo 23

Gerenciamento de Thread com o Executor Framework Embora seja possível criar threads explicitamente, recomenda-se que você use a interface do Executor para gerenciar a execução de objetos Runnable para você. Um objeto Executor tipicamente cria e gerencia um grupo de threads chamado pool de threads para executar Runnables.

Gerenciamento de Thread com o Executor Framework Usar um Executor tem muitas vantagens sobre a criação de threads você mesmo. Os executores podem reutilizar threads existentes para eliminar a sobrecarga da criação de um novo thread para cada tarefa E pode melhorar o desempenho ao otimizar o número de threads para garantir que o processador permaneça ocupado, sem criar tantos threads que o aplicativo está sem recursos

Gerenciamento de Thread com o Executor Framework A interface do Executor declara um único método chamado execute que aceita um Runnable como um argumento. O Executor atribui cada Runnable passado ao seu método de execução para um dos threads disponíveis no pool de threads Se não houver threads disponíveis, o Executor cria um novo thread ou espera que um thread esteja disponível e atribua esse thread ao Runnable que foi passado ao método executar.

Gerenciamento de Thread com o Executor Framework Interface ExecutorService (do pacote java.util.concurrent) é uma interface que se estende Executor e declara uma série de outros métodos para gerenciar o ciclo de vida de um Executor. Um objeto que implementa a interface do ExecutorService pode ser criado usando métodos estáticos declarados na classe Executores Usamos interface ExecutorService e um método de classe Executors no próximo aplicativo, que executa três tarefas.

Orientação seminario Neste seminário a cada estudante deve pesquisar sobre a Arquitetura dos Sistemas distribuídos e paralelos. É importante que recopilem informação sobre os temas que se mencionam mais abaixo e preparem explicações, exemplos e detalhes para participar em forma de intercâmbio durante o aula da próxima.

Orientação seminario Conteúdo a pesquisar: 1.Passe de mensagens: Tarefas que deve executar a cada processador nesta modalidade de comunicação. Como funcionam estas tarefas? Primitivas de comunicação mais comuns que oferecem soluções a certos tipos de esquemas de comunicação. Para que se utiliza a cada uma. Exemplos. 2.Exclusão mútua: Analisar os conceitos de condição de concorrência", "princípio de exclusão mútua" e "secção crítica". Mecanismos para resolver o problema. Semáforos. Operações que a cada processo deve realizar nestes mecanismos. Explicação.

Orientação seminario Conteúdo a pesquisar: 3.Redes de interconexão entre processos distribuídos e paralelos. Desenhos, vantagens e desvantagens para esta comunicação em Memória Compartilhada e em Memória Distribuída. 4.Informação associada a qualquer outro conteúdo relacionado com a comunicação entre processos distribuídos e paralelos.

Orientação seminario Bibliografía recomendada: Aguilar, J. e Leiss E. - Introducción a la Computación Paralela. 2004. (Secção 1.4). COULORIS, G.; DOLLIMORE, J. E KINDBERG, T. - Sistemas Distribuídos: Conceito e Projeto; São Paulo: Bookman, 2007. (Capítulo 4). TANENBAUM, A. S. e VAN RENESSE, R. Distributed Operating Systems; ACM Computing Surveys, 17(4), 1985. (Capítulo 4)

Resumen Diferenças entre sistemas distribuídos e paralelos: Sistemas Paralelos Dividem um aplicativo em tarefas que são executadas ao mesmo tempo. Os programas executam-se em arquitecturas homogêneas. Sistemas distribuídos Dividem um aplicativo em tarefas que são executadas em diferentes localizações utilizando diferentes recursos Com frequência é um sistema heterogéneo Não se tem uma memória compartilhada a nível de hardware.

Resumen Características em comum: Múltiplos processadores. Os processadores estão interconectados de alguma forma (geralmente por uma rede). Múltiplos processos estão em progresso e cooperam uns com outros. O problema é dividido em partes a executar num processador diferente. Começam a utilizar as mesmas arquitecturas (ao menos em conceito) Muitos aspectos do paralelismo e a distribuição são comuns

Resumen Sistemas Paralelos Sistemas Distribuídos Sistemas Distribuídos e Paralelos

Resumen

Conclução

ISUTIC 2017 Gerência de Processos Distribuídos: Sub processamento múltiplo. Docente: MSc. Angel Alberto Vazquez Sánchez