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