Upload
doandiep
View
212
Download
0
Embed Size (px)
Citation preview
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
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)
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
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
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
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)
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
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