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).
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