5 Sistemas Distribuidos.pdf

113
Sistemas Operacionais 2014 Sistemas Distribuídos Alexandre Augusto Giron

Transcript of 5 Sistemas Distribuidos.pdf

Page 1: 5 Sistemas Distribuidos.pdf

Sistemas Operacionais 2014 Sistemas Distribuídos

Alexandre Augusto Giron

Page 2: 5 Sistemas Distribuidos.pdf

ROTEIRO

• Conceitos

• Hardware/Software para Sistemas Distribuídos

• Estrutura de Rede

• Objetos Distribuídos

• Sistemas de Arquivos Distribuídos

Page 3: 5 Sistemas Distribuidos.pdf

Conceitos

• O que é um Sistema Distribuído?

– Silberschatz: “Coleção de processadores fracamente acoplados e conectados por uma rede de comunicação”

– Tanembaum: “Um conjunto de máquinas independentes que fornecem uma visão de uma única máquina para os usuários”

Page 4: 5 Sistemas Distribuidos.pdf

Conceitos

Page 5: 5 Sistemas Distribuidos.pdf

Principais Objetivos de um Sistema Distribuído

• Compartilhamento de Recursos

• Ganho de desempenho

• Confiabilidade

• Comunicação

• Transparência

• Escalabilidade

Page 6: 5 Sistemas Distribuidos.pdf

Compartilhamento de Recursos

• Facilitar aos usuários e aplicações acesso aos recursos remotos

• Exemplos de recursos

– Impressoras, computadores, armazenamento, dados, páginas Web, arquivos

Page 7: 5 Sistemas Distribuidos.pdf

Ganho de desempenho

• Tarefas distribuídas e concorrentes

• Exemplo prático

– Distribuição de carga entre servidores Web

• Se um servidor estiver sobrecarregado de requisições, elas podem ser repassadas para outros servidores atenderem

Page 8: 5 Sistemas Distribuidos.pdf

Confiabilidade

• Garantir que haja o funcionamento mesmo em casos de falhas parciais

• Manutenção de serviço (Disponibilidade) – Se uma máquina pertencente ao sistema

distribuído parar, • As outras devem continuar operando de forma

independente

– Redundância • Replicar Hardware/Dados

• Ex: Se um dispositivo falhar, o dispositivo replicado assume

Page 9: 5 Sistemas Distribuidos.pdf

Comunicação

• Sistema distribuído deve se comunicar por uma rede

– Processamento distribuído: troca de mensagens

– Vantagem: grandes distâncias

• Requisitos

– Uma rede com alto desempenho

Page 10: 5 Sistemas Distribuidos.pdf

Transparência

• Um sistema distribuído deve ser transparente

– Ocultar detalhes da distribuição

– Capacidade de se apresentar aos usuários como se fosse um sistema único

Page 11: 5 Sistemas Distribuidos.pdf

Transparência

Tipo Descrição

Acesso Ocultar diferenças na representação de dados e no uso de um recurso

Localização Oculta o lugar onde o recurso se encontra

Migração Usuário não sabe se um recurso foi movido

Replicação Oculta o fato de que um recurso é replicado

Concorrência Oculta o compartilhamento do recurso entre diversos usuários simultâneos

Falha Oculta ocorrência e recuperação de falhas pelo sistema

Page 12: 5 Sistemas Distribuidos.pdf

Escalabilidade

• Facilidade para estender/aumentar capacidades de um sistema distribuído

– Tamanho: fácil adicionar mais usuários e recursos

– Geográfica: usuários e recursos podem estar longe entre si

– Administrativos: facilidade de gerenciar

Page 13: 5 Sistemas Distribuidos.pdf

Robustez

• Um sistema distribuído pode sofrer de vários tipos de falhas

• Para garantir que o sistema é robusto, ele deve fornecer

– Detecção de Falhas

– Reconfiguração (Recuperação)

Page 14: 5 Sistemas Distribuidos.pdf

Robustez

• Detecção de Falhas – Difícil em hardware

– Link de uma rede • Abordagem: “Você está online?”, “X: estou

online”

• Se não chegar nenhuma mensagem em um período, assume-se que o link foi perdido

• Recuperação – Quando o serviço é restaurado, ele deve

ser comunicado e disponibilizado novamente para uso

Page 15: 5 Sistemas Distribuidos.pdf

HARDWARE/SOFTWARE PARA SISTEMAS DISTRIBUÍDOS

Page 16: 5 Sistemas Distribuidos.pdf

Hardware

• Classificação:

– Taxonomia de Flynn: Fluxo de dados

• SISD: Single Instruction Single Data

• SIMD: Single Instruction Multiple Data

– Processamento multimídia

• MISD: Multiple Instruction Single Data

• MIMD: Multiple Instruction Multiple Data

– Máquinas paralelas

Page 17: 5 Sistemas Distribuidos.pdf

MIMD: MultiProcessadores

• Simétricos: SMP

– Memória compartilhada

Page 18: 5 Sistemas Distribuidos.pdf

MIMD: MultiComputador

• Cada computador possui seus recursos

– CPU, memória, interface de rede

Page 19: 5 Sistemas Distribuidos.pdf

MIMD

• Classificação de Tanembaum

Page 20: 5 Sistemas Distribuidos.pdf

Interface de Rede

Page 21: 5 Sistemas Distribuidos.pdf

Software para Sistemas distribuídos

• Arquiteturas de software

– Como estruturar a aplicação

• Arquitetura em camadas

• Arquitetura baseada em objetos

• Características

– Centralizadas, Descentralizadas ou Híbridas

Page 22: 5 Sistemas Distribuidos.pdf

Arquitetura em camadas

• Middleware

– Camada para ocultar dife-renças de SOs

– Mesma interface de aplicação

Page 23: 5 Sistemas Distribuidos.pdf

Arquitetura baseada em objetos

• Objetos (componentes) conectados por chamada de procedimento remota

Page 24: 5 Sistemas Distribuidos.pdf

Arquiteturas Centralizadas

• Arquitetura Cliente-Servidor

• Clientes:

– Requisitam serviços

• Servidor:

– Fornecem os serviços

Page 25: 5 Sistemas Distribuidos.pdf

Arquiteturas Descentralizadas

• Arquitetura peer-to-peer (P2P)

• Clientes podem fazer requisições e também atuar como servidores

Page 26: 5 Sistemas Distribuidos.pdf

Peer-to-peer e Client-Server

Page 27: 5 Sistemas Distribuidos.pdf

Software para Sistemas distribuídos

• Serviços disponíveis

– Necessidade de um protocolo de comunicação

• Computadores distribuídos

– Diferentes plataformas!

Page 28: 5 Sistemas Distribuidos.pdf

Software para Sistemas distribuídos

• Software para internet?

– Qual arquitetura de software?

– Como processos em diferentes máquinas se comunicarão?

– Protocolo

• Define o formato de mensagens, formas de comunicação

• TCP

• UDP

Page 29: 5 Sistemas Distribuidos.pdf

Software para Sistemas distribuídos

• Software para internet?

– Qual arquitetura de software?

• Client-Server ou P2P?

– Como processos em diferentes máquinas se comunicarão?

– Protocolo

• Define o formato de mensagens, formas de comunicação

• TCP

• UDP

Page 30: 5 Sistemas Distribuidos.pdf

Estrutura de Rede

• Problema:

– N processos comunicantes em diferentes máquinas

– Como se comunicar?

• Socket

– Número de porta

– Endereço de rede

Page 31: 5 Sistemas Distribuidos.pdf

Estrutura de Rede

• Socket

Page 32: 5 Sistemas Distribuidos.pdf

Estrutura de Rede

• Números de porta: 16 bits

• Alguns números são usados por padrão (http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)

Protocolo Porta

FTP 20 e 21

SSH 22

Telnet 23

SMTP 25

DNS 53

Web 80

Pop3 110

IMAP 143

Page 33: 5 Sistemas Distribuidos.pdf

Protocolos de Transporte

• Aplicações requerem uma forma padronizada de comunicação

– Protocolo de transporte: formato, tipo e fluxo das mensagens

• Protocolos mais usados

– TCP

– UDP

• Diferem na operação e no modelo de serviço fornecido

Page 34: 5 Sistemas Distribuidos.pdf

Protocolos

• TCP – Entrega garantida – Vários serviços utilizam esse protocolo

• UDP – Mais simples, não garante entrega – Mais usado em aplicações tolerantes à

perda

• Uma nova aplicação pode se utilizar de serviços já disponíveis – Troca de arquivos via FTP – Emails: SMTP, POP3..

Page 35: 5 Sistemas Distribuidos.pdf

Java Socket

• API Java permite trabalhar com protocolo TCP ou UDP

• Aplicação: – Código da aplicação

– Camada de middleware

– Protocolo: TCP ou UDP

• TCP Servidor – ServerSocket

• UDP Servidor – DatagramSocket

Page 36: 5 Sistemas Distribuidos.pdf

Java Socket

• API Java permite trabalhar com protocolo TCP ou UDP

• Aplicação: – Código da aplicação

– Camada de middleware

– Protocolo: TCP ou UDP

• TCP Servidor – ServerSocket

• UDP Servidor – DatagramSocket

Necessidade do protocolo para implementação do

Sistema Distribuído!

Page 37: 5 Sistemas Distribuidos.pdf

UDP

• Características – Sem conexão

– Mais simplificado

– Não há garantia de entrega da mensagem

• Experimento prático: – Montar uma aplicação distribuída

• Cliente UDP: Envia uma string

• Servidor UDP: processa a string e devolve ao cliente

Page 38: 5 Sistemas Distribuidos.pdf

Aplicação UDP

• Parâmetros necessários:

– Escolher um número de porta não usado

• 1 a 1024 reservado para protocolos conhecidos

• Cliente deve se comunicar ao servidor pela porta especificada

– Escolher um endereço IP (de rede)

• 127.0.0.1: endereço local (localhost)

Page 39: 5 Sistemas Distribuidos.pdf

Cliente UDP (1)

Page 40: 5 Sistemas Distribuidos.pdf

Cliente UDP (2) – Envio da mensagem

Page 41: 5 Sistemas Distribuidos.pdf

Cliente UDP (3) - resposta

Page 42: 5 Sistemas Distribuidos.pdf

Servidor UDP (1)

Page 43: 5 Sistemas Distribuidos.pdf

Servidor UDP (2) – Aguardando mensagens

• Estado de espera até receber mensagem

Page 44: 5 Sistemas Distribuidos.pdf

Servidor UDP (3) – Processa e responde ao cliente

Page 45: 5 Sistemas Distribuidos.pdf

Aplicação UDP

• Para testar: – Execute o servidor e o cliente

– Digite a mensagem no cliente

– Visualize a resposta

• Considerações – O que acontece se executarmos dois

servidores sobre o mesmo número de porta?

– E se o cliente enviar para um número de porta que não há nenhum processo escutando?

Page 46: 5 Sistemas Distribuidos.pdf

Aplicação TCP

• Mesma aplicação

– Cliente envia uma string

– Servidor processa e responde

• Parâmetros

– Número de porta

– Endereço IP

Page 47: 5 Sistemas Distribuidos.pdf

Características

• Há formação de conexão entre cliente e servidor

• Mais complexo

• Entrega garantida pelo protocolo

Page 48: 5 Sistemas Distribuidos.pdf

Cliente TCP

• Socket diferente

– Orientação à conexão

Page 49: 5 Sistemas Distribuidos.pdf

Servidor TCP

Page 50: 5 Sistemas Distribuidos.pdf

Exercícios

1. Faça uma aplicação UDP que considere: – Envio de dois números inteiros pelo cliente

– Servidor realiza a soma dos números

– Servidor envia a resposta ao cliente

2. Repita o exercício usando TCP

3. Faça uma aplicação (TCP ou UDP) que: – Cliente solicita um arquivo pelo nome;

– Servidor envia o arquivo para o cliente

– Considere tamanho máximo do arquivo igual a 1024 bytes

Page 51: 5 Sistemas Distribuidos.pdf

OBJETOS DISTRIBUÍDOS

Page 52: 5 Sistemas Distribuidos.pdf

Paradigma OO

• Orientação a Objetos bastante comum atualmente

– Sistemas Distribuídos + OO = Objetos distribuídos

• Camada de Middleware

– Necessária para tornar o objeto independente de SO e hardware

Page 53: 5 Sistemas Distribuidos.pdf

Objetos Distribuídos

• Suporte de Middleware para Objetos distribuídos

– Java RMI (Sun)

– CORBA (OMG)

– DCOM (Microsoft)

Page 54: 5 Sistemas Distribuidos.pdf

Evolução

Page 55: 5 Sistemas Distribuidos.pdf

RPC

• Remote Procedure Call (RPC)

– Antes do paradigma OO

• Procedimentos executados em máquinas remotas

– Ideia é manter a forma das chamadas iguais à forma das chamadas de procedimentos locais

Page 56: 5 Sistemas Distribuidos.pdf

RPC

• Chamadas síncronas (geralmente)

– Embora alguns sistemas permitem chamadas assíncronas

• Comunicação

– Transparente

• Código gerado pelo compilador (stub, proxy...)

– Objetos serializados para o envio

Page 57: 5 Sistemas Distribuidos.pdf

SUN/RPC

• Rpcgen: – Programa para compilar e gerar stubs

(cliente e servidor) para uma aplicação

– Definição da interface • Linguagem parecida com C

• Fluxo de Implementação 1. Definição da Interface

2. Geração dos stubs • Stub: representação local do objeto

remoto para o cliente

Page 58: 5 Sistemas Distribuidos.pdf

RPC

• Experimento prático com linguagem C

– Aplicação que soma dois números

• Cliente: envia a mensagem

• Servidor: recebe e processa

Page 59: 5 Sistemas Distribuidos.pdf

Interface: adicao.x

Page 60: 5 Sistemas Distribuidos.pdf

Interface: adicao.x

• O número do programa deve ser único

• RPCgen especifica intervalo para uso:

– 0x20000000 -> 0x3fffffff

Page 61: 5 Sistemas Distribuidos.pdf

RPCgen

• Verifique se o rpcbind está instalado

• rpcinfo

• apt-get install rpcbind

• Gerar os stubs:

– rpcgen –N -a adicao.x

Page 62: 5 Sistemas Distribuidos.pdf

RPC

• Arquivos gerados

– adicao.h

– adicao_client.c

– adicao_server.c

– Demais arquivos

• Gerados pelo rpcgen

• Alterações na interface: nova geração de stubs!

Page 63: 5 Sistemas Distribuidos.pdf

RPC Server (adicao_server.c)

Page 64: 5 Sistemas Distribuidos.pdf

RPC Cliente (adicao_client)

• Modifique a função adicao_1

• Faça o teste:

– make –f Makefile.adicao

– ./adicao_server

– ./adicao_client localhost

Page 65: 5 Sistemas Distribuidos.pdf

RPC - Considerações

• Note a abstração para os detalhes de rede

– Programador se preocupa mais com detalhes da aplicação

• Mais detalhes

– Guia de programação com RPC:

• http://docs.freebsd.org/44doc/psd/22.rpcgen/paper.pdf

Page 66: 5 Sistemas Distribuidos.pdf

Exercício

1. Faça uma aplicação com RPC onde:

– Cliente: envia uma string

– Servidor: altera a string para uppercase e responde ao cliente

– Cliente imprime a string alterada.

Page 67: 5 Sistemas Distribuidos.pdf

RMI

• Remote Method Invocation (RMI)

– Objetos podem invocar métodos de outros remotamente

– Transparência:

• Chamada remota ao método igual à chamada local

• Protocolo de transferência implementado sobre o middleware

Page 68: 5 Sistemas Distribuidos.pdf

Java RMI

• Multi-plataforma

– J2SE (Java 2 Standard Edition) e J2EE (Java 2 Enterprise Edition) com suporte ao RMI

• Permite um objeto Java chame método de outro objeto java

Page 69: 5 Sistemas Distribuidos.pdf

Java RMI: 3 camadas

• Stubs e Skeletons interceptam as chamadas de procedimento

– Serialização de objetos

• Referência remota:

– Localização dos objetos

Page 70: 5 Sistemas Distribuidos.pdf

Fluxo de Implementação

1. Definição de uma interface – Conjunto de métodos que podem ser

acessados remotamente – Interface deve estender classe Remote

(java.rmi.Remote)

2. Classes devem ser serializáveis – Fluxo de bytes em um formato definido – Tipos predefinidos na linguagem – Permite que os objetos sejam passados como

parâmetros

3. Geração de Stubs e Skeletons – Pelo compilador com base nessa interface – rmic

Page 71: 5 Sistemas Distribuidos.pdf

Exemplo prático

• Nossa aplicação consiste de

– Um cliente: enviando uma string

– Um servidor: processando e retornando ao cliente

• Registro

– É necessário registrar a execução do servidor

– Assim o cliente pode procurar o objeto na rede

Page 72: 5 Sistemas Distribuidos.pdf

Interface RMI

Page 73: 5 Sistemas Distribuidos.pdf

Servidor (1)

Page 74: 5 Sistemas Distribuidos.pdf

Servidor (2)

• Object Registry: servidor de nomes que mapeia objetos para nomes

– Invocações apenas se objetos estão registrados

Page 75: 5 Sistemas Distribuidos.pdf

Cliente (1)

Page 76: 5 Sistemas Distribuidos.pdf

Java RMI - Considerações

• Note que o cliente é um programa Java simples

– Mas deve conhecer a interface

• Objetos são registrados para que os métodos sejam acessados

– Naming.lookup()

• Objeto local ou remoto

Page 77: 5 Sistemas Distribuidos.pdf

Java RMI

• Mais detalhes:

– Tutorial RMI da Oracle

• http://docs.oracle.com/javase/tutorial/rmi/

– Documentação da API Java

Page 78: 5 Sistemas Distribuidos.pdf

Exercício

1. Faça uma modificação no código para seguinte situação:

– Se o cliente enviar o comando ‘exit’:

• Remover o registro no servidor (servidor “off-line”)

• Cliente deve encerrar a execução

2. Uma aplicação onde:

– Cliente envia dois números

– Servidor retorna a soma

Page 79: 5 Sistemas Distribuidos.pdf

SISTEMAS DE ARQUIVOS DISTRIBUÍDOS

Page 80: 5 Sistemas Distribuidos.pdf

Sistemas de Arquivos Distribuídos

• Aplicação importante e comum de sistemas distribuídos

– Distributed File System (DFS)

• Exemplos

– Open AFS

– NFS (Network File System)

Page 81: 5 Sistemas Distribuidos.pdf

Sistemas de Arquivos Distribuídos

• Conceitos

– Serviço:

• Entidade de software executando de forma distribuída e fornecendo um tipo particular de funcionalidades aos clientes

• É executado por meio da rede

– Servidor:

• Uma entre as máquinas que executam o serviço

– Cliente:

• Processo que pode invocar um serviço usando um conjunto de operações

Page 82: 5 Sistemas Distribuidos.pdf

DFS

• Um DFS é disperso – Clientes, servidores e dispositivos de

armazenamento • Localizados entre as máquinas de um

sistema distribuído

– Vantagem • Autonomia e Multiplicidade dos clientes e

servidores

– Requisito • Deve ser transparente ao usuário

• Eficiência: tempo gasto para realizar as operações

Page 83: 5 Sistemas Distribuidos.pdf

DFS

• Interface Cliente

– Composta por um conjunto de primitivas e operações

• Criar, apagar, escrever, ler

– Não deve haver distinção entre arquivos remotos e locais

Page 84: 5 Sistemas Distribuidos.pdf

DFS – Mapeamento de Nomes

• Mapeamento de nomes – Usuário: nomes de arquivos – Sistema de Arquivos: blocos armazenados

no disco

• Local – Endereço do dado no disco

• Ex: número do cluster lógico -> cluster físico

• Remoto – Endereço inclui a máquina que contem o

arquivo/dado • Possibilidade: um conjunto de máquinas, cada

uma com parte do arquivo (File Replication)

Page 85: 5 Sistemas Distribuidos.pdf

DFS – Mapeamento de Nomes

• Diferenças

– Transparência de Localização

• Nome do arquivo não revela localização física do arquivo

• Maioria fornece esse esquema

– Independência de Localização

• Nome do arquivo não necessita ser modificado se a localização física do arquivo mudar de dispositivo de armazenamento

• Nem todos fornecem esse esquema

Page 86: 5 Sistemas Distribuidos.pdf

Esquemas de Nomes

• Absoluto

• Montagem

• Global

Page 87: 5 Sistemas Distribuidos.pdf

Esquema de Nomes: Absoluto

• Mais simples

• Nome da máquina (host) + nome do arquivo

– host:local-name

– URL da Internet também usa esse mesmo esquema

• Desvantagens

– Não há transparência de localização

– Não há independência de localização

Page 88: 5 Sistemas Distribuidos.pdf

Esquema de Nomes: Montagem

• Pontos de Montagem – NFS da Sun usa esse esquema

– Meio de ligar diretórios remotos para diretórios locais • Cada máquina tem nomes locais que

referenciam arquivos remotos

• Mapeamento durante a inicialização

– Automount • Permite que sejam criados pontos de montagem

por demanda

• Tabela guarda informações dos pontos de montagem e os nomes

Page 89: 5 Sistemas Distribuidos.pdf

Network File System

• Estrutura

Page 90: 5 Sistemas Distribuidos.pdf

Network File System

• Montagem remota

Page 91: 5 Sistemas Distribuidos.pdf

Esquema de Nomes: Montagem

• Consegue obter um nível de transparência

– Usuário utiliza o nome local

– Sistema realiza o mapeamento pela tabela

• Porem necessita configuração prévia

– Para as inicializações

Page 92: 5 Sistemas Distribuidos.pdf

Esquema de Nomes: Global

• Estrutura de nomes global

– Vantagem: Todos possuem a mesma estrutura de diretórios

– Clientes obtêm a estrutura do servidor

• Dificuldades

– Características específicas dos arquivos

• Arquivos de dispositivos (Linux), Binários compilados para diferentes arquiteturas

– Confiabilidade no servidor

Page 93: 5 Sistemas Distribuidos.pdf

Acesso aos arquivos

• Acesso Remoto aos Arquivos

– Como implementar?

• RPC, RMI

• Desempenho

– Caches são frequentemente usadas

• Obter blocos recentemente acessados na cache

• Poderão ser acessadas novamente sem novo acesso ao disco

Page 94: 5 Sistemas Distribuidos.pdf

Acesso aos arquivos

• Modelos de cache

– Escrita direta: write-through

• Confiabilidade

• Desempenho baixo nas escritas: cada escrita deve esperar pela atualização no servidor

– Escrita adiada (write-back)

• Atualização no servidor atrasada: maior desempenho nas escritas

• Confiabilidade menor: dados não atualizados podem ser perdidos

Page 95: 5 Sistemas Distribuidos.pdf

Acesso aos arquivos

• OpenAFS: variação • Write-on-close: parte das seguintes

premissas:

– Arquivos abertos por pouco tempo são para leitura não necessitam ser atualizados no servidor constantemente

– Arquivos abertos por mais tempo têm maior chance de serem modificados: atualização apenas quando o arquivo for fechado

Page 96: 5 Sistemas Distribuidos.pdf

Estado nos servidores

• Classificação – Servidores Stateful

• Guardam estado de acordo com arquivos abertos dos clientes

• Identificador para os clientes

• Ex: servidor pode retirar um arquivo aberto após um tempo de inatividade do cliente

– Servidores Stateless • Não guardam informação alguma sobre os

arquivos abertos por clientes

• Mais simples

Page 97: 5 Sistemas Distribuidos.pdf

Estado nos servidores

• Recuperação de falhas

– Falhas no servidor não são notadas pelos clientes

• Falha

– Em um servidor com estado

• Deve recuperar o estado das conexões com os clientes

• Perda das informações na memória

– Servidor sem estado

• Requisições tendem a ser maiores

Page 98: 5 Sistemas Distribuidos.pdf

MÁQUINAS VIRTUAIS – INTRODUÇÃO

Page 99: 5 Sistemas Distribuidos.pdf

Conceitos

• Objetivo principal de uma máquina virtual – Fornecer uma abstração de um hardware para

diferentes ambientes de execução

• Componentes – Host: Sistema que hospeda máquinas virtuais

– Virtual Machine Manager (VMM ou Hypervisor) • Gerencia as máquinas virtuais

• Fornece interface similar à do host

– Guest • Um sistema operacional executado no ambiente

virtualizado

Page 100: 5 Sistemas Distribuidos.pdf

Sistema Virtualizado vs Não-Virtualizado

Page 101: 5 Sistemas Distribuidos.pdf

Tipos de VMM

• Tipo 0 – Soluções baseadas em hardware/firmware

– Usadas em mainframes e servidores

• Tipo 1 – Software para fornecer virtualização

• Ex: VMWare ESX, Citrix XenServer

– Alguns SOs também fornecem essas funcionalidades • Classificados também como tipo 1

• Windows Server com HyperV

• KVM do Linux RedHat

Page 102: 5 Sistemas Distribuidos.pdf

Tipos de VMM

• Tipo 2:

– VMM como uma aplicação comum

• VMWare Workstation, Virtual Box

– Executam sobre um SO

– Fornecem funções para guests

Page 103: 5 Sistemas Distribuidos.pdf

Benefícios

• Habilidade para fornecer diferentes ambientes de execução diferentes – Executar diferentes SOs concorrentemente

• Proteção – Execução isolada

• Host é protegido de modificações em Guests

– Problemas • Dificulta o compartilhamento de recursos; deve ser

explícito

• Implementação de SO – Erros no kernel, complexidade do SO

dificultam o desenvolvimento de um SO – Máquina virtual fornece maior controle

Page 104: 5 Sistemas Distribuidos.pdf

Benefícios

• Otimização de recursos

– Live migration: move um guest de um host físico para outro

• Maior compartilhamento de recursos

• Se um host estiver sobrecarregado, um guest pode ser movido para outro

– Recursos de hardware compartilhados

• CPU, memória e E/S fornecido como serviço para clientes

Page 105: 5 Sistemas Distribuidos.pdf

Dificuldades

• Implementação de máquinas virtuais complexa – Comunicação entre modo usuário e kernel

• Desempenho

– Gerência de memória • Nested Page Tables

• Requer um apoio de hardware – Atualmente processadores já fornecem

instruções específicas para virtualização • Intel VT-x instructions • Tecnologia AMD-V

– Operação em modo dual • Host e Guest

Page 106: 5 Sistemas Distribuidos.pdf

Exemplo: VMWare

Page 107: 5 Sistemas Distribuidos.pdf

Exemplo: VMWare

• Classificada como VMM do tipo 2

– Executa como uma aplicação do host

– Permite a execução de um ou mais guests de forma independente

• Cada Guest possui (virtualmente)

– CPU, memória, disco, interfaces de redes, etc

• Ex: Um disco corresponde a um arquivo no host

Page 108: 5 Sistemas Distribuidos.pdf

VMM tipo 2

• Normalmente possuem desempenho pior que os de tipo 0 e 1

– VMM é um processo comum sendo escalonado pelo host

• Mas há vantagens

– Versatilidade: pode-se testar um novo SO sem abrir mão do existente

– Não necessitam de muitas modificações no host

Page 109: 5 Sistemas Distribuidos.pdf

Exemplo: JVM

• Java Virtual Machine – Fornece um ambiente de

programação/execução virtualizado • Tipo especial de virtualização • Ambiente como um programa executável no

host • Programas rodam sobre o ambiente:

independente de SO (desde que ele execute a JVM)

• JVM – Implementada em software sobre um host – Como parte de um navegador web – Implementada em hardware específico

para programas Java

Page 110: 5 Sistemas Distribuidos.pdf

JVM

Page 111: 5 Sistemas Distribuidos.pdf

Paravirtualização

• Introdução de camadas para abstração de hardware

– Pode diminuir desempenho

• Conceito de Paravirtualização

– Exige mudança nos SOs

– Fornecer acesso do VMM direto ao hardware subjacente

• Kernel do SO guest executa no VMM

Page 112: 5 Sistemas Distribuidos.pdf

Para casa

• Leitura da parte IV (Sistemas Distribuídos) – Lista de exercícios (Sistemas

Distribuídos e virtualização)

– Data da entrega (Lista de exercícios): • 17/11/2014

• Individual ou em dupla

• Peso: 10

Page 113: 5 Sistemas Distribuidos.pdf

Bibliografia

1. SILBERSHATZ, A. et al. Operating systems Concepts. John Wiley & Sons, New York, 5ª edição. 1997.

2. STALLINGS, W. Operating system concepts. Prentice Hall, New Jersey, 3ª edição, 1997.

3. TANENBAUM, A. et al. Operating systems: design and implementation. Prentice Hall, New Jersey, 1997.

4. TANENBAUM, A. et. al. Modern Operating Systems. Prentice Hall, New Jersey, 1992.