Estratégia de Trabalho

Propaganda
Sistemas Distribuídos
Processos
Gustavo Reis
[email protected]
1
- 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
2
- 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
3
- 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
4
- 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
5
- 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
6
- 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
7
- 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
8
- 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
9
- 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
10
- 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
11
- Threads
12
- 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
13
- 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
14
- 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
15
- 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)
16
- Implementação de thread
17
- 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
18
- 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
19
- 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
20
- Threads em Sist. Distribuídos
 Clientes multithread
21
- Threads em Sist. Distribuídos
 Clientes multithread
22
- 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
23
- 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
24
- Threads em Sist. Distribuídos
 Servidores multithread
25
- 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
26
- 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
27
- Virtualização
 O papel da virtualização em sistemas distribuídos
28
- 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
29
- 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)
30
- Virtualização
 Arquiteturas de máquinas virtuais
 Quatro tipos diferentes de interfaces
31
- Virtualização
 Arquiteturas de máquinas virtuais
 Dois modos de virtualização
32
- Virtualização
 Arquiteturas de máquinas virtuais
 Dois modos de virtualização
 Explicar a arquitetura do XEN
33
- 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
34
- Clusters de servidores
 Organização geral
35
- Clusters de servidores
 Organização geral
36
- 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
37
- 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)
38
- 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
39
- Clusters de servidores
 Servidores distribuídos
40
- Clusters de servidores
 Servidores distribuídos
41
Download