Sistemas Distribuídos Aula 3 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF
Processos Um processo é um programa em execução, ou melhor, um ambiente onde se executa um programa. C ontexto de Softw are C ontexto de H ardw are Programa Espaço de Endereça mento
Revisitando Processos e Threads Informações referentes a um processo priorida de de execuçã o owner (UID) nome PID reg istradores g erais reg istrador PC data/hora de criação C ontexto de Software C ontexto de H ardware tempo de processador reg istra dor SP quota s privilég ios Program a Espaço de Endereça mento reg istrador de status
Revisitando 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 Carrega BCP de PB executando Salva BCP de PB Carrega BCP de PA
Revisitando 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).
Contexto de software Revisitando Processos e Threads Contexto de hardware Contexto de hardware Contexto de hardware Thread 1 Thread 2 Espaço de endereçam ento Thread 3
... Contexto de Hardware Contexto de Hardware Contexto de Hardware... Revisitando Processos e Threads Processo Espaço de endereçamento Variáveis Thread_1 Programa Principal Call Sub_1 PC SP Call Sub_2 Fim Thread_2 Sub_1 PC SP Ret Thread_3 Sub_2 PC SP Ret
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 E/S CPU tempo tempo
Threads em Sistemas não Distribuídos Exemplos????
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
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 chegado 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 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
Fim da Aula 3. Sistemas Distribuídos: Msc. Daniele C. Oliveira 25