23
ANHANGUERA – 2016.2 PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS AULA 03 – PARADIGMAS DE COMUNICAÇÃO ENTRE PROCESSOS Prof. Thomás da Costa [email protected]

Programação de Sistemas Distribuídos - Aula 03

Embed Size (px)

Citation preview

Page 1: Programação de Sistemas Distribuídos - Aula 03

ANHANGUERA – 2016.2

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOSAULA 03 – PARADIGMAS DE COMUNICAÇÃO ENTRE PROCESSOS

Prof. Thomás da [email protected]

Page 2: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

PARADIGMAS DE COMUNICAÇÃO ENTRE PROCESSOS

PARADIGMAS DE COMUNICAÇÃO ENTRE PROCESSOS

Page 3: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

THREADS

ThreadsDetalhes:• No desenvolvimento de software, precisamos muitas vezes efetuar

operações paralelas.• Executando operações paralelas, nosso programa continua seu

processamento natural enquanto espera a conclusão de outras atividades.• Os processos paralelos podem ser definidos como um fluxo de controle

ativo dentro do nosso programa.

Page 4: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

THREADS

Threads

Processo 1

Processo 2

Processo 3

Sem Threads

Processo 1

Processo 2

Processo 3

Programa Principal

Com Threads

Page 5: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ThreadsO que é?:

THREADS

É fluxo alternativo e ativo dentro do nosso programa que executa paralelamente com o software principal e outros fluxos. Possui um bloco de instruções ou comandos que serão executados.

Page 6: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ThreadsDetalhes:• Conhecido como multiprogramação.• Boa parte das aplicações desenvolvidas nos dias atuais, utiliza de threads

para processamento de informações e melhoria de performance.• Tarefas podem ser paralelizadas em vários fluxos.• Tarefas podem ser distribuídas quando utilizamos threads.• Hoje grandes aplicações trabalham com threads, muitas delas distribuídas

em computadores diferentes.• São compostas por instruções de comandos de uma linguagem. No nosso

caso o Java.• Aproveitamos melhor os recursos de um sistema operacional.

THREADS

Page 7: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ThreadsDetalhes:

THREADS

• São conhecidas como processos leves.• Como foi dito, fazem parte do programa principal ou processo tradicional.• Possuem prioridades.• Podem possuir um identificador.• Podemos iniciar, parar ou colocar uma thread em espera.• São gerenciadas pelo sistema operacional.

Page 8: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ThreadsCiclo de Vida:

THREADS

Fonte: http://www3.ntu.edu.sg/home/ehchua/programming/java/j5e_multithreading.html

Page 9: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ThreadsDetalhes:

THREADS

• Threads ajudam no processo de escalonamento vertical de uma aplicação.• Em um sistema distribuído, existem vários programas em execução

espalhados dentro de um cluster.• Cada unidade de execução de um programa possui mais de uma Thread em

execução auxiliando na performance da aplicação como um todo.

Page 10: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

• É a execução de um determinado programa dentro de um sistema operacional.

• Processo possui uma identificação dentro do sistema operacional, normalmente um ID numérico.

• Além disso, possui estado da pilha e da área de dados da execução do processo.

• A grande diferença entre uma Thread e um processo é que a Thread é um subprocesso de um processo em execução.

ProcessosDetalhes:

PROCESSOS

Page 11: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

PROCESSOS

Page 12: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

PROCESSOS

Page 13: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

• Em sistemas operacionais como Linux, Unix e macOS existem comandos próprios para trabalhar com um processo:• Listando os processos:

• $ top• Identificando se um determinado processo está ativo:

• $ ps –ef | grep java• Parando a execução de um processo:

• $ kill 1899• Forçando a parada de um processo:

• $ kill -9 1899

ProcessosDetalhes:

PROCESSOS

Page 14: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

• São computadores que atendem requisições de um ou mais clientes para execução de uma determinada atividade.

• Tipos de servidores:• Arquivos.• Impressão.• Web.

• Este modelo é conhecido como Cliente/Servidor.

ServidorDetalhes:

SERVIDOR

Page 15: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Servidor WebDetalhes:

SERVIDOR WEB

• Hospedam sites e aplicações Web.• São acessados normalmente por clientes que possuem navegadores Web.• É baseado no protocolo HTTP.• Toda requisição Web de uma página possui um tipo.• As requisições são:

• POST• GET• PUT• DELETE

Page 16: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SERVIDORES WEB

Page 17: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SERVIDORES WEB

Page 18: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Load BalancerDetalhes:

LOAD BALANCER

• É um hardware ou um software que tem como principal objetivo balancear e distribuir as requisições dentro de um sistema distribuído.

• O load balancer identifica qual das máquinas dentro de um cluster possui mais disponibilidade e encaminha a requisição para a máquina selecionada.

• Muito utilizado para balancear requisições dentro de um servidor web e distribui-las de acordo com o processamento de cada aplicação instalada nos servidores.

Page 19: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SocketsDetalhes:

SOCKETS

• É uma comunicação feita de um cliente para um servidor utilizado o protocolo TCP/IP.

• O programa cliente se comunica com o servidor a partir de um endereço e uma porta especifica.

• Podemos rodar vários programas dentro de um mesmo computador utilizando várias portas diferentes.

• Em sistemas distribuídos, computadores se comunicam através de socket para identificar status do cluster e distribuir processos.

Page 20: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SOCKETS

SOCKETS

Page 21: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Migração de ProcessosDetalhes:

MIGRAÇÃO DE PROCESSOS

• Tem como principal objetivo migrar um determinado processo ou um código para uma outra unidade de processamento.

• Isso é base para o escalonamento de processos dentro um sistema distribuído.

• A migração acontece para utilizar recurso de um outro computador com o objetivo de melhorar a performance.

• O sistema leva em consideração CPU, memória e os recursos utilizados para efetuar a migração.

• Algumas aplicações distribuídas em Java, os processos estão serializados para que possam ser migrados de um recurso computacional para outro.

• Em outras situações, a aplicação cria JVM’s separadas do processo principal para efetuar a migração de uma forma mais simples.

Page 22: Programação de Sistemas Distribuídos - Aula 03

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Resumo• Threads são fluxo alternativos dentro de um programa.• Processo é a execução de um programa dentro de um sistema operacional.• Servidores tem como principal objetivo atender requisições de um cliente

para processar algum tipo de informação.• Aplicações Web rodam em Servidores Web.• Em um site Web podemos ter 4 tipos de requisições: GET, POST, PUT e

DELETE.

INTRODUÇÃO

Page 23: Programação de Sistemas Distribuídos - Aula 03

Obrigado !!!

ANHANGUERA – 2016.2