A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Professor: Luiz José Hoffmann Filho

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Professor: Luiz José Hoffmann Filho"— Transcrição da apresentação:

1 Sistemas Distribuídos Professor: Luiz José Hoffmann Filho ljhfilho@gmail.com

2 Processos- Threads,Virtualização Capítulo 3

3 Agenda Processos Threads –––– Threads e sistemas não distribuídos Threads e sistemas distribuídos Virtualização –––– Virtualização em sistemas distribuídos Arquiteturas de máquinas virtuais

4 Processos 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 contém entradas para armazenar valores de registradores de CPU, mapas de memória, arquivos abertos, etc.

5 Processos Processos: Programa em execução Sistema Operacional é 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 Transparência no compartilhamento da mesma CPU e outros recursos de hardware

6 Processos Transparência implica em custo: – Criação de espaço de endereços completamente independente – Chavear a CPU entre dois processos – Salvar o contexto da CPU – Troca de informações entre disco e memória principal

7 Processos Em sistemas tradicionais, cada processo possui o seu próprio espaço de endereçamento e um único fluxo de execução

8 Processos No entanto, em alguns casos é desejável haver diversos fluxos de execução compartilhando um único espaço de endereçamento,ou seja, mesma região de memória

9 Único fluxo de execução ? Um servidor de arquivos deve esperar por requisições feitas ao disco. O fluxo de execução que fez a requisição é bloqueado aguardando a resposta. PERDA DE DESEMPENHO

10 Solução – 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) E GANHO DE DESEMPENHO

11 Processos versus Threads Thread PC Processos

12 Threads Cada um dos fluxos de execução de um processo é chamado de thread 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)

13 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 possuem mesma região de memória, compartilhando as mesmas variáveis globais Um determinado thread pode ler, escrever ou mudar a pilha de dados de um outro thread Proteção deve ser feita pela 'aplicação'

14 Threads em sistemas não- distribuídos Threads podem estar em diferentes estados: executando, bloqueado, pronto ou finalizado Itens Por Thread PC Pilha Registradores Threads Filhas Estado Itens Por Processo Espaço de endereçamento Variáveis Globais Arquivos abertos Processos filhos Sinais Timers Informações da Conta Semáforos

15 Threads em sistemas não- distribuídos Principais Vantagens: 1) Explorar paralelismo ao executar um programa em um sistema multiprocessador Ex.: Cada thread é designado a uma CPU, enquanto dados compartilhados são armazenados em memória compartilhada 2) Grandes aplicações, desenvolvidas como um conjunto de programas cooperativos Evita chaveamento entre diferentes processos – devido comunicação através de Interprocess Communication (IPC)

16 Threads em sistemas não- distribuídos Threads → comunicação pode ser feita com a utilização de dados Compartilhados Chaveamento → espaço de usuário

17 Implementação de 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

18 Implementação de Threads em Sistemas não-distribuídos Implementação no nível de usuário Sistema Suporte SO

19 Implementação de Threads em Sistemas não-distribuídos Nível usuário – Custo da criação custo de alocar memória para a pilha – Chaveamento de contexto de thread pode ser feito em apenas algumas instruções: não há necessidade de mudar mapas de memória, descarregar o TLB (Translation Lookaside Buffer) »Ex.: Threads que precisam entrar em sincronia

20 Implementação de Threads em Sistemas não-distribuídos Desvantagem de threads de nível de usuário: – Problema está em como chamadas de sistemas bloqueantes são implementadas Ex.: ler um pipe vazio → chamada de sistema → bloqueio – Todos os threads são bloqueados !

21 Implementação de Threads em Sistemas não-distribuídos Implementação no kernel SO

22 Implementação de 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

23 Implementação de 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

24 Implementação de Threads em Sistemas Distribuídos Threads são particurlamente atraentes para utilização em sistemas distribuídos → facilitam muito expressar comunicação na forma de manter múltiplas conexões lógicas ao mesmo tempo

25 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

26 Clientes Multithreads – Browsers Web Documento Web consiste em: texto, imagens, ícones, etc. A cada elemento, browser estabelece uma conexão TCP/IP, para ler os dados e passar ao monitor do usuário Operações bloqueadoras: estabelecimento da conexão, leitura de dados

27 Clientes Multithreads – Browsers Web Browsers começam a exibir dados enquanto a medida em que novas informações chegam Enquanto o texto está sendo disponibilizado para o usuário, incluindo as facilidades de rolamento, p.ex., o browser continua buscando outros arquivos, como imagens Vantagem: usuário não precisa esperar até que todos os componentes sejam buscados

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

29 Servidores Multithreads Servidor de arquivos normalmente espera pela entrada de uma requisição para uma operação de arquivo e, na sequência, executa a requisição e então devolve a resposta. Como aumentar o desempenho?

30 Servidores Multithreads Funcionamento de servidores multithreads: – requisições são enviadas por clientes para uma porta no servidor – Thread despachante lê requisições que entram para uma operação de arquivo – Servidor escolhe um thread operário – Se o thread escolhido estiver suspenso, outro thread é selecionado para ser executado: p.ex., o thread despachante pode ser selecionado para adquirir mais trabalho

31 Servidores Multithreads

32 Se o servidor é inteiramente CPU bound, não existe necessidade de diversos threads. Aumento de complexidade sem ganho de desempenho

33 Virtualização Threads e processos podem ser vistos como um modo de fazer diversas tarefas ao mesmo tempo Em computadores monoprocessador, execução simultânea é uma ilusão → única CPU, somente uma instrução de um único thread ou processo será executada por vez Virtualização de recursos: “fingir” que um determinado recurso está replicado no sistema

34 Virtualização Estende ou substitui uma interface existente de modo a imitar o comportamento de um outro sistema

35 Virtualização 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 incluiam aplicações e também os sistemas operacionais

36 Virtualização Softwares em nível mais alto são mais estáveis que o hardware e sistemas de software de baixo nível → virtualização pode ajudar transportando as interfaces de softwares para novas plataformas. Novas plataformas são capazes de executar softwares existentes anteriormente

37 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

38 Virtualização Essência da virtualização é imitar o comportamento das interfaces (instruções de máquina, chamadas de sistema)

39 Virtualização Máquina virtual de processo Aplicações desenvolvidas para um SO são executadas em outro SO Virtualização feita somente para um único processo emuladores → imitar chamadas de sistema → Não é trivial

40 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 máquina inteira Ex.: VMware

41 Virtualização

42 Clientes

43 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

44 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

45 ● 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

46 ● 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 recebe requisições vindas de diversas aplicações sendo executadas.

47 Clientes – Sistema X Window (3/4)

48 ● 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 e definir o tipo de cursor. O núcleo X reagirá a eventos locais como entrada de teclado e mouse devolvendo pacotes de eventos a Xlib. Clientes – Sistema X Window (4/4) Clientes podem rodar de forma transparente em

49 ●●●●●● Servidores Questões gerais de projeto Iterativo ou Concorrente? Para onde os clientes enviam requisições? Como encerrar um serviço?

50 ● 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.

51 ● 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 redirecina a requisição para a porta do serviço No caso Unix, inetd

52 ● Servidores Para onde os clientes enviam requisições?

53 ● 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

54 ● 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

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

56 ● 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

57 Clusters de Servidores Conjunto de máquinas conectadas por uma rede, no qual cada máquina executa um ou mais servidores. Estas máquinas estão conectadas por uma rede local, com alta largura de banda e baixa latência.

58 Clusters de Servidores

59 Clusters de Servidores - Comutador Forma o ponto de entrada para o cluster de servidores, oferecendo um único endereço de Rede. Considerando TCP, o comutador aceita requisições e as transfere a um dos servidores Identifica o melhor servidor a tratar a requisição

60 Clusters de Servidores - Comutador

61 Clusters de Servidores Distribuídos Conjunto de máquinas que possivelmente muda dinamicamente, com vários pontos de acesso também possivelmente variáveis, mas se apresenta ao mundo externo como um única e poderosa máquina.

62 Clusters de Servidores Distribuídos Vários pontos de acesso Estabilidade no acesso Alto desempenho Flexibilidade

63 Migração de Código Em alguns casos é importante migrar código de uma máquina para outra Problema: como fazer esta tarefa em sistemas heterogêneos!

64 Por que Migrar Código? Principal razão: Aumento de Desempenho

65 Migração de Código - Desempenho Envio de processos de máquinas sobrecarregadas para máquinas com cargas mais leves Evitar grande quantidade de mensagens trocadas entre aplicações cliente-servidor: ●●●● Ex.1: operações de banco de dados que envolvem uma grande quantidade de dados(aplicação cliente → servidor) Ex.2: formulários enviados do servidor → cliente (applets)

66 Modelos para Migração de Código Migração de código é algo muito mais amplo: podemos também migrar status de um programa, sinais pendentes e outras partes do ambiente

67 Modelos para Migração de Código Processo consiste em três segmentos[Fuggeta et al 1998]: ●●●●●● Segmento de código: contém o conjunto de instruções que compõem o programa que está em execução Segmento de recursos: contém referências a recursos externos (arquivos, impressoras,outros processos, bibliotecas) Segmento de execução: armazenar o estado em execução de um processo no momento da migração (dados privados, pilha,contador de programa)

68 Modelos para Migração de Código Mobilidade pode ser de dois tipos: ●●●● Mobilidade Fraca: possível transferir somente o segmento de código, junto com alguns dados de inicialização. Requer somente que a máquina-alvo possa executar o código (portabilidade). Ex: applets Java Mobilidade Forte: segmento de execução também pode ser transferido. O processo em execução pode ser parado e movido para uma outra máquina e retomar a execução no ponto original. Mais geral, porém mais difícil de ser implementada

69 Modelos para Migração de Código Em relação do ponto de ínicio da migração: Iniciada pelo remetente: a migração é iniciada na máquina em que o código está em execução no momento em questão. Ex: enviar programa de busca pela Internet a um servidor de banco de dados para realização de pesquisas → agente móvel que passa de site para site Iniciada pelo destinatário: Iniciativa da migração de código é tomada pela máquina-alvo. Ex: Applets java

70 Modelos para Migração de Código

71 Migração e recursos locais Segmentos de recursos requerem uma atenção especial → O segmento de recurso nem sempre pode ser transferido junto com outros segmentos sem ser trocado Ex.: Comunicação de um processo sendo feita através de uma porta TCP. Ao mudar de localização, este processo deverá devolver a porta e requisitar uma nova no destino

72 Migração e recursos locais Três tipos de vinculações processo-recurso [Fuggetta et al, 1998]: ● Vinculação por identificador ● Processo requer exatamente o recurso referenciado (URL de um site) ● Vinculação por valor ●●●● É necessário somente um valor Se outro recurso fornece o mesmo valor, execução não é afetada (bibliotecas padronizadas) ● Vinculação por tipo ● Processo requer um recurso de um tipo específico (monitores, impressoras)

73 Migração e recursos locais Três tipos de vinculações recurso-máquina: ●●●●●● Recursos não ligados: recursos podem ser movidos com facilidade entre máquinas diferentes(arquivos de dados) Recursos amarrados: recursos podem ser movidos ou copiados, mas só a custo relativamente alto ( banco de dados locais) Recurso fixos: recursos estão intimamente vinculados a uma máquina ou ambiente especifico e não podem ser movidos → dispositivos locais

74 Migração em Sistemas Heterogêneos Migração em sistemas heterogêneos requer ●●●●●● Que o segmento de código possa ser executado em cada plataforma Que o segmento de execução possa ser adequadamente representado em cada plataforma Efeito global: Migrar sistema operacional inteiro, em vez de migrar processos


Carregar ppt "Sistemas Distribuídos Professor: Luiz José Hoffmann Filho"

Apresentações semelhantes


Anúncios Google