Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê...

54
Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê Balhester

Transcript of Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê...

Page 1: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Fabrizio Borelli

Gabriel Nobrega

Henrique Dorotea

Maitê Balhester

Page 2: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Sistemas Centralizados• Pode possuir N

processadores (sistema multiprogramados)

• Todos os processadores compartilham:

– Memória

– Clock

– Barramento

• Comunicação interprocesso:

– Memória Compartilhada

• Exemplos:

- PCs

- Mainframes: Computadores de grande porte, utilizado para o processamento de um grande volume de dados.

- Utilizado em bancos, universidades, empresas automobílisticas etc.

Page 3: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SC – Comunicação Interprocesso

Deve-se garantir que apenas um processo possa acessar sua seção crítica (recurso compartilhado) de cada vez.

Enquanto um processo está em sua seção crítica, os outros devem aguardar (exclusão mútua)

Técnicas de sincronização entre processos:

Semáforos

Monitores

Page 4: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Sistemas Distribuídos Coleção de computadores autônomos interligados através

de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados“ (Coulouris et al., 2001)

“Coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente” (Tanenbaum, 2002)

“Coleção de processadores que não compartilham memória ou clock. Em vez disso, cada processador tem sua própria memória local, e os processadores se comunicam entre si por meio de linhas de comunicação, como redes locais ou remotas” (Silberschatz et al., 2008)

Page 5: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD – Características• Hardware

– Máquinas são independentes e autônomas.

• Software– O sistema apresenta-se ao

usuário como uma única máquina.

• Compartilhamento de recursos• Capacidade de expansão Heterogenidade

– Sistema amplo– Variedade de arquitetura e de

sistemas operacionais

Sincronismo– Informação está

necessariamente dividida entre várias máquinas e discos

– Cada nó do sistema não compartilha relógio: cada um tem seu próprio “tempo”

– A disputa por recursos requer algoritmos mais complexos e que podem ser afetados pela comunicação entre processadores

Concorrência– Maior número de máquinas

equivale à maior concorrência

Page 6: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD - Características Transparência

– O usuário não precisa saber onde estão localizados os recursos, nem quantas cópias do recurso existem

– Recursos podem mudar de lugar sem que se altere o nome

– Concorrência e paralelismo ocorrem sem o conhecimento do usuário

Page 7: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD – Middleware Camada de abstração que fornece ao usuário

transparência nas operações executadas sobre a rede.

Page 8: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Vantagens de SD sobre SC• Performance

– Paralelizando tarefas em múltiplas maquinas é possível obter desempenhos bem superiores aos Sistemas Centralizados.

• Custo– Pode-se obter um SD com desempenho igual ou superior a um SC com um

menor custo através da associação de múltiplos processadores de baixo custo interligados em rede.

• Disponibilidade e confiabilidade – Máquinas independentes podem continuar operando no caso de falhas. Em SC

uma falha pode causar paralisação completa da tarefa.

• Crescimento Incremental– O poder computacional pode aumentar em “doses homeopáticas”, quando

necessário.

Page 9: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Desvantagens de SD sobre SC– Rede

– A rede pode, eventualmente, saturar. – Manutenção e/ou melhoria da rede pode ser caro– Tratamento e recuperação de mensagens pode ser custoso

– Software– Não há muita disponibilidade de softwares para sistemas distribuídos– Mudança de paradigma– O que deve ser feito pelo sistema e o que deve ser feito pelo usuário?

– Segurança– Compartilhamento de dados requer um esquema especial para proteção

de dados sigilosos– Garantir autencidade de dados– Credenciais de acesso aos dados, bloqueios etc.

Page 10: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD – Comunicação interprocesso Troca de mensagens (não há memória compartilhada)

Modelo cliente/servidor Servidores: Fornecem serviços aos usuários

Clientes: Utilizam dos serviços oferecidos pelo servidor Uma máquina pode executar um ou vários processos

servidores; um ou vários processos clientes ou uma combinação destes dois tipos

Vantagens: Simplicidade

Não é necessário estabelecer e finalizar a conexão

Eficiência

Page 11: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD – Comunicação interprocesso Modelo cliente/servidor

Duas chamadas ao SO

send(destino, &ponteiro_msg)

Envia uma mensagem para o processo destino apontada por ponteiro_msg, e o processo que executou o send() fica bloqueado até que a mensagem seja enviada

receive(end, &ponteiro_msg)

Bloqueia o processo que executa o receive() até que receba uma mensagem, que será copiada no buffer apontado por ponteiro_msg.

O parâmetro end especifica o endereço onde o receptor está esperando a mensagem

Page 12: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Sistema operacional distribuído Usuários acessam recursos remotos da mesma maneira

como fazem com recursos locais

Acesso a um recurso compartilhado pode ser da forma

Migração de dados

Migração de computação

Migração de processo

Page 13: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Migração de Dados Usuário de uma instalação I1 deseja acessar dados (ex.

um arquivo) que estão em outra instalação I2

Transfere-se o arquivo inteiro para a instalação I1 . Após a transferência, todo acesso ao arquivo é local.

Transfere-se apenas as partes necessárias para a tarefa imediata do arquivo para I1 . Se mais tarde for necessário acessar outra parte do arquivo, realiza-se outra transferência.

Quando o usuário não quiser mais usar o arquivo, todas as partes modificadas são enviadas de volta a I2

Page 14: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Migração de Computação

Às vezes, é menos custoso transferir a computação do sistema em vez dos dados

Se o tempo de transferência de dados for maior que o tempo para executar o comando remoto, deverá utilizar o comando remoto.

Page 15: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Migração de Computação Se um processo P quer acessar um arquivo residente na

instalação I1 .

O acesso ao arquivo é realizado em I1

P invoca um procedimento predefinido na I1, o procedimento é executado corretamento e retorna os resultado para P

P envia uma mensagem para I1, que cria um processo P2

responsável por executar a tarefa designada, e este retornará os resultados obtidos para P por meio de mensagens P e P2 podem executar concorrentemente

Page 16: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Migração de Processo Ao ser submetido para execução, um processo nem

sempre é executado na instalação em que foi iniciado.

– O processo todo, ou em partes, pode ser executado em diferentes instalações

Isso pode acontecer por vários motivos:

– Balanceamento de carga

– Aumento de velocidade de computação

– Preferência de hardware

– Preferência de software

– Acesso aos dados

Page 17: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Migração de Processo Duas técnicas

– Esconder do usuário o fato de o processo ter migrado de cliente.

Balanceamento de carga e aumento de velocidade de computação

– Usuário deixa explícito como deve ser migrado o processo

Preferência de hardware ou software

Page 18: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

SD – RMCI. Remote Procedure Call ou Chamada remota de

procedimento.

II. RPC ou Remote Procedure Call é um tipo de protocolo para chamada de procedimentos remotos que permite ser usado em diferentes sistemas, na qual permite a divisão de um programa em várias partes do sistema distribuído ou de uma rede, com a possibilidade inclusive de compartilhar os mesmos diretórios e arquivos. .

Page 19: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores
Page 20: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Vantagens Pode-se invocar métodos localizados em outras

máquinas sem a preocupação da implementação.

Pode-se compartilhar diretórios e arquivos.

Page 21: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Passos - Cliente Mandar a mensagem ao servidor, que contém os

parâmetros e implementação do procedimento.

Aguarda uma mensagem de resposta, que contém o resultado da execução do procedimento.

Coleta os resultados.

Prossegue com a execução

Page 22: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Passos - Servidor Processo aguarda a mensagem de invocação.

Extrai parâmetros e produz resultados.

Envia uma mensagem de resposta.

Page 23: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

História do RMI Anos 90 – Orientação a Objetos

Diferenças entre RMI e RPC

Porque Java?

Alguns Problemas.

Page 24: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Camadas Despachante/Esqueleto: é invocado primeiro, recebendo

objetos e serializando-os. Intercepta as chamadas de métodos feitas pelo cliente para que a variável de referência da interface redirecione essas chamadas para o serviço RMI remoto. Esta camada é a camada mais próxima ao desenvolvedor.

RRL – Remote Reference Layer: cada lado possui a sua, responsável por montar a mensagem de envio/resposta entre cliente/servidor . Interpreta e gerencia referências feitas dos clientes para os objetos do serviço remoto. A conexão do cliente ao servidor é Unicast (uma-para-um).

Transporte: envio das informações via rede. Trabalha com conexões TCP/IP entre as maquinas.

Page 25: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Modelo

Page 26: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Passos Cliente Iniciar conexão com a JVM, que contém o objeto

remoto.

Escrever e transmitir os parâmetros para JVM remota.

Esperar pelos resultados da invocação do método.

Ler os resultados retornados.

Retornar os valores ao objeto que executou a chamada .

Page 27: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Passos Servidor Ler os parâmetros enviados pelo despachante.

Invocar o método no objeto remoto

Escrever e transmitir o resultado ao objeto que executou a chamada.

Page 28: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores
Page 29: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores
Page 30: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Diagrama

Page 31: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Exemplo de código Mostrar Código e apresentar funcionando.

Page 32: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Cluster Cluster é um sistema onde dois ou mais computadores

conectados em rede trabalham de maneira conjunta para realizar processamento paralelo.

Os computadores dividem as tarefas e respondem requisições ao usuário de forma ao transparente.

Page 33: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Cluster – Quando utilizar?

Necessidade de tolerância a falhas.

Disponibilidade.

Maximização de performance a baixo custo.

Tarefas são paralelizáveis.

Ex: Computação Gráfica(processamento de imagens), Engenharia Genética e etc.

Page 34: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Cluster – Aspectos a se considerar

Quanto maior o desempenho se deseja alcançar, maior seráo número de máquinas no cluster, aumentando assim o trafego na rede.

A procura por desempenho trás consigo ineficência, entãodeve-se utilizar uma composição de máquinas ideal.

Complexidade da sincronização de recursos é superior aqueles encontrados em Sistemas Centralizados.

Page 35: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Cluster - Tipos Cluster de Alto Desempenho-Também conhecido como cluster de alta performance, funciona permitindo que ocorra uma

grande volume de processamento.

Cluster de Alta Disponibilidade- São clusters construídos para prover uma disponibilidade de serviços e recursos de forma

ininterruptas através do uso da redundância implícitas ao sistema. A idéia geral é que se um nó do cluster vier a falhar, aplicações ou serviços possam estar disponíveis em outro nó. Estes tipos de cluster são utilizados para base de dados de missões críticas, correio, servidores de arquivos e aplicações.

Cluster para Balanceamento de Carga- Este modelo distribui o tráfego entrante ou requisições de recursos provenientes dos nodos

que executam os mesmos programas entre as máquinas que compõem o cluster. Todos os nodos estão responsáveis em controlar os pedidos. Se um nó falhar, as requisições são redistribuídas entre os nós disponíveis no momento. Este tipo de solução é normalmente utilizado em fazendas de servidores de web.

Page 36: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI A Message-Passing Interface(MPI) é uma

especificação de biblioteca para troca de mensagens entre computadores definido por um comitê composto por empresas e desenvolvedores.

Desta especificação originaram-se implementações de bibliotecas, como LAM, OpenMPI e MPICH.

Page 37: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI Trabalha com o modelo SPMD(Single Program Multiple Data).

Cada processo é identificado por um “rank”.

Todos os processos são disparados por meio de execução remota nas máquinas determinadas.

Um cluster com N processos gera ranks de 0 a N-1.

Um rank pode ser encarado como um ID. Um mesmo programa deve ser executado em N máquinas e em cada máquina sua execução obterá números de ranks distintos, o que permite desviar o processamento do nó para uma parte especifica do programa(Parecido com o fork()).

Page 38: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI - Primitivas Existem mais de 125, abordemos as mais elementares.

MPI_Init– Inicialização para o ambiente MPI. MPI_Comm_size– Retorna o número de processadores(máquinas). MPI_Comm_rank– Retorna o "rank“ do processador(máquina). MPI_Send– Envia uma mensagem MPI_Recv– Recebe uma mensagem MPI_Finalize– Sai do ambiente MPI

Page 39: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI – Hello Worldint vet[] = {1,2,3,4,5};

int main(int argc, char *argv[])

{

int size, rank;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &size); // Determina a quantidade de processos

MPI_Comm_rank(MPI_COMM_WORLD, &rank); // Determina a identificação de cada processo

if (rank == 0) {

mestre(size);

}

else {

escravo(rank);

}

MPI_Finalize();

return 0;

}

Page 40: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI – Hello World// MPI_Send (void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)

// MPI_Recv (void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_Status *status)

void mestre(int size)

{ int i;

//Envia o vetor a todos os escravos

for (i=1;i<size;i++)

{printf("MESTRE-Enviando para %d\n",i);

MPI_Send(vet, 5, MPI_INT, i, 0, MPI_COMM_WORLD);

}

}

void escravo (int rank)

{

MPI_Status st;

MPI_Recv(vet,5,MPI_INT,0,MSG,MPI_COMM_WORLD,&st);

printf("ESC %d - Emissor:%d - Mensagem %d\n",rank, st.MPI_SOURCE,st.MPI_TAG);

imprimi(vet);

}

Page 41: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

MPI – Configuração Compilando programas MPI(ao invés de usar gcc e

adicionar bibliotecas manualmente)

mpicc nomedoprograma.c -o nomedoprograma

São iniciados daemons em máquinas que farão parte da "máquina paralela".

Esses daemons permanecem "adormecidos" nas máquinas remotas até que recebam um sinal para carregar um arquivo executável MPI.

Executando processos no cluster

mpirun -n k nomedoprograma

Page 42: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Parallel Virtual Machine(PVM) O PVM permite que um conjunto de máquinas

heterogêneas seja visualizado como uma única máquina paralela virtual. O PVM lida transparentemente com o roteamento de mensagens, conversão de dados e o escalonamento de processos em uma rede formada por arquiteturas antes incompatíveis.

Trata-se de uma biblioteca que pode desempenhar a mesma tarefa da MPI.

Seu uso está em baixa atualmente.

Page 43: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

PVM – Em baixa? MPI possui mais de uma biblioteca gratuita de

qualidade.

MPI é mais robusta ao se trabalhar com grupos.

Quando o cluster tem máquinas semelhantes em hardware e software para troca de mensagens o MPI possuí melhor desempenho que o PVM. O PVM foi escrito para trabalhar com máquinas de arquiteturas de hardware diferentes, com isto é necessário um maior volume de informações nos pacotes.

Page 44: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Sincronização

Para utilização dos recursos compartilhados em rede

precisamos de um algoritmo para:

Sincronizar e criar regras de uso dos recursos.

Entrada e saída das regiões criticas em um SD.

Page 45: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Sincronização através de ClockOs algoritmos distribuídos apresentam as seguintes

propriedades:

As informações relevantes são espalhadas pelas múltiplas máquinas;

Os processos tomam as decisões baseadas somente em

informações locais;

Um ponto de falha que paralise todo o sistema deve ser

evitado;

Não existe relógio comum ou um tempo global.

Page 46: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Clock Lógico Leslie Lamport prova que a sincronização dos relógios

é possível e apresenta o algoritmo para se conseguir isto.(Link segue em referências)

Ele também diz que a sincronização dos clocks não precisa ser absoluta pois, se dois processos não interagem não precisam ser sincronizados

E o importante é que os processos ocorram na ordem certa.

Page 47: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Clock Lógico – Algoritmo de Lamport Lamport definiu a seguinte relação: “acontece-antes”:

a b (a acontece antes de b)

A relação “acontece-antes” é transitiva, logo:

se a b e b c, então a c.

Para o algoritmo funcionar precisa de um método de medição, que é usado o tempo no caso C(a). Exemplo:

Se a b, então C(a) < C(b).

Page 48: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Clock Lógico – Algoritmo Centralizado de Cristian e Berkeley Algoritmo de Cristian:

Existe um servidor de hora exata. Os clientes enviam

mensagem ao servidor perguntando o tempo corrente e

ajustam seus clocks.

Algoritmo de Berkeley:

Servidor consulta cada maquina periodicamente para

saber seu tempo e tira a media de referente a todas

maquinas.

Page 49: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Clock Lógico- Algoritmo Distribuído

Dividem o tempo em intervalos fixos de “ressincronização”

Cada máquina envia broadcast com seu tempo corrente.

Estas mensagens não vão ser todas simultâneas

cada máquina inicia um temporizador para receber as mensagens em broadcast das outras máquinas

Cada máquina roda um algoritmo que calcula a média

Page 50: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Exclusão Mutua – Algoritmo Centralizado Um processo é eleito como Coordenador. Quando um

processo quer entrar na região crítica, ele envia uma mensagem requisitando ao Coordenador permissão para isso.

Caso região esteja vazia envia resposta de sim.

Caso esteja ocupada não responde, assim bloqueando processo.

Processo finalizando envia mensagem ao coordenador avisando que a região está livre.

Page 51: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Exclusão Mutua – Algoritmo Distribuído Quando um processo quer entrar na região critica ele

envia mensagem a todos e só pode entrar caso receba resposta de todos outros processos

O processo que recebe caso esteja utilizando região critica não responde e coloca o processo na sua fila, assim que termina usar, responde ok a todos da sua fila

Se um processo recebe mensagem de outro processo que deseja utilizar a mesma região critica que ele, o processo compara o tempo da mensagem que chegou com a que ele enviou, o menor vence.

Page 52: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Exclusão Mutua – Algoritmo Distribuído, Token Ring

Neste algoritmo é construído um anel lógico por software onde cada processo recebe uma posição do anel

Quando inicia o algoritmo o processo zero ganha o token, entra na região critica se preciso e passa o tokenpara o processo um e assim sucessivamente.

Não é possivel acessar uma segunda região critica com o token.

Page 53: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Eleição do Coordenador Processo P nota falta de resposta do Coordenador P inicia eleição: Envia mensagem indicativa de eleição a todos processos

com número de identificação superiores ao seu. Se nenhum processo responde, P ganha a eleição e torna-se

o novo coordenador. Se um ou mais processos responderem, eles passam a

controlar a eleição. Reinicia-se o processo de eleição até definir novo

coordenador Novo Coordenador envia mensagem a todos avisando seu

novo cargo

Page 54: Fabrizio Borelli Gabriel Nobrega Henrique Dorotea Maitê ...hostel.ufabc.edu.br/.../BC1518/arquivos/FabrizioBorelli_SO_Slides.pdf · Sistemas Distribuídos Coleção de computadores

Referências Coulouris, G.; Dollimore, J.; Kindberg, T.; Distributed

Systems - Concepts and Design, 3rd Ed., Addison Wesley, 2001

Tanenbaum, A. S.; Distributed Systems: Principles and Paradigms. Prentice Hall, 2002

Silberchatz, A.; Galvin, P. B.; Gagne, G., Sistemas Operacionais com JAVA, 7ª ed., Elsevier, 2008

http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf