Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e...

36
Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e Virtualização)

Transcript of Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Processos (Threads e...

Page 1: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

Sistemas DistribuídosJorge [email protected]

Sistemas Distribuídos: Processos (Threads e Virtualização)

Page 2: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br 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

Page 3: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 4: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 5: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 6: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 7: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 8: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 9: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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!!!!

Page 10: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 11: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 12: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

1212

Processos - Threads Modelo esquemático (paralelismo)

Page 13: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 14: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 15: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 16: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 17: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 18: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 19: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 20: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 21: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 22: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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!

Page 23: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

2323

Processos: Servidores Multithreads Esquema de Funcionamento de um Servidor

Multithreads

Page 24: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 25: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

2525

Processos: Virtualização Virtualização de recursos: “fingir” que um

determinado recurso esta replicado no sistema.

Page 26: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 27: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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

Page 28: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 29: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 30: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 31: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 32: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 33: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 34: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.

Page 35: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

3535

Processos: Virtualização Monitor de máquina virtual

Page 36: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Processos (Threads e Virtualização)

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.