Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e...
Transcript of Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e...
Sistemas DistribuídosJorge [email protected]
Sistemas Distribuídos: Processos (Threads e Virtualização)
22
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
33
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.
44
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.
55
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
66
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
77
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.
88
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).
99
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!!!!
1010
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.
1111
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á.
1212
Processos - Threads Modelo esquemático (paralelismo)
1313
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.
1414
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 Thread
PCPilha
RegistradoresThreads Filhas
Estado
Itens Por Processo
Espaço de endereçamentoVariáveis GlobaisArquivos abertosProcessos filhos
SinaisTimers
Informações da ContaSemáforos
1515
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).
1616
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.
1717
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.
1818
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.
1919
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.
2020
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.
2121
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.
2222
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!
2323
Processos: Servidores Multithreads Esquema de Funcionamento de um Servidor
Multithreads
2424
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.
2525
Processos: Virtualização Virtualização de recursos: “fingir” que um
determinado recurso esta replicado no sistema.
2626
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.
2727
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
2828
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.
2929
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.
3030
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.
3131
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.
3232
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.
3333
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.
3434
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.
3535
Processos: Virtualização Monitor de máquina virtual
3636
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.
Fonte:
Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São Paulo: Prentice Hall, 2008.