41
1 Sistemas Distribuídos Gustavo Reis [email protected] Processos

Estratégia de Trabalho · O papel da virtualização em sistemas distribuídos Todo sistema de computador oferece uma interface de programação de software de alto nível

Embed Size (px)

Citation preview

1

Sistemas Distribuídos

Gustavo Reis

[email protected]

Processos

2

- Processos

Conceito originado do campos de sistemas operacionais no qual, em geral, são definidos como programas em execução

Do ponto de vista de um sistema operacional, o gerenciamento e escalonamento de processos são as questões mais importantes a discutir

Do ponto de vista de sistemas distribuídos outras questões se mostram ser de igual ou maior importância

3

- Processos

Ex.: para organizar sistemas cliente-servidor com eficiência, muitas vezes é conveniente usar técnicas de multithreading

Threads permitem que clientes e servidores sejam construídos de modo tal que comunicação e processamento local possam se sobrepor, resultando em alto nível de desempenho

4

- Threads

Para entender o papel dos threads em sistemas distribuídos, é importante entender o que é um processo e como processos e threads se relacionam

Ao executar um programa o sistema operacional cria vários processadores virtuais

Cada qual para executar um programa diferente

O SO mantém uma tabela de processos que contém entradas para armazenar valores de registrados de CPU, mapas de memória, arquivos abertos, informações de contabilidade, privilégios, etc

5

- Threads

Aspecto importante: o SO toma grande cuidado para assegurar que processos independentes não possam afetar, de modo intencional, ou não intencional, a correção do comportamento um do outro

Os processos podem compartilhar concorrentemente a mesma CPU e outros recursos de hardware de forma transparente

Essa transparência tem preço relativamente alto

6

- Threads

Cada vez que um processo é criado, o SO deve criar um espaço de endereços completos independente

Alocação pode significar iniciar segmentos de memória: por exemplo, zerando um segmento de dado, copiando o programa associado para um segmento de texto e estabelecendo uma pilha para dados temporários

Chaver a CPU entre dois processos pode ser igualmente caro

Caso o SO suporte mais processos do que pode conter simultaneamente na memória principal, terá que efetuar troca dinâmica de processos entre a memória principal e o disco antes que o chaveamento propriamente dito possa ocorrer

7

- Threads

Assim como um processo, um thread executa sua própria porção de código

Todavia, ao contrário dos processos, nenhuma tentativa é feita para conseguir alto grau de transparência de concorrência se isso resultar em degradação do desempenho

Threads em geral mantém a mínima informação que permita à CPU ser compartilhada por vários threads

8

- Threads

Informações que não são estritamente necessárias para gerenciar múltiplos threads em geral são ignoradas

Por essa razão, proteger

dados contra acesso

inadequado por threads

dentro de um único processo

fica inteiramente a cargo dos

desenvolvedores da aplicação

9

- Threads

Threads não são automaticamente protegidos uns contra os outros, como acontece com os processos

Sendo assim o desenvolvimento de aplicações multithread requer esforço intelectual adicional

Elaborar adequadamente o projeto e manter as coisas simples ajuda muito

10

- Threads

O benefício mais importante em sistemas multithread é sempre que for executada uma chamada bloqueadora por uma das threads o processo como um todo não é bloqueado.

Caso contrário se for um sistema monothread

Outra vantagem de sistema multithread é que se torna possível explorar paralelismo ao executar o programa em um sistema multiprocessador

Nesse caso, cada thread é designado a uma CPU diferente, enquanto dados compartilhados são armazenados em memória principal

11

- Threads

Em sistemas Unix a cooperação entre programas (processos) é implementada por meio de mecanismos de comunicação entre processos (IPC – Interprocess Communication)

Como IPC requer intervenção de núcleo, em geral um processo terá que chavear primeiro de modo usuário para modo núcleo

Isto requer trocar mapa de memória MMU e descarregar o TLB

12

- Threads

13

- Threads

O chaveamento de thread às vezes pode ser feito inteiramente em espaço de usuário

O efeito pode ser uma drástica melhoria em desempenho

Ex.: Threads cooperativos. Processador de texto pode usar threads separados para manipular entrada de usuário, verificação de ortografia e gramática, apresentação do documento, geração de índice, etc

14

- Implementação de thread

Threads são fornecidas em pacotes que contém operações de criação, finalização, sincronismo

Duas abordagens para implementação de um pacote de threads

Construção de bibliotecas executa inteiramente em modo usuário

Ciência do núcleo sobre a existências dos threads e que sejam escalonados

15

- Implementação de thread

Vantagens threads modo usuário

Criar e terminar threads são baratos (custo de alocação de memória para estabelecer uma pilha de threads)

Chaveamento de contexto de thread pode ser feito em apenas algumas instruções. Basicamente somente valores dos registradores de CPU precisam ser armazenados

16

- Implementação de thread

Desvantagen threads modo usuário

Uma invocação de uma chamada bloqueadora de sistema imediatamente bloqueará todo o processo ao qual o thread pertence

Este problema pode ser contornado pela implementação de threads no núcleo do sistema operacional, mas o custo é alto

Outra solução está em uma forma híbrida de threads de nível de usuário e nível de núcleo, denominado LWP (Lightweight Processes)

17

- Implementação de thread

18

- Implementação de thread

Vantagens do LWP em combinação com threads nível de usuário

Criar, destruir e sincronizar threads é relativamento barato e não envolve absolutamente nenhuma intervenção do núcleo

Contanto que um processo tenha LWPs suficientes, uma chamada bloqueadora de sistema não suspenderá o processo inteiro

A aplicação não tem conhecimento dos LWPs. Tudo é visto como threads de nível de usuário

LWPs podem ser usados com facilidade em ambientes de multiprocessamento, pela execução de diferentes LWPs em diferentes CPUs

19

- Threads em Sist. Distribuídos

Threads podem proporcionar um meio conveniente de permitir chamadas bloqueadoras de sistema sem bloquear o processo inteiro

Esta propriedade torna-se atrativa na utilização em sisetmas distribuídos, uma vez que facilitam comunicação na forma de manter múltiplas conexões lógicas ao mesmo tempo

Caso de uso comunicação cliente/servidor multithread

20

- Threads em Sist. Distribuídos

Clientes multithread

Sistemas distribuídos que operam em redes de longa distância podem precisar esconder longos tempos de propagação (latência) de mensagens entre processos

A maneira usual de ocultar latências de comunicação é iniciar a comunicação e imediatamente prosseguir com alguma outra coisa

Ex.: requisição WEB. O navegador busca o arquivo html e já vai exibindo o conteúdo. Para cada objeto que compõe o arquivo são criados threads em separados para estabelecer conexão e buscar estes objetos

21

- Threads em Sist. Distribuídos

Clientes multithread

22

- Threads em Sist. Distribuídos

Clientes multithread

23

- Threads em Sist. Distribuídos

Clientes multithread

Ao ser usado clientes multithread, podem ser estabelecidas conexões com diferentes réplicas do servidor web

Isto determina que o documento web inteiro seja totalmente exibido em tempo muito menor do que com um servidor não replicado

Essa abordagem só é possível se o cliente manipular fluxos de dados de entrada verdadeiramente paralelos. Threads são ideais para essa finalidade

24

- Threads em Sist. Distribuídos

Servidores multithread

A principal utilização de multithread em sistemas distribuídos é encontrada no lado do servidor

Multithread não somente simplifica consideravelmente o código do servidor, mas também facilita muito o desenvolvimento de servidores que exploram paralelismo para alto desempenho

25

- Threads em Sist. Distribuídos

Servidores multithread

26

- Virtualização

Threads e processos permitem construir programas que parecem ser executados simultaneamente

Em sistemas monoprocessados dá a ideia de que programas estão sendo executados em paralelo por causa do chaveamente rápido entre threads e processos

Virtualização de recursos

27

- Virtualização

O papel da virtualização em sistemas distribuídos

Todo sistema de computador oferece uma interface de programação de software de alto nível

Há vários tipos de interfaces (instruções oferecidas por uma CPU, conjunto de interfaces de programação de middleware)

Em essência, a virtualização trade de estender ou substituir uma interface existente de modo a imitar o comportamento de um outro sistema

28

- Virtualização

O papel da virtualização em sistemas distribuídos

29

- Virtualização

O papel da virtualização em sistemas distribuídos

Uma das questões mais importantes para introduzir a virtualização foi permitir que software herdado executasse em caros hardwares de mainframe

A virtualização ajuda, em muito, a administração de diversas plataformas e máquinas, reduzindo a quantidade de máquinas

30

- Virtualização

Arquiteturas de máquinas virtuais

Quatro tipos diferentes de interfaces

Instruções de máquinas: interface entre o hardware e o software. Podem ser invocadas por qualquer programa

Instruções privilegiadas: interface entre o hardware e o software. Invocadas somente por programas privilegiados, como o SO

Chamadas de sistema: oferecidas por um sistema operacional

Interface de aplicação de programação: chamadas de bibliotecas (ocultam a chamada de sistema)

31

- Virtualização

Arquiteturas de máquinas virtuais

Quatro tipos diferentes de interfaces

32

- Virtualização

Arquiteturas de máquinas virtuais

Dois modos de virtualização

33

- Virtualização

Arquiteturas de máquinas virtuais

Dois modos de virtualização

Explicar a arquitetura do XEN

34

- Clusters de servidores

Organização geral

Conjunto de máquinas conectadas por uma rede, no qual cada máquina executa um ou mais servidores

Logicamente um cluster de servidores é organizado em três camadas

35

- Clusters de servidores

Organização geral

36

- Clusters de servidores

Organização geral

37

- Clusters de servidores

Servidores distribuídos

Conjunto de máquinas que possivelmente muda dinamicamente

Mas se apresenta para o mundo externo como uma única e poderosa máquina

Ex.: cluster de dinâmico configurado por máquinas de usuários finais

38

- Clusters de servidores

Servidores distribuídos

Suporte de mobilidade para IPv6 (MIPv6)

Nó móvel tem uma rede nativa e possui endereço estável associado (endereço nativo – Home Address HA)

Rede nativa possui um repassador especial (agente nativo)

39

- Clusters de servidores

Servidores distribuídos

Ao se desligar da rede nativa e for para a rede externa o nó receberá um endereço externo (Care-of Address – COA)

O COA é informado ao agente nativo

40

- Clusters de servidores

Servidores distribuídos

41

- Clusters de servidores

Servidores distribuídos