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

Texto

(1)

Gerência de Processos Distribuídos:

Sub processamento múltiplo.

Docente: MSc. Angel Alberto Vazquez Sánchez ISUTIC

2017

(2)

Sumario

● Arquitectura e organização de Sistemas Distribuídos e Paralelos.

● Subprocessamento múltiplo em JAVA

(3)

Objetivo

● Compreender o funcionamento de subprocesos

concorrentes em JAVA.

(4)

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.

(5)

Michael J. Flynn

(6)

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.

(7)

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.

(8)

Super computadores

(9)

Super computadores

Rank Site Cores Tflops/s Power

(kW) 1 Sunway TaihuLight, National

Supercomputing

Center in Wuxi, China

10,649,600 93,014.6 15,371

2 Tianhe-2 (MilkyWay-2), National Super Computer Center in

Guangzhou, China

3,120,000 33,862.7 17,808

3 Piz Daint , Swiss National

Supercomputing Centre (CSCS), Switzerland

361,760 19,590.0 2,272

4 Titan, DOE/SC/Oak Ridge National Laboratory

United States

560,640 17,590.0 8,209

5 Sequoia, IBM

DOE/NNSA/LLNL United States

1,572,864 17,173.2 7,890

(10)

Arquitectura de Sistemas Distribuídos e Paralelos

Organização

SISD

Uma sequência de Instruções, uma sequência de dados

Uni processador

SIMD

Uma sequência de instrução, múltiplas sequências de dados

Processadores vectoriais

Processadores de matriz

MISD

Múltiplas sequência de instrução, uma sequência de dados

MIMD

Múltiplas sequência de instrução, múltiplas sequências de dados

Memória compartilhada (fortemente acoplada)

Memória distribuída (fracamente acoplada)

Clusters

Multiprocessador Acesso não

(11)

Topologias de interconexão em sistemas distribuídos

● Tipos redes de interconexão estáticas

0 1 2 3 1

2

3 4

5

1

2

3 4

5 6

7

1

2

3 4

5

Formação linear

Anel Anel de cordas grau 3

Totalmente conectada

Malha Árvore

binária

Cubo - 3 Estrela

(12)

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

Cache L2

Processador Cache L1

Cache L2

. . .

Memória

Principal E/S

Estrutura de BUS único

(13)

● Estrutura de bus jerarquizado: Pode estabelecer uma comunicação em seu nível independente de e simultânea aos demais.

Topologias de interconexão em sistemas paralelos

Processador

Cache L1

Cache L2

Processador Cache L1

Cache L2

. . .

Memória

Principal E/S

BUS Local

Processador

Cache L1

Cache L2

Processador Cache L1

Cache L2

. . .

Memória

Principal E/S

BUS Local

Interface de Bus

Interface de Bus

Bus Principal

(14)

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).

(15)

Tipos de Computadores Paralelos

Tipos de Computadores Paralelos

Memória Principal

Processador

P ...

1 P

2

P

Rede de interconexão k

M M 1 1 M M 2 2 ... M M k k

Memória

Rede de interconexão

P

1

M 1

P

2

M 2

P

k

M k ..

.

Me mó

ria D

istrib uíd a Me mó ria C om pa rtil ha da

Computador tradicional

...

(16)

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.

(17)

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

(18)

Multithreading em JAVA

(19)

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.

(20)
(21)

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.

(22)
(23)

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.

(24)

Ciclo de vida de um thread

(25)

Visão interna do sistema operacional do

estado runnable Java

(26)
(27)
(28)

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

(29)

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.

(30)

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

(31)

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.

(32)

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

(33)
(34)
(35)
(36)

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.

(37)

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.

(38)

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.

(39)

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)

(40)

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

(41)

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

(42)

Resumen

Sistemas Distribuídos Sistemas

Paralelos

(43)

Resumen

(44)

Conclução

(45)

Gerência de Processos Distribuídos:

Sub processamento múltiplo.

Docente: MSc. Angel Alberto Vazquez Sánchez ISUTIC

2017

Imagem

Referências

temas relacionados :