Professional Documents
Culture Documents
- Aula 5 –
PROCESSOS
1. INTRODUÇÃO
2. PROCESSOS
Neste sentido, em sistemas tradicionais, cada processo deve possuir o seu próprio espaço
de endereçamento e um único fluxo de execução. No entanto, em alguns casos é desejável haver
diversos fluxos de execução compartilhando um único espaço de endereçamento, ou seja, mesma
região de memória.
Em havendo um único fluxo de execução ocorre certa perda de desempenho. Como
exemplo, um servidor de arquivos deve esperar por requisições feitas ao disco, visto que o fluxo
de execução que fez a requisição é bloqueado aguardando a resposta.
Com vários fluxos de execução existe melhor vazão (throughput) e ganho de desempenho.
Seguindo o mesmo exemplo, se um 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.
Este é o princípio das threads.
1
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3. THREADS
As threads que fazem parte de um mesmo processo não são independentes como no caso
de diferentes processos. Todas as threads em um mesmo processo possuem a mesma região de
memória e compartilhando as mesmas variáveis globais. Sendo assim, uma determinada thread
pode ler, escrever ou mudar a pilha de dados de outra thread. Dessa forma, a proteção deve ser
implementada na aplicação.
As threads podem estar em diferentes estados:
- Executando
- Bloqueado
- Pronto
- Finalizado
2
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3.1.1. VANTAGENS
Nas threads a comunicação pode ser feita com a utilização de dados compartilhados.
O chaveamento ocorre entre espaços de usuário.
Nível Usuário
3
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Quando uma thread executa uma chamada de sistema, ela entra no estado de espera e
opera um semáforo enquanto o runtime system verifica se o thread deve ser suspensa.
- Existe um custo de criação e alocação da memória para a pilha.
- Chaveamento de contexto de thread pode ser feito em apenas algumas instruções. Não
há necessidade de mudar mapas de memória, descarregar o TLB (Translation Lookaside Buffer)
- As threads precisam entrar em sincronia.
Nível Kernel
4
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Os 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.
Em um browser web, o documento Web consiste em um texto, imagens, ícones, etc. Cada
elemento, browser estabelece uma conexão TCP/IP, para ler os dados e passar ao monitor do
usuário. Operações bloqueadoras fazem o estabelecimento da conexão e leitura de dados. Os
browsers começam a exibir dados enquanto, à medida 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. A vantagem é que o usuário não precisa
esperar até que todos os componentes sejam buscados.
Threads separados são ativados para se encarregar de buscar diferentes partes de uma
página, assim caso o servidor esteja em sobrecarga, ter um cliente multithread possibilita
estabelecer conexões com diferentes servidores, permitindo transmissão dos dados em paralelo,
onde o cliente pode manipular fluxos de dados de entrada em paralelo, por meio de threads.
Um servidor de arquivos normalmente espera pela entrada de uma requisição para uma
operação de arquivo e, na seqüência, executa a requisição e então devolve a resposta. Com a
utilização de threads é possível aumentar seu desempenho.
Os servidores multithreads funcionam da seguinte maneira:
- requisições são enviadas por clientes para uma porta no servidor.
- Uma thread despachante lê requisições que entram para uma operação de arquivo.
- O servidor escolhe uma thread operária.
- Se o thread escolhido estiver suspenso, outro thread é selecionado para ser executado,
como por exemplo, o thread despachante pode ser selecionado para adquirir mais trabalho.
5
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
4. VIRTUALIZAÇÃO
Threads e processos podem ser vistos como um modo de fazer diversas tarefas ao mesmo
tempo. Em computadores monoprocessados, a execução simultânea é uma ilusão, pois possuem
uma única CPU, ou seja, somente uma instrução de um único thread ou processo será executada
por vez.
A virtualização de recursos possibilita “fingir” que um determinado recurso está replicado
no sistema. Dessa forma, estende ou substitui uma interface existente de modo a imitar o
comportamento de outro sistema.
Figura 6 - (a) Organização geral entre Programa, Interface e Sistema. (b) Organização geral da virtualização do
sistema A sobre o B
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.
6
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Softwares em nível mais alto são mais estáveis que o hardware e sistemas de software de
baixo nível. Assim a virtualização pode ajudar transportando as interfaces de softwares para novas
plataformas. As novas plataformas são capazes de executar softwares existentes anteriormente.
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 como representado na figura a
seguir:
7
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 8 - (a) Máquina Virtual de processos com várias aplicações (instâncias). (B) Monitor de Máquina Virtual com
várias aplicações (instâncias)
5. CLIENTES E SERVIDORES
Uma tarefa muito importante de máquinas clientes é proporcionar aos usuários meios de
interagir com servidores remotos. Isto pode se dar de duas formas:
- Para cada serviço remoto, a máquina cliente terá um servidor separado, com o qual possa
estabelecer contato. Algumas operações são feitas no próprio cliente.
- Fornecer apenas uma interface de usuário conveniente. Máquina cliente é usada somente
como um terminal sem nenhuma necessidade de armazenamento.
O software no lado cliente pode ser mais do que uma interface. Em alguns casos, parte do
nível de processamento e dados são executadas no lado cliente.
8
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Se um cliente já está vinculado a um servidor, ele pode ser informado quando o servidor
mudar de localização. Um Middleware no cliente oculta do usuário a corrente localização do
servidor.
O Middleware cliente pode ser configurado para tentar a conexão com um servidor
repetidas vezes, ou tentar outro servidor após várias tentativas. O uso de cachê minimiza uma
falha na conexão com o servidor.
5.2. Servidores
Clientes enviam requisições a uma porta, na máquina em que o servidor está executando
Para alguns serviços conhecidos (FTP,HTTP) existem portas pré-definidas. Para serviços que não
requerem porta pré-determinada, uma opção é ter um daemon, onde o cliente o acessa e o
sistema operacional informa dinamicamente uma porta.
Outra maneira de manipular portas é o uso de superservidores. Para os casos onde
diversos servidores que possuem uma porta específica estão rodando em uma mesma máquina. O
monitoramento passa a ser realizado por um superservidor à escuta em cada porta associada com
um serviço específico. Exemplo é o daemon inetd no Unix.
9
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Não mantém informações sobre os estados dos clientes e podem mudar seu próprio estado
sem ter de informar a nenhum cliente, como por exemplo, o Servidor Web que, após processar
uma requisição, esquece o cliente. Mesmo sem estado, servidor Web guarda informações de
clientes. A perda não resulta na interrupção do serviço.
10
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Servidor promete manter estado em nome do cliente, por um tempo limitado. Após o
tempo limitado, o servidor descarta estas informações. Exemplo: Servidor promete manter um
cliente informado sobre atualizações.
6. MIGRAÇÃO DE CÓDIGO
6.1. Desempenho
O envio de processos de máquinas sobrecarregadas para máquinas com cargas mais leves
evita grande quantidade de mensagens trocadas entre aplicações cliente-servidor. Exemplos:
- Operações de banco de dados que envolvem uma grande quantidade de dados (aplicação
cliente/servidor)
- Formulários enviados do servidor para o cliente.
A migração de código é algo muito mais amplo: podemos também migrar status de um
programa, sinais pendentes e outras partes do ambiente. Um processo consiste em três
segmentos:
- Segmento de código: contém o conjunto de instruções que compõem o programa que
está em execução.
- Segmento de recursos: contém referências a recursos externos (arquivos, impressoras).
-Segmento de execução: armazenar o estado em execução de um processo no momento
da migração (dados privados, pilha, contador de programa).
11
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
12
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
13