Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e Virtualização) Processos Conceitos Gerais – Sistemas operacionais modernos criam vários processadores virtuais, cada um para executar um programa. – Para monitorar os processadores virtuais o sistema operacional tem uma tabela de processos que contem entradas para armazenar valores de registradores de CPU, mapas de memória, arquivos abertos, etc. 2 2 Processos Conceitos Gerais – Em sistemas distribuídos o uso de técnicas multithreading permite a construção de maneira que servidores e clientes tenham seu processamento local com superposição entre comunicações e processamento, visando garantir desempenho. – O Sistema Operacional é o responsável por assegurar que processos independentes não afetem (modos intencional, malicioso ou acidental) a correção do comportamento dos outros processos sendo executados. 3 3 Processos Conceitos Gerais – Transparência no compartilhamento da mesma CPU e outros recursos de hardware. – Transparência implica em custo: » » » » Criação de espaço de endereços completamente independentes. Chavear a CPU entre dois processos. Salvar o contexto da CPU. Troca de informações entre disco e memória principal. 4 4 Processos Conceitos Gerais – 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 5 5 Processos Conceitos Gerais – 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 6 6 Processos - Threads Conceitos Básicos – Threads – Para executar um programa, um sistema operacional cria vários processadores virtuais, cada um voltado a execução de um processo. – Para monitorar esses processadores virtuais o sistema operacional possui uma tabela de processos onde estão as entradas para armazenar valores de registradores de CPU, mapas de memória, privilégios, entre outras coisas. – Cada um dos fluxos de execução de um processo é chamado de thread. 7 7 Processos - Threads Conceitos Básicos – Threads – Threads podem ser vistas como mini-processos. – Cada thread executa sua própria porção de código. – Threads compartilham a CPU do mesmo modo que diferentes processos (timesharing). 8 8 Processos - Threads Exemplo teórico – Consideremos um usuário operando uma planilha eletrônica de cálculos. Ora, uma importante condição, quando se pensa em planilhas eletrônicas, é que se uma célula qualquer de uma planilha for alterada, dezenas, talvez centenas de cálculos venham a ser propagados por causa dessa mudança. – Naturalmente uma mudança numa planilha também pode afetar outras planilhas referenciadas pela primeira planilha onde ocorreu a mudança. – O que ocorreria se tivéssemos apenas uma thread de controle? PARADA TOTAL!!!! 9 9 Processos - Threads Exemplo teórico – Temos então uma situação onde três threads devem existir: 1. Manipulador da interação com o usuário. 2. Atualizador de cálculos e dependências da planilha. 3. Responsável pela segurança do processo, gerando backup da planilha enquanto os outros dois threads executam seus trabalhos. 10 10 Processos - Threads 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á. 11 11 Processos - Threads Modelo esquemático (paralelismo) 12 12 Processos: Threads em Sistemas Não Distribuídos Threads que fazem parte de um mesmo processo não são independentes como o caso de diferentes processos. Todos threads em um mesmo processo se localizam numa mesma região de memória, compartilhando as mesmas variáveis globais. 13 13 Processos: Threads em Sistemas Não Distribuídos Um determinado thread pode ler, escrever ou mudar a pilha de dados de um outro thread. Proteção deve ser feita pela aplicação. Threads podem estar em diferentes estados: executando, bloqueado, pronto ou finalizado. Itens Por Processo Itens Por Thread PC Pilha Registradores Threads Filhas Estado Espaço de endereçamento Variáveis Globais Arquivos abertos Processos filhos Sinais Timers Informações da Conta Semáforos 14 14 Processos: Threads em Sistemas Não Distribuídos Principais Vantagens: 1. Explorar paralelismo ao executar um programa em um sistema multiprocessador. Cada thread e designado a uma CPU, enquanto dados compartilhados são armazenados em memória compartilhada, por exemplo. 2. Grandes aplicações, desenvolvidas como um conjunto de programas cooperativos, o que evita chaveamento entre diferentes processos – A comunicação é feita através de Interprocess Communication (IPC). 15 15 Processos: Threads em Sistemas Não Distribuídos Threads → A comunicação pode ser feita com a utilização de dados compartilhados. Chaveamento → Espaço de cada usuário. 16 16 Processos: Threads em Sistemas Não Distribuídos Implementação no nível usuário. – Threads rodam sobre o runtime system – coleção de procedimentos que gerenciam as threads. – Quando um thread executa uma chamada de sistema, 'dorme', opera um semáforo ou mutex, o runtime system verifica se o thread deve ser suspenso. 17 17 Processos: Threads em Sistemas Não Distribuídos Implementação no kernel – Criação, encerramento, sincronização deverão ser feitos pelo kernel. – Chamadas de sistema deverão ser realizadas. – Chavear contextos de threads é tão caro quanto chavear contexto de processos. 18 18 Processos: Threads em Sistemas Distribuídos Importante propriedade de threads é que eles podem proporcionar um meio conveniente de permitir chamadas bloqueantes de sistema sem bloquear o processo inteiro. Threads são particularmente atraentes para utilização em sistemas distribuídos, pois facilitam muito a comunicação na forma de manter múltiplas conexões lógicas concomitantemente. 19 19 Processos: Clientes Multithreads 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. 20 20 Processos: Clientes Multithreads Browsers Web Documento Web consiste em: texto, imagens, ícones, etc. A cada elemento, o browser estabelece uma conexão TCP/IP, para ler os dados e apresentá-la. Operações bloqueadoras: estabelecimento da conexão, leitura de dados. Browsers começam a exibir dados a medida em 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. Vantagem: O usuário não precisa esperar até que todos os componentes sejam buscados para interagir. 21 21 Processos: Clientes Multithreads Browsers Web Browser como clientes multithread simplifica Threads separados são ativados para se encarregar de buscar diferentes partes de uma página. Caso o servidor esteja em sobrecarga, ter um cliente multithread possibilita estabelecer conexões com diferentes servidores, permitindo transmissão dos dados em paralelo. Cliente pode manipular fluxos de dados de entrada em paralelo → Threads! 22 22 Processos: Servidores Multithreads Esquema de Funcionamento de um Servidor Multithreads 23 23 Processos: Servidores Multithreads Se o servidor é inteiramente CPU bound, não faz sentido o uso de threads, pois tal situação gera aumento de complexidade sem ganho de desempenho. Processos CPU-bound: processos com longos tempos de execução e baixo volume de comunicação entre processos. Exemplo: aplicações científicas, engenharia e outras aplicações que demandam alta performance de computação fazendo uso intensivo de entradas e saídas ou de memória para gráficos em 3D, entre outras aplicações. 24 24 Processos: Virtualização Virtualização de recursos: “fingir” que um determinado recurso esta replicado no sistema. 25 25 Processos: Virtualização Threads e processos podem ser vistos como um modo de fazer diversas tarefas ao mesmo tempo. Em computadores monoprocessador, a execução simultânea e uma ilusão. A existência de uma única CPU implica que somente uma instrução de um único thread ou processo será executada por vez. Virtualização de recursos: “fingir” que um determinado recurso esta replicado no sistema. 26 26 Processos: Virtualização Conceito – Estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema. Notar: Virtualização do sistema A sobre o sistema B 27 27 Processos: Virtualização Histórico – 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. Explicação – Softwares em nível mais alto (aplicações e middleware) são mais estáveis (duradouros) que o hardware e sistemas de software de baixo nível (sistemas operacionais), assim a virtualização pode ajudar transportando as interfaces de softwares para novas plataformas. – Novas plataformas são capazes de executar softwares existentes anteriormente. 28 28 Processos: Virtualização Arquiteturas de máquinas virtuais – 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. 29 29 Processos: Virtualização Arquiteturas de máquinas virtuais 1. Instruções gerais que são uma interface entre o hardware e o software, o qual consiste em instruções de máquina que possam ser invocadas por qualquer programa. 2. Instruções privilegiadas que são uma interface entre hardware e o software, o qual consiste em instruções de máquina que possam ser invocadas somente por programas privilegiados, como um sistema operacional. 30 30 Processos: Virtualização Arquiteturas de máquinas virtuais 3. Chamadas de sistema, uma interface que consiste em chamadas de sistema como oferecidas por um sistema operacional. 4. Funções de biblioteca, uma interface que consiste em chamadas de biblioteca que, em geral, formam o que é conhecido como API (application programming interface – interface de aplicação de programação). Em muitos casos, as chamadas de sistema estão ocultas em uma API. 31 31 Processos: Virtualização Conceito – A essência da virtualização é a imitação do comportamento das interfaces (instruções de máquina, chamadas de sistema). » Máquina virtual de processo, permite que aplicações desenvolvidas para um Sistema Operacional sejam executadas em outro Sistema Operacional. » Virtualização feita somente para um único processo. 32 32 Processos: Virtualização Emuladores – A imitação de chamadas de um sistema não é um processo trivial! – Um emulador é um software que reproduz as funções de um determinado ambiente, a fim de permitir a execução de outros softwares sobre ele. Pode ser pela transcrição de instruções de um processador alvo para outro no qual ele está rodando, ou pela interpretação de chamadas para simular o comportamento de um hardware específico. O emulador também é responsável pela simulação dos circuitos integrados ou chips do sistema de hardware em um software. Basicamente, um emulador expõe as funções de um sistema para reproduzir seu comportamento, permitindo que um software criado para uma plataforma funcione em outra. 33 33 Processos: Virtualização Monitor de máquina virtual – Fornece o conjunto de instruções completo do hardware. – Vários sistemas operacionais diferentes executando independente e concorrentemente na mesma plataforma. – Importantes no contexto de confiabilidade e segurança → isolamento de uma aplicação e seu ambiente → falhas não afetam a maquina inteira. 34 34 Processos: Virtualização Monitor de máquina virtual 35 35 Fonte: Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São Paulo: Prentice Hall, 2008. Copyright © 2010 Prof. Jorge Surian Todos direitos reservados. Reprodução ou divulgação total ou parcial deste documento é expressamente proíbido sem o consentimento formal, por escrito, do Professor Surian. 36 36