segunda-feira, 11 de abril de 2011

Sistemas Distribuídos - Threads

Threads

Definição: É uma unidade básica de utilização de CPU: ID de definição; Contador de programa; Um conjunto de registradores; Um pilha.

Além disso, compartilha com outras threads pertencentes ao mesmo processo sua seção de:
  • Código
  • Dados
  • E outros recursos S.O., como arquivo abertos e sinais. 
Benefícios da programação Multithread
  • Responsividade
  • Compartilhamento
  • Economia
  • utilização de arquitetura multiprocessadas

Categorias de threads

Threads de Kernel: Gerenciadas pelo sistema operacional
Threads de usuário: Gerenciadas pela aplicação

Modelos de threads

  • Modelo muitos para um
  • Modelo um para um
  • Modelo muitos para muitos

Threads em Sistemas Distribuídos

Implementação de threads: Basicamente existem 2 abordagem na criação de threads, sendo elas:

1)      Construir uma biblioteca de threads que é executada inteiramente em modo usuário
2)      Fazer com que o kernel fique ciente das threads e os escalone.

Conceito Cliente/Servidor

Cliente: Praticamente existe 2 modo que um cliente pode ser visto em um ambiente distribuídos, sendo elas:

1)      Para cada serviço remoto, a máquina cliente terá uma contraparte separada que pode contatar o serviço pela rede.
2)      Fornece acesso direto a serviços remotos, disponibilizando apenas uma interfaces de usuários conveniente.

Cliente Multithreads

Funcionamento

1)      Primeiramente é necessário que essa thread consiga realizar uma conexão de alta velocidade.
2)      Precisa controlar a latência entre a solicitação e a resposta que o servidor enviará;
3)      Enquanto o servidor não encaminha nada, o cliente pode realizar alguma tarefa;

Servidor

É um processo que implemento um serviço específico em nome de um conjunto de cliente

Funcionamento

Em essência, cada servidor é organizado do mesmo modo, ou seja:
  • Ele espera por uma requisição que vem de um cliente, e na sequência, assegura que ela seja atendida.
  • E depois fica aguardando pela próxima requisição

Modo de organização de um servidor:
  • Servidores Iterativo: O servidor manipula a requisição e, se necessário, retorna uma resposta ao cliente requisitante.
  • Servidores concorrente: O servidor manipula por si próprio a requisição mas passa para uma thread separada ou para outro processo, depois imediatamente espera pela próxima requisição

Característica

Um ponto importante em um servidor é como o cliente contatam um servidor; Em todos os casos os clientes enviam requisições a um terminal, também chamado de porta, na máquina em que o servidor esta executando.

Uma abordagem é designar globalmente portas para serviços bem conhecidos, por exemplo:

  • Servidores que manipulem requisições FTP sempre ouvem a porta TCP 21.
  • Servidores HTTP sempre ouvem a porta TCP 80

IANA ( Internet assigned numbers authortiy)

  • Outro ponto que precisamos analisar em um servidor é quando o cliente aborta uma operação.

Solução

1 ) Fora da banda: O cliente e o servidor enviam dados que serão processados antes de quaisquer outros dados daquele cliente. 
2 ) Porta de controle: O servidor abre uma outra porta (com prioridade mais baixa).


 Estado do Servidor

Sem estado: Significa que o servidor não mantém informações sobre o estado de seus clientes e pode mudar seu próprio estado sem ter de informar a nenhum cliente

Com estado: Significa que o servidor mantém informações persistente sobre seus cliente.

Servidores Multithread

Uma implementação em um servidor, possibilita realizar um processamento paralelo, esmo que este seja monoprocessado;

Isso porque, o servidor encaminha para vários clientes, tarefas, as quais serão processadas em recursos (processadores) diferentes;

No servidor, podemos ter duas estrutura possíveis, sendo elas:
1)      Servidores multithread
2)      Servidores monothread

Seu funcionamento é realizar as chamas Send e Receive, ou seja, enviar e receber.

Nenhum comentário:

Postar um comentário