Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos



Documentos relacionados
Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Operacionais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Processos (Threads,Virtualização e Migração de Código)

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Processos e Threads (partes I e II)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Sistemas Operacionais

Programação Concorrente Processos e Threads

Sistemas Distribuídos

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistema Operacional Correção - Exercício de Revisão

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Distribuídos

Processos. Adão de Melo Neto

ESTUDO DE CASO WINDOWS VISTA

SISTEMAS OPERACIONAIS

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Introdução à Linguagem Java

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Escalonamento no Linux e no Windows NT/2000/XP

Organização de Computadores 1

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

5 Mecanismo de seleção de componentes

1.2 Tipos de Sistemas Operacionais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Introdução aos Sistemas Operacionais

Estruturas do Sistema de Computação

Everson Scherrer Borges João Paulo de Brito Gonçalves

Sistemas Distribuídos. Aleardo Manacero Jr.

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Arquitetura de Computadores. Sistemas Operacionais IV

SISTEMAS OPERACIONAIS 2007

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

4 Estrutura do Sistema Operacional Kernel

Sistemas Operacionais I

Classificação de SO (Sistemas Operacionais) Técnico de Informática 2º. Módulo Profa. Madalena Pereira da Silva

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

1

Figura 01 Kernel de um Sistema Operacional

Sistemas Operacionais Gerência de Dispositivos

Sistemas Operacionais

Sistemas Operacionais. Prof. André Y. Kusumoto

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Sistemas Distribuídos

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Maestro. Arthur Kazuo Tojo Costa Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco

Paradigma Cliente/Servidor

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Sistemas Operacionais

Sistemas Operacionais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

MODELO CLIENTE SERVIDOR

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite

Sistemas Operacionais

Sistemas Distribuídos: Conceitos e Projeto Caracterização de Sistemas Distribuídos

Considerações no Projeto de Sistemas Cliente/Servidor

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Sistemas Operacionais

Capítulo 8. Software de Sistema

Introdução aos Sistemas

Sistemas Operacionais

Mecanismo de Interrupção

7 Processos. 7.1 Introdução

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc.

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

6 - Gerência de Dispositivos

Sistemas Operacionais. Conceitos de um Sistema Operacional

Profs. Deja e Andrei

Sistemas Distribuídos

Transcrição:

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 21 de maio de 2013 Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 1 / 39

Agenda 1 Threads 2 Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 2 / 39

Threads Threads Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 3 / 39

Threads Introdução Processos formam um importante bloco de construção em sistemas distribuídos; Operações envolvendo processos (criação, destruição, comunicação) são relativamentes caras. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 4 / 39

Threads Definição de Thread Mecanismo que permite a um processo ter mais de um fluxo de controle; Threads compartilham o mesmo espaço de endereçamento. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 5 / 39

Threads Threads em Sistemas não Distribuídos: Benefícios O processo inteiro não necessita ficar bloqueado ao realizar uma chamada bloqueante ao sistema; Exemplo de uso: planilha de cálculo Pode-se explorar paralelismo em sistemas multiprocessados; Simplifica o desenvolvimento de aplicações inerentemente concorrentes; Melhor desempenho para aplicações complexas que tradicionalmente eram implementadas através de múltiplos processos comunicando-se através de mecanismos IPCs Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 6 / 39

Threads Implementação de Threads: Biblioteca no Espaço do Usuário Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 7 / 39

Threads Implementação de Threads: Biblioteca no Espaço do Usuário Vantagens: Suporte a threads em sistemas operacionais que não as suportam nativamente; Criação e destruição de threads custa pouco: alocação de memória e criação de pilha no espaço do usuário; Troca de contexto entre threads custa pouco: troca de valores de registradores da UCP. Pode-se prover várias poĺıticas de escalomento dando aos processos a liberdade de escolher aquela que achar melhor; Maior escalabilidade já que não ocupam recursos do kernel. Desvantagens: Dificuldade na implementação de chamadas bloqueantes ao kernel; Dificuldade na implementação de preempção. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 8 / 39

Threads Implementação de Threads no Kernel Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 9 / 39

Threads Implementação de Threads no Kernel Desvantagem: Cada operação com threads: criação, destruição, sincronização, etc.. Envolve o kernel, o que requer uma chamada ao sistema que é cara. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 10 / 39

Threads Implementação de Threads LWP: Lightweight Process Thread state User space Thread Kernel space Lightweight process LWP executing a thread Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 11 / 39

Threads Implementação de Threads LWP: Lightweight Process LWPs são criadas por processos a nível de usuário através de uma chamada ao kernel; Threads de usuário não são visíveis ao kernel: ele escalona LWPs; Threads do usuário podem ser escalonadas em qualquer LWP criada pelo processo; Chamada bloqueante: Interceptada pela LWP que pode realizar a chamada real ao kernel ficando assim também bloqueada mas o processo inteiro NÃO fica; Sincronização e troca de contexto entre threads do usuário são realizadas a nível do usuário. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 12 / 39

Threads Threads em Sistemas Distribuídos: Clientes multithreaded Clientes multithreaded. Exemplo: Web Browsers: Documento HTML consiste de um arquivo de texto e vários outros de imagens, ícones, etc... Pode-se esconder a grande latência na comunicação apresentando cada objeto assim que estiver disponível: estabelecimento de múltiplas conexões Melhoria no desempenho geral pode ser obtido no caso de servidores Web replicados em várias máquinas. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 13 / 39

Threads Threads em Sistemas Distribuídos: Múltiplos RPCs Considere um cliente que realiza diversos RPCs, cada um para uma thread diferente; Ele deve esperar o retorno de cada resultado; Alternativamente, poder-se-ia realizar as RPCs através de threads independentes; Se as RPCs são destinadas a servidores diferentes, pode-se esperar um ganho linear, se comparado a realizar uma RPC após a outra. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 14 / 39

Threads Servidores multithreaded: Objetivos Melhor desempenho: Iniciar uma thread para tratar uma requisição custa menos que iniciar um novo processo; Servidores que possuem uma única thread não são escaláveis a sistemas multiprocessados; Pode-se esconder a latência da rede, reagindo a uma nova requisição enquanto os resultados da anterior estiverem sendo entregues. Melhor estrutura: Muitos servidores demandam fortemente E/S. A utilização de chamadas bloqueantes simplifica a estrutura do código; Programas multithreaded tendem a ser menores e mais fácieis de entender, por possuírem um fluxo de controle simplificado. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 15 / 39

Threads Servidores multithreaded Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 16 / 39

Threads Sincronização de Programas Concorrentes Semáforos; Monitores. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 17 / 39

Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 18 / 39

Migração de Código Carzaniga et al. define mobilidade de código como a capacidade de mudar dinamicamente as ligações entre o código e a localização onde executa. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 19 / 39

Migração de Código: Motivações Melhoria do desempenho global: processos podem ser movidos de máquinas muito carregadas para máquinas com cargas mais leves. Carga é usualmente expressa em termos do comprimento da fila de processos da CPU ou de sua utilização; Diminuição da carga na rede: Exemplo: uma aplicação cliente que requeira muitas operações em banco de dados ou validação de formúlario no cliente; Exploração de processamento paralelo: Exemplo: busca de informações na Web através de várias instâncias de um agente móvel; Extensão dinâmica da funcionalidade de aplicações: Exemplo: descoberta dinâmica de recursos e vinculação do código cliente apenas quando for necessário o acesso ao servidor; Em grades oportunistas, liberação dos recursos da máquina. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 20 / 39

Migração de Código: Cuidados relacionados à Segurança Confiar cegamente em um código carregado dinamicamente nem sempre é uma boa idéia... Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 21 / 39

Migração de Código: Necessidades Para efetuar a migração de um processo, algumas informações de estado (também chamadas de contexto) devem ser salvas e transportadas para sua nova localização; Fuggetta descreve que um processo consiste basicamente de três segmentos: segmento de código, segmento de recursos e segmento de execução. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 22 / 39

Alternativas para Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 23 / 39

Alternativas para Migração de Código Migração Forte: mecanismo que migre os três segmentos e reinicia o processo exatamente no mesmo estado e na mesma posição de código em que ele estava antes da migração Migração Fraca: somente o segmento de código é transferido e talvez alguns dados de inicialização. O programa transferido é sempre executado a partir de seu estado inicial; Migração é iniciada pelo emissor (proativa): a aplicação deixa o local onde está executando e migra para uma outra localidade na rede por iniciativa própria (e.g. programas de busca em bases de dados na web); Migração iniciada pelo receptor (reativa): a iniciativa da migração parte de uma aplicação executando na máquina de destino (e.g. applets Java). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 24 / 39

Migração Forçada Expressa a habilidade do sistema em suportar a migração de um processo a qualquer momento, mediante a solicitação de uma entidade externa. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 25 / 39

Etapas do Processo de Migração Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 26 / 39

Etapas do processo de migração 1 O fluxo de execução é interrompido; 2 O estado da entidade a ser migrada é capturado; 3 O código e o estado da entidade migrada são transportados para a máquina de destino; 4 O código e o estado da entidade migrada são restaurados; 5 A execução é reiniciada. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 27 / 39

Migração de Recursos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 28 / 39

Migração de Recursos 1 Recurso compartilhado: após o término do processo de migração o acesso ao recurso continua disponível (e.g. uma impressora de rede); 2 Recurso já disponível: Exemplo: uma aplicação gera uma série de arquivos de saída em uma unidade de fita. Após a migração, a nova máquina na qual a aplicação executa também tenha disponível uma unidade de fita. A aplicação poderá continuar a gerar os arquivos de saída no novo dispositivo; 3 Recurso referenciado: a referência ao recurso utilizado é migrada juntamente com o seu estado e seu código. Assim, ao chegar em seu destino, ele deve tentar se reconectar através da rede ao recurso na antiga máquina. Exemplo: uma base de dados; 4 Recurso despachado: o recurso deverá ser migrado inteiramente junto com o estado e o código da aplicação. Exemplo: arquivos utilizados pela aplicação. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 29 / 39

Tipos de Recursos Fixos: os recursos não podem ser migrados. Exemplo: hardware local; Vinculados: os recursos podem, a princípio, serem migrados mas a um alto custo; Não vinculados: os recursos podem facilmente serem movidos junto com o objeto. Exemplo: uma cache. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 30 / 39

Vinculação Objeto-Recurso Por identificador: o objeto requer uma instância específica do recurso. Exemplo: um banco de dados específico; Por valor: o objeto requer o valor de um recurso. Exemplo: entradas na cache; Por tipo: o objeto requer somente que um dado tipo de objeto esteja disponível. Exemplo: monitor colorido. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 31 / 39

Ações de Migração Relativas aos Recursos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 32 / 39

Migração em Sistemas Heterogêneos Principal problema: A máquina alvo pode não ser adequada para execução do código migrado; O contexto do processo/thread é dependente do hardware local, sistema operacional e ambiente de execução. Solução: utilização de uma máquina abstrata implementada em diferentes plataformas; Soluções atuais: Uso de linguagens interpretadas que executam em uma máquina virtual, como Java; Uso de VMMs (Virtual Machine Monitors), o que permite a migração completa do sistema operacional junto com as aplicações. Exemplo: substituição de uma máquina em um cluster, um ambiente de computação de longo tempo de execução. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 33 / 39

Migração de Código em Java: Facilidades Compilador Java não gera instruções específicas a uma plataforma, mas sim um código intermediário denominado bytecode; Facilidade em transportar bytecode através da rede: mecanismo de serialização (que permite a migração de dados de objetos). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 34 / 39

Migração Forte em Java: Problemas Java não provê mecanismos suficientes para capturar o estado de execução de computações: Mecanismo de serialização somente permite a salva do código e do valor dos atributos de objetos; Classes Java não podem acessar informações nativas e internas da Máquina Virtual Java (por exemplo, o contador de instrução e a pilha de chamadas), necessárias para a captura do estado completo de execução de threads Java. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 35 / 39

Migração Forte em Java: Alteração da Máquina Virtual A máquina virtual é modificada de forma a exportar as informações a respeito da execução das aplicações; Desvantagem: perda de compatibilidade com relação à máquina virtual padrão. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 36 / 39

Migração Forte em Java: Instrumentação do código-fonte das aplicações Uso de um pré-processador (um compilador de código-fonte) que insere na aplicação código-fonte adicional responsável por capturar e restaurar seu estado de execução; O código-fonte da aplicação deve estar disponível, o que não é sempre possível, como no caso, por exemplo, em que são utilizadas bibliotecas e aplicações legadas; Sobrecarga gerada no tempo de execução e no tamanho do código da aplicação. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 37 / 39

Migração Forte em Java: Instrumentação do Bytecode das Aplicações o código para a captura e a restauração do estado de execução é inserido diretamente no bytecode da aplicação; sobrecarga é geralmente menor que a gerada na abordagem baseada em código-fonte; em nível de bytecode, tem-se acesso a um conjunto estendido de instruções, como por exemplo a instrução goto, utilizada para efetuar a restauração do contador de instrução das aplicações Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 38 / 39

Migração Forte em Java: Modificação da Java Platform Debugger Architecture Usando a JPDA as informações de execução das aplicações podem ser acessadas em modo de depuração, o que pode ser explorado para prover migração transparente; É necessário que um outro mecanismo possibilite a recuperação do estado de execução das aplicações, dado que esta capacidade não é fornecida pela especificação padrão da JPDA. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 39 / 39