Processos (Threads e Virtualização)

Propaganda
Sistemas Distribuídos
Jorge Surian
[email protected]
Sistemas Distribuídos: Processos (Threads e Virtualização)
Processos
 Conceitos Gerais
– Sistemas operacionais modernos criam vários
processadores virtuais, cada um para executar um
programa.
– Para monitorar os processadores virtuais o sistema
operacional tem uma tabela de processos que contem
entradas para armazenar valores de registradores de
CPU, mapas de memória, arquivos abertos, etc.
2
2
Processos
 Conceitos Gerais
– Em sistemas distribuídos o uso de técnicas
multithreading permite a construção de maneira que
servidores e clientes tenham seu processamento local
com superposição entre comunicações e
processamento, visando garantir desempenho.
– O Sistema Operacional é o responsável por
assegurar que processos independentes não afetem
(modos intencional, malicioso ou acidental) a
correção do comportamento dos outros processos
sendo executados.
3
3
Processos
 Conceitos Gerais
– Transparência no compartilhamento da mesma CPU
e outros recursos de hardware.
– Transparência implica em custo:
»
»
»
»
Criação de espaço de endereços completamente independentes.
Chavear a CPU entre dois processos.
Salvar o contexto da CPU.
Troca de informações entre disco e memória principal.
4
4
Processos
 Conceitos Gerais
– Em sistemas tradicionais, cada processo possui o seu
próprio espaço de endereçamento e um único fluxo
de execução.
– No entanto, em alguns casos e desejável haver
diversos fluxos de execução compartilhando um único
espaço de endereçamento, ou seja, numa mesma
região de memória.
– Único fluxo de execução implica em
obrigar o servidor de arquivos esperar por
requisições feitas ao disco. O fluxo de
execução que fez a requisição é bloqueado
aguardando a resposta. Isso implica em...
PERDA DE DESEMPENHO
5
5
Processos
 Conceitos Gerais
– Como se evitar a perda de desempenho?
» Adoção de Vários Fluxos de Execução
–Se o servidor de arquivos é implementado
usando diferentes fluxos de execução, outras
requisições de clientes podem ser
processadas, enquanto o primeiro fluxo
aguarda a resposta do disco.
MELHOR VAZÃO (THROUGHPUT)
PORTANTO: GANHO DE DESEMPENHO
6
6
Processos - Threads
 Conceitos Básicos – Threads
– Para executar um programa, um sistema operacional
cria vários processadores virtuais, cada um voltado a
execução de um processo.
– Para monitorar esses processadores virtuais o
sistema operacional possui uma tabela de processos
onde estão as entradas para armazenar valores de
registradores de CPU, mapas de memória, privilégios,
entre outras coisas.
– Cada um dos fluxos de execução de um processo é
chamado de thread.
7
7
Processos - Threads
 Conceitos Básicos – Threads
– Threads podem ser vistas como mini-processos.
– Cada thread executa sua própria porção de código.
– Threads compartilham a CPU do mesmo modo que
diferentes processos (timesharing).
8
8
Processos - Threads
 Exemplo teórico
– Consideremos um usuário operando uma planilha
eletrônica de cálculos. Ora, uma importante condição,
quando se pensa em planilhas eletrônicas, é que se
uma célula qualquer de uma planilha for alterada,
dezenas, talvez centenas de cálculos venham a ser
propagados por causa dessa mudança.
– Naturalmente uma mudança numa planilha
também pode afetar outras planilhas referenciadas
pela primeira planilha onde ocorreu a mudança.
– O que ocorreria se tivéssemos apenas uma
thread de controle?
PARADA TOTAL!!!!
9
9
Processos - Threads
 Exemplo teórico
– Temos então uma situação onde três threads devem
existir:
1. Manipulador da interação com o usuário.
2. Atualizador de cálculos e dependências da planilha.
3. Responsável pela segurança do processo, gerando
backup da planilha enquanto os outros dois threads
executam seus trabalhos.
10
10
Processos - Threads
 Paralelismo
– Se cada thread for executada em uma CPU distinta,
todo processo funcionará mais rapidamente. Se o
paralelismo for real ambas as threads poderão ser
executadas na mesma CPU de forma transparente,
somente o desempenho do programa é que cairá.
11
11
Processos - Threads
 Modelo esquemático (paralelismo)
12
12
Processos: Threads em Sistemas Não Distribuídos
 Threads que fazem parte de um mesmo processo não
são independentes como o caso de diferentes
processos.
 Todos threads em um mesmo processo se localizam
numa mesma região de memória, compartilhando as
mesmas variáveis globais.
13
13
Processos: Threads em Sistemas Não Distribuídos
 Um determinado thread pode ler, escrever ou mudar a
pilha de dados de um outro thread.
 Proteção deve ser feita pela aplicação.
 Threads podem estar em diferentes estados:
executando, bloqueado, pronto ou finalizado.
Itens Por Processo
Itens Por Thread
PC
Pilha
Registradores
Threads Filhas
Estado
Espaço de endereçamento
Variáveis Globais
Arquivos abertos
Processos filhos
Sinais
Timers
Informações da Conta
Semáforos
14
14
Processos: Threads em Sistemas Não Distribuídos
 Principais Vantagens:
1. Explorar paralelismo ao executar um programa em
um sistema multiprocessador. Cada thread e
designado a uma CPU, enquanto dados
compartilhados são armazenados em memória
compartilhada, por exemplo.
2. Grandes aplicações, desenvolvidas como um
conjunto de programas cooperativos, o que evita
chaveamento entre diferentes processos – A
comunicação é feita através de Interprocess
Communication (IPC).
15
15
Processos: Threads em Sistemas Não Distribuídos
 Threads → A comunicação pode ser feita com a
utilização de dados compartilhados.
 Chaveamento → Espaço de cada usuário.
16
16
Processos: Threads em Sistemas Não Distribuídos
 Implementação no nível usuário.
– Threads rodam sobre o runtime system – coleção de
procedimentos que gerenciam as threads.
– Quando um thread executa uma chamada de sistema,
'dorme', opera um semáforo ou mutex, o runtime
system verifica se o thread deve ser suspenso.
17
17
Processos: Threads em Sistemas Não Distribuídos
 Implementação no kernel
– Criação, encerramento, sincronização deverão ser
feitos pelo kernel.
– Chamadas de sistema deverão ser realizadas.
– Chavear contextos de threads é tão caro quanto
chavear contexto de processos.
18
18
Processos: Threads em Sistemas Distribuídos
 Importante propriedade de threads é que eles podem
proporcionar um meio conveniente de permitir
chamadas bloqueantes de sistema sem bloquear o
processo inteiro.
 Threads são particularmente atraentes para utilização
em sistemas distribuídos, pois facilitam muito a
comunicação na forma de manter múltiplas conexões
lógicas concomitantemente.
19
19
Processos: Clientes Multithreads
 Sistemas distribuídos que operam em redes de longa
distância → escondem longos tempos de propagação
de mensagens entre processos.
 A maneira de ocultar latências de comunicação é iniciar
a comunicação e imediatamente prosseguir com outra
atividade.
20
20
Processos: Clientes Multithreads
Browsers Web
 Documento Web consiste em: texto, imagens, ícones,
etc.
 A cada elemento, o browser estabelece uma conexão
TCP/IP, para ler os dados e apresentá-la.
 Operações bloqueadoras: estabelecimento da conexão,
leitura de dados.
 Browsers começam a exibir dados a medida em que
novas informações chegam.
 Enquanto o texto está sendo disponibilizado para o
usuário, incluindo as facilidades de rolamento, o browser
continua buscando outros arquivos, como imagens.
 Vantagem: O usuário não precisa
esperar até que todos os componentes
sejam buscados para interagir.
21
21
Processos: Clientes Multithreads
Browsers Web
 Browser como clientes multithread simplifica
 Threads separados são ativados para se encarregar de
buscar diferentes partes de uma página.
 Caso o servidor esteja em sobrecarga, ter um cliente
multithread possibilita estabelecer conexões com
diferentes servidores, permitindo transmissão dos dados
em paralelo.
 Cliente pode manipular fluxos de dados de entrada
em paralelo → Threads!
22
22
Processos: Servidores Multithreads
 Esquema de Funcionamento de um Servidor
Multithreads
23
23
Processos: Servidores Multithreads
 Se o servidor é inteiramente CPU bound, não faz
sentido o uso de threads, pois tal situação gera aumento
de complexidade sem ganho de desempenho.
 Processos CPU-bound: processos com longos tempos
de execução e baixo volume de comunicação entre
processos. Exemplo: aplicações científicas, engenharia e
outras aplicações que demandam alta performance de
computação fazendo uso intensivo de entradas e saídas
ou de memória para gráficos em 3D, entre outras
aplicações.
24
24
Processos: Virtualização
 Virtualização de recursos: “fingir” que um determinado
recurso esta replicado no sistema.
25
25
Processos: Virtualização
 Threads e processos podem ser vistos como um modo
de fazer diversas tarefas ao mesmo tempo.
 Em computadores monoprocessador, a execução
simultânea e uma ilusão. A existência de uma única CPU
implica que somente uma instrução de um único thread
ou processo será executada por vez.
 Virtualização de recursos: “fingir” que um determinado
recurso esta replicado no sistema.
26
26
Processos: Virtualização
 Conceito
– Estende ou substitui uma interface existente de modo
a imitar o comportamento de um outro sistema.
Notar:
Virtualização
do sistema A
sobre o
sistema B
27
27
Processos: Virtualização
 Histórico
– Na década de 1970 a virtualização foi aplicada com
sucesso nos mainframes IBM, que ofereciam uma
máquina virtual para executar softwares que incluíam
aplicações e também os sistemas operacionais.
 Explicação
– Softwares em nível mais alto (aplicações e
middleware) são mais estáveis (duradouros) que o
hardware e sistemas de software de baixo nível
(sistemas operacionais), assim a virtualização pode
ajudar transportando as interfaces de softwares para
novas plataformas.
– Novas plataformas são capazes de executar
softwares existentes anteriormente.
28
28
Processos: Virtualização
 Arquiteturas de máquinas virtuais
– Existem vários modos pelos quais a virtualização
pode ser realizada na prática.
– Existem quatro tipos diferentes de interfaces em
quatro níveis diferentes.
29
29
Processos: Virtualização

Arquiteturas de máquinas virtuais
1. Instruções gerais que são uma interface entre o
hardware e o software, o qual consiste em instruções
de máquina que possam ser invocadas por qualquer
programa.
2. Instruções privilegiadas que são uma interface
entre hardware e o software, o qual consiste em
instruções de máquina que possam ser invocadas
somente por programas privilegiados, como um
sistema operacional.
30
30
Processos: Virtualização

Arquiteturas de máquinas virtuais
3. Chamadas de sistema, uma interface que consiste
em chamadas de sistema como oferecidas por um
sistema operacional.
4. Funções de biblioteca, uma interface que consiste
em chamadas de biblioteca que, em geral, formam o
que é conhecido como API (application programming
interface – interface de aplicação de programação).
Em muitos casos, as chamadas de sistema estão
ocultas em uma API.
31
31
Processos: Virtualização
 Conceito
– A essência da virtualização é a imitação do
comportamento das interfaces (instruções de
máquina, chamadas de sistema).
» Máquina virtual de processo, permite que aplicações desenvolvidas
para um Sistema Operacional sejam executadas em outro Sistema
Operacional.
» Virtualização feita somente para um único processo.
32
32
Processos: Virtualização
 Emuladores
– A imitação de chamadas de um sistema não é um
processo trivial!
– Um emulador é um software que reproduz as
funções de um determinado ambiente, a fim de
permitir a execução de outros softwares sobre ele.
Pode ser pela transcrição de instruções de um
processador alvo para outro no qual ele está rodando,
ou pela interpretação de chamadas para simular o
comportamento de um hardware específico. O
emulador também é responsável pela simulação dos
circuitos integrados ou chips do sistema de hardware
em um software. Basicamente, um emulador expõe
as funções de um sistema para reproduzir seu
comportamento, permitindo que um software criado
para uma plataforma funcione em outra.
33
33
Processos: Virtualização
 Monitor de máquina virtual
– Fornece o conjunto de instruções completo do
hardware.
– Vários sistemas operacionais diferentes executando
independente e concorrentemente na mesma
plataforma.
– Importantes no contexto de confiabilidade e
segurança → isolamento de uma aplicação e seu
ambiente → falhas não afetam a maquina inteira.
34
34
Processos: Virtualização
 Monitor de máquina virtual
35
35
Fonte:
Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São
Paulo: Prentice Hall, 2008.
Copyright © 2010 Prof. Jorge Surian
Todos direitos reservados. Reprodução ou divulgação total ou parcial deste documento é
expressamente proíbido sem o consentimento formal, por escrito, do Professor Surian.
36
36
Download