Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Universidade Federal de Ouro Preto
Instituto de Ciências Exatas e Aplicadas - ICEA
Professor: Theo Lins
Disciplina: SD
Processos Distribuídos
Capítulo 3 - Aula 3
Threads
 Threads em SDs
Processos Clientes
Processos Servidores
 Processos
Um processo é um programa em execução, ou melhor, um 
ambiente onde se executa um programa.
P r o g r a m a
C o n t e x t o d e
S o f t w a r e
C o n t e x t o d e
H a r d w a r e
E s p a ç o d e
E n d e r e ç a m e n t o
Processos
 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
Processos
 
P r o g r a m a
C o n t e x t o d e
S o f t w a r e
p r i o r i d a d e d e
e x e c u ç ã o r e g i s t r a d o r P C
d a t a / h o r a
d e c r i a ç ã o
t e m p o d e
p r o c e s s a d o r
r e g i s t r a d o r S P
q u o t a s
p r i v i l é g i o s
e n d e r e ç o s d e m e m ó r i a
p r i n c i p a l a l o c a d o s
r e g i s t r a d o r
d e s t a t u s
o w n e r ( U I D )
P I D
n o m e
r e g i s t r a d o r e s
g e r a i s
C o n t e x t o d e
H a r d w a r e
E s p a ç o d e
E n d e r e ç a m e n t o
Informações referentes a um processo
Processos e Threads
Quando um processo é interrompido para que outro 
processo utilize a CPU, é realizada a Troca de Contexto.
Processo A
Salva BCP de PA
Salva BCP de PB
Carrega BCP de PB
Carrega BCP de PA
executando
Processos
 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
Processos
Diferentes tipos de processos desempenham papel 
crucial em sistemas distribuídos.
Usar processos multithreading auxiliam em melhoria 
de desempenho em sistemas cliente-servidor
Processos e Threads
Num sistema multithread, cada thread do processo 
possui o seu contexto de hardware e software (pois 
uma thread “disputa” a CPU com as outras threads 
e processos).
 A diferença com os sub processos é que todas as 
threads de um processo compartilham o mesmo 
espaço de endereçamento (gerando concorrência 
entre as threads).
Processos e Threads
Contexto
de hardware
Contexto
de hardware
Contexto
de hardware
Espaço de
endereçamento
C
on
te
xt
o 
d
e
so
ft
w
ar
e
Thread 3Thread 2Thread 1
Processos e Threads
Espaço de
endereçamento
Programa Principal
C
o
n
te
xt
o 
d
e
H
a
rd
w
a
re
C
o
n
te
xt
o 
d
e
H
a
rd
w
a
re
C
o
nt
ex
to
 d
e
H
a
rd
w
a
re
Call Sub_1
Call Sub_2
Thread_1
Thread_2
Thread_3
PC
SP
PC
SP
PC
SP
Fim
Sub_2
Variáveis
Ret
Sub_1
Ret
..
.
..
.
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á.
Paralelismo
Modelo esquemático
Threads em Sistemas não Distribuídos
Evitar que, ao se executar uma chamada bloqueadora, o 
processo seja bloqueado como um todo!
E/S
CPU
tempo
E/S
CPU
tempo
Implementação de Thread
Existem basicamente duas abordagens:
Construir uma biblioteca de threads que é 
executada inteiramente em modo usuário:
 Criar e terminar threads é barato;
 Escalonamento é feito internamente;
 Uma chamada bloqueadora bloqueia todo o processo.
Fazer com que o núcleo fique ciente dos threads e 
os escalone
 Criar e terminar threads tem alto custo;
 Escalonamento feito pelo S.O.;
 Chamada bloqueadora bloqueia apenas o thread
Implementação de Thread LWPs
Abordagem híbrida: LWP (Lightweight Process)
 Executa em um único contexto (pesado);
 Vários LWPs por processo;
 Todas operações em threads são realizadas sem 
intervenção do núcleo;
 Sincronização entre LWPs não requer intervenção do 
núcleo;
 Uma chamada bloqueante bloqueia um LWP, mas não os 
outros LWPs, que compartilham a tabela de threads 
entre si.
Threads em SDs
Proporcionam um meio conveniente para permitir 
chamadas bloqueadoras de sistema sem bloquear o 
processo inteiro no qual o thread está executando;
Imagine um processo monothread: O que aconteceria com 
o processo quando a interrupção da placa de rede é feita 
para envio/recebimento de dados?
Threads em SDs
Em sistemas distribuídos, a utilização de threads é 
atrativa dado que facilitam muito a comunicação → 
possibilidade de manter múltiplas conexões lógicas ao 
mesmo tempo
Exemplo: Uma aplicação P2P, onde é necessário 
receber informações dos vizinhos, processar algum 
algoritmo de decisão de mudança de topologia e atender 
novas requisições
Threads em SDs
Ilustração através da Arquitetura
Cliente-Servidor
 
Clientes Multithreads
Conforme vimos, sistemas distribuídos que operam 
em redes de grandes distância, devem buscar 
algum mecanismo de ocultar a latência de obtenção 
de informações → Transparência!
Consideremos um cliente Web...
Como implementar multithreading?
Clientes Multithreads
Em um browser Web...
Um documento Web consiste em um grande 
número de objetos
A busca de cada objeto de uma página HTML será 
feita após estabelecimento de uma conexão TCP
Estabelecimento e leitura de dados são operações 
bloqueadoras
Clientes Multithreads
Em um browser Web...
Com uma conexão persistente com paralelismo:
 Requisições são feitas sem que os objetos precedentes 
tenham chegados no cliente
 Cliente é capaz de manipular diversos fluxos em paralelo → 
Threads
Clientes Multithreads
Caso os dados estejam espalhados por diversas 
réplicas de servidores ...
 A utilização de threads possibilita os clientes 
estabelecerem diversas conexões, em paralelo, com 
o objetivo de disponibilizar um único documento
Servidores Multithreads
Servidor Multithread no modelo despachante/operário
Servidores Multithreads
 Para suportar e possibilitar um melhor desempenho 
de clientes WEB multithreading, servidores WEB 
devem ser implementados para suportar múltiplas 
conexões de diferentes (ou dos mesmos) usuários.
Servidores
Clientes
Proporcionar aos usuários meios de interagir com 
servidores remotos
Cliente possui uma aplicação sendo executada para 
cada serviço remoto
Cliente possui acesso direto a serviços remotos 
usando apenas uma interface de usuário
Clientes
Clientes
Cliente possui uma aplicação sendo executada para 
cada serviço remoto
Exemplo: Agenda sendo executada no PDA de um 
usuário e que precisa entrar em sincronia com uma 
agenda remota, possivelmente compartilhada
Clientes
Cliente possui acesso direto a serviços remotos 
usando apenas uma interface de usuário
Exemplo: Máquina cliente não possui nenhuma 
informação para processamento, tornando-a 
independente da aplicação → clientes minimizados 
→ facilidade de gerenciamento do sistema
Clientes – Sistema X Window (1/4)
 Desenvolvido em 1984 no MIT, é uma das 
interfaces de usuário em rede mais utilizadas
 
Usado para controlar terminais mapeados em bits
 Servidor distribui as ações de entrada do usuário 
(mouse e teclado) e aceita pedidos de saída através 
de vários programas clientes
Clientes – Sistema X Window (2/4)
Pode ser visto como a parte de um SO que controla 
o terminal
Oferece uma interface de nível relativamente baixo, 
para controlar a tela e para capturar os eventos do 
teclado e do mouse → biblioteca Xlib
Arquitetura Cliente-Servidor: núcleo X receberequisições vindas de diversas aplicações sendo 
executadas.
Gerenciador de janelas: determina a aparência geral 
do visor
Clientes – Sistema X Window (3/4)
Clientes – Sistema X Window (4/4)
Clientes podem rodar de forma transparente em 
máquinas diferentes → protocolo X de comunicação
Uma instância de Xlib pode trocar dados e eventos 
com o núcleo X
Xlib pode enviar requisições ao núcleo X para criar 
ou encerrar uma janela, estabelecer cores
O núcleo X reagirá a eventos locais (entrada de 
teclado e mouse)
Servidores
Questões gerais de projeto
 Iterativo ou Concorrente?
 Para onde os clientes enviam requisições?
 Como encerrar um serviço?
 Manter ou não o estado de um cliente?
Servidores
Iterativo ou Concorrente?
 Iterativo: O servidor é implementado através de um processo 
único, retirando a requisição do cliente e tratando-a
 Concorrente: O ´processo servidor´ não manipula a requisição 
propriamente dita, mas a passa para uma thread separada ou 
um outro processo.
Servidores
Para onde os clientes enviam requisições?
 Requisições são enviadas a um processo servidor através de 
uma porta
 Para alguns serviços, são atribuídas portas padrão: HTTP 80, 
FTP 21, SSH 22
 Em alguns casos, pode-se implementar um daemon, que 
´escuta´ uma porta conhecida e redireciona a requisição para 
a porta do serviço
 No caso Unix, inetd
Servidores
Para onde os clientes enviam requisições?
Servidores
Como encerrar um serviço?
 Considere um usuário transmitindo um arquivo via ftp e que 
decide interromper o servidor para cancelar a transferência
 Servidor encerra, após um tempo, a conexão
 Servidor possui uma conexão de controle
 Servidor trata, em uma mesma conexão, dados urgentes
Servidores
Manter ou não o estado de um cliente?
 Servidor sem estado: Não mantém informações sobre os 
estados de seus clientes e pode mudar o seu estado sem ter 
que informar a nenhum cliente
 Exemplos: Servidor Web, Servidor de arquivos
Servidores
Manter ou não o estado de um cliente?
 Servidor sem estado: Em alguns casos, servidores Web 
podem guardar informações dos clientes
 Podemos ter um servidor sem estado, que guarde 
informações de clientes, MAS ESTAS INFORMAÇÕES NÃO 
SÃO ESSENCIAIS PARA O FUNCIONAMENTO!!!
Servidores
Manter ou não o estado de um cliente?
 Servidor com estado: Mantém informações persistentes sobre 
os seus clientes.
 Exemplo: servidor de arquivos que permite um cliente manter 
cópia local de um arquivo → servidor guarda os clientes que 
têm permissão de mudanças no arquivo antes de atualizá-lo 
no localmente
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42

Mais conteúdos dessa disciplina