Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André...

74
Tópicos em Sistemas Tópicos em Sistemas Operacionais Operacionais Sistemas Operacionais Sistemas Operacionais Distribuídos e Distribuídos e Multiprocessados Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernand

Transcript of Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André...

Page 1: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Tópicos em Sistemas OperacionaisTópicos em Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Distribuídos e Distribuídos e

MultiprocessadosMultiprocessados

Por André Macedo, Marcelo Moraes, Thaís Fernandes

Page 2: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

SumárioSumário

Teoria: Sistemas MultiprocessadosTeoria: Sistemas Multiprocessados

Estudo de caso:K42Estudo de caso:K42

Teoria: Sistemas DistribuídosTeoria: Sistemas Distribuídos

Estudo de caso: AmoebaEstudo de caso: Amoeba

Page 3: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas MultiprocessadosSistemas Multiprocessados

Page 4: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Multiprocessados: Sistemas Multiprocessados: HardwareHardware

Multiprocessadores UMAMultiprocessadores UMA Tempo de acesso à memoria uniformeTempo de acesso à memoria uniforme

Memória privadaMemória privada CacheCache Memória compartilhadaMemória compartilhada

Modelos:Modelos: Barramento únicoBarramento único Chaves crossbarChaves crossbar Redes de comutaçãoRedes de comutação

Conectam no máximo 100 CPUsConectam no máximo 100 CPUs

Page 5: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Multiprocessados: Sistemas Multiprocessados: HardwareHardware

Multiprocessadores NUMAMultiprocessadores NUMA Endereço único de memória compartilhadaEndereço único de memória compartilhada Acesso remoto feito através de LOAD/STOREAcesso remoto feito através de LOAD/STORE Acesso local mais rápido que o remotoAcesso local mais rápido que o remoto

NC-NUMA: sem cacheNC-NUMA: sem cache CC-NUMA: com cache (cache coerente)CC-NUMA: com cache (cache coerente)

Baseado em diretório: acesso por hardware Baseado em diretório: acesso por hardware especial especial

Page 6: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Multiprocessados: Sistemas Multiprocessados: SoftwareSoftware

Compartilhamento do sistema operacionalCompartilhamento do sistema operacional Cada CPU com um SOCada CPU com um SO

Memória dividida estaticamenteMemória dividida estaticamente Código do SO compartilhadoCódigo do SO compartilhado

Mestre-escravoMestre-escravo Centralização das chamadas ao sistemaCentralização das chamadas ao sistema Melhor aproveitamento das CPUs ociosasMelhor aproveitamento das CPUs ociosas

Multiprocessadores SimétricosMultiprocessadores Simétricos Divisão do SO em partes independentesDivisão do SO em partes independentes Uso de Mutex!Uso de Mutex!

Page 7: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Multiprocessados: Sistemas Multiprocessados: SoftwareSoftware

SincronizaçãoSincronização Necessidade de um equivalente ao Necessidade de um equivalente ao test set test set

and lock and lock (TSL)(TSL) Trava no barramento: hardware especialTrava no barramento: hardware especial

Gasto de CPU com teste da trava (spin lock)Gasto de CPU com teste da trava (spin lock)

Uso de TSL com cacheUso de TSL com cache Mutex individual em cada cacheMutex individual em cada cache

Page 8: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Multiprocessados: Sistemas Multiprocessados: SoftwareSoftware

EscalonamentoEscalonamento

Compartilhamento de tempoCompartilhamento de tempo

Compartilhamento de espaçoCompartilhamento de espaço

Escalonamento em bandoEscalonamento em bando

Page 9: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

K42K42

IBM Research

Page 10: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

INTRODUÇÃOINTRODUÇÃO

Page 11: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

O que é o K42?O que é o K42?

Novo kernel de sistema operacional para Novo kernel de sistema operacional para sistemas de multiprocessadores de 64-bits com sistemas de multiprocessadores de 64-bits com cache coerentecache coerente

Open sourceOpen source

Em constante evolução, incorporando Em constante evolução, incorporando mecanismos inovadores e técnicas de mecanismos inovadores e técnicas de programação modernasprogramação modernas

Page 12: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

MotivaçãoMotivação

SOs tradicionais multiprocessadosSOs tradicionais multiprocessados Multiprocessadores pequenosMultiprocessadores pequenos Latência de memória pequena em Latência de memória pequena em

comparação com a velocidade dos comparação com a velocidade dos processadoresprocessadores

Custo de compartilhamento de memória era Custo de compartilhamento de memória era baixobaixo

Custo de acesso à memória uniforme Custo de acesso à memória uniforme Cache e linhas de cache pequenasCache e linhas de cache pequenas

Page 13: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

MotivaçãoMotivação

K42K42 Terceira geração da pesquisa de sistemas Terceira geração da pesquisa de sistemas

operacionais multiprocessados.operacionais multiprocessados. Primeira geração: Hurricane OSPrimeira geração: Hurricane OS Segunda geração: Tornado OSSegunda geração: Tornado OS Desenvolvidos do zero especialmente para os Desenvolvidos do zero especialmente para os

multiprocessadores de memória multiprocessadores de memória compartilhada de hoje (NUMA)compartilhada de hoje (NUMA)

Page 14: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ObjetivosObjetivos

PerformancePerformance EscalabilidadeEscalabilidade LocabilidadeLocabilidade CustomizaçãoCustomização ManutençãoManutenção AcessibilidadeAcessibilidade AplicabilidadeAplicabilidade

Page 15: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ESTRUTURA DO K42ESTRUTURA DO K42

Page 16: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

KernelKernel Gerenciamento de memóriaGerenciamento de memória Gerenciamento de processosGerenciamento de processos Infraestrutura de IPCInfraestrutura de IPC Escalonamento básicoEscalonamento básico

System ServersSystem Servers

Bibliotecas em nível de aplicaçãoBibliotecas em nível de aplicação Evitar overhead de IPCEvitar overhead de IPC FlexibilidadeFlexibilidade

Page 17: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Orientada a objetosOrientada a objetos Toda comunicação entre processos é feita Toda comunicação entre processos é feita

entre objetosentre objetos

Suporte à API do LinuxSuporte à API do Linux Através de uma camada de emulação que Através de uma camada de emulação que

implementa chamadas ao sistema Linux implementa chamadas ao sistema Linux chamando métodos em objetos K42.chamando métodos em objetos K42.

Page 18: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Modelo Cliente-ServidorModelo Cliente-Servidor

Page 19: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

TECNOLOGIA DO K42TECNOLOGIA DO K42

Page 20: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Suporta as interfaces externas e internas e Suporta as interfaces externas e internas e modelos de execução do Linux, para suportar modelos de execução do Linux, para suportar suas aplicações e kernelsuas aplicações e kernel

Design feito para que o K42 seja facilmente Design feito para que o K42 seja facilmente portado para novos hardwares e depois portado para novos hardwares e depois melhorado para explorar features específicas do melhorado para explorar features específicas do hardware utilizadohardware utilizado

Page 21: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

K42 mantém boa performance através de um K42 mantém boa performance através de um mecanismo IPC eficiente (com performance mecanismo IPC eficiente (com performance comparável a chamadas de sistema) memória comparável a chamadas de sistema) memória compartilhada entre clientes, servers e kernel, compartilhada entre clientes, servers e kernel, diminuindo custos de comunicaçãodiminuindo custos de comunicação

K42 é totalmente preemptivo e a maior parte K42 é totalmente preemptivo e a maior parte dos dados do kernel pode ser paginada – libera dos dados do kernel pode ser paginada – libera mais memória para aplicaçõesmais memória para aplicações

Page 22: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

K42 usa clocks sincronizados em diferentes K42 usa clocks sincronizados em diferentes processadores, permitindo que processos sejam processadores, permitindo que processos sejam executados simultaneamente por pequenos executados simultaneamente por pequenos períodos de tempo em múltiplos processadoresperíodos de tempo em múltiplos processadores

Garbage collection modificado Garbage collection modificado Deleção de objetos K42 acontece somente após Deleção de objetos K42 acontece somente após

todas as threads que estejam rodando no momento todas as threads que estejam rodando no momento terminaramterminaram

Page 23: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

IMPLEMENTAÇÃO DE IMPLEMENTAÇÃO DE SERVIÇOS DE SISTEMA EM SERVIÇOS DE SISTEMA EM NÍVEL DE USUÁRIONÍVEL DE USUÁRIO

Page 24: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Bibliotecas no espaço de Bibliotecas no espaço de endereçamento da própria endereçamento da própria

aplicaçãoaplicação Customização sem sacrificar segurança e Customização sem sacrificar segurança e

performance de outras aplicaçõesperformance de outras aplicações Redução de overheadRedução de overhead Libera o kernel e os system serversLibera o kernel e os system servers Implementação tão eficiente quanto os Implementação tão eficiente quanto os

serviços de outros sistemas operacionaisserviços de outros sistemas operacionais

Page 25: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Escalonamento de ThreadsEscalonamento de Threads

Totalmente no nível de usuárioTotalmente no nível de usuário Kernel – dispatcher representa o processo do Kernel – dispatcher representa o processo do

usuáriousuário Consome poucos recursos do Kernel, torna o Consome poucos recursos do Kernel, torna o

escalonamento mais eficiente e é mais escalonamento mais eficiente e é mais flexível, possibilitando otimizaçõesflexível, possibilitando otimizações

Page 26: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Interrupções de timerInterrupções de timer

Dispatcher mantém apenas o próximo timeoutDispatcher mantém apenas o próximo timeout O resto fica armazenado no espaço de O resto fica armazenado no espaço de

endereçamento da aplicaçãoendereçamento da aplicação

Melhora performanceMelhora performance Maioria dos timeouts são cancelados antes de Maioria dos timeouts são cancelados antes de

ocorrerocorrer

Evento de timer Evento de timer Notificação assíncrona para o dispatcherNotificação assíncrona para o dispatcher

Page 27: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Faltas de páginaFaltas de página

O estado da thread é mantida no kernel apenas o O estado da thread é mantida no kernel apenas o tempo suficiente para determinar se a falta foi in-coretempo suficiente para determinar se a falta foi in-core

Faltas in-core - kernel resolve. Caso contrário, Faltas in-core - kernel resolve. Caso contrário, dispatcher muda para outra thread ou desistedispatcher muda para outra thread ou desiste

Quando a página é recuperada, um evento Quando a página é recuperada, um evento assíncrono é passado para o dispatcher, que decide assíncrono é passado para o dispatcher, que decide o que fazero que fazer

Custo pouco mais alto que salvar o estado do kernel Custo pouco mais alto que salvar o estado do kernel por evitar salvar ou copiar registradores por evitar salvar ou copiar registradores desnecessariamentedesnecessariamente

Page 28: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Serviços IPCServiços IPC

Serviços do kernel são bem básicos:Serviços do kernel são bem básicos: Muda o processador do espaço de endereçamento do Muda o processador do espaço de endereçamento do

sender para o receiversender para o receiver Mantém a maioria dos registradores intactosMantém a maioria dos registradores intactos Manda um identificador do sender para o receiverManda um identificador do sender para o receiver

Bibliotecas no nível de usuário:Bibliotecas no nível de usuário: Organiza argumentos nos registradoresOrganiza argumentos nos registradores Define regiões compartilhadas para transferência de dadosDefine regiões compartilhadas para transferência de dados Lida com pedidos de autenticaçãoLida com pedidos de autenticação

Tão eficiente quanto os melhores serviços Tão eficiente quanto os melhores serviços IPC de Kernel na literaturaIPC de Kernel na literatura

Page 29: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Serviços de I/OServiços de I/O

Tradicionalmente:Tradicionalmente: servers mantem um estado para cada pedido de servers mantem um estado para cada pedido de

uma thread clienteuma thread cliente

K42:K42: se o server não pode responder no momento, se o server não pode responder no momento,

envia um erro e a aplicação bloqueia a thread no envia um erro e a aplicação bloqueia a thread no seu próprio espaço de endereçamento. seu próprio espaço de endereçamento.

Server mantém informação de todas as aplicações Server mantém informação de todas as aplicações ligadas a uma porta de comunicação e as notifica ligadas a uma porta de comunicação e as notifica quando dados estão disponíveis.quando dados estão disponíveis.

Page 30: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

MODELO ORIENTADO A MODELO ORIENTADO A OBJETOSOBJETOS

Page 31: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

CustomizaçãoCustomização

Instâncias de objetos por recurso permite regras e Instâncias de objetos por recurso permite regras e implementações diferentes para cada casoimplementações diferentes para cada caso Exemplo: permite que cada região de memória tenha um Exemplo: permite que cada região de memória tenha um

tamanho de página diferente ou cada processo lidar com tamanho de página diferente ou cada processo lidar com exceções diferentementeexceções diferentemente

Componentes de uma aplicação podem ser trocados Componentes de uma aplicação podem ser trocados por novas implementações sem tirar o sistema do arpor novas implementações sem tirar o sistema do ar Exemplo: a implementação de um arquivo pode ser Exemplo: a implementação de um arquivo pode ser

modificada a medida que ele cresce, de uma otimizada para modificada a medida que ele cresce, de uma otimizada para arquivos pequenos para uma otimizada para arquivos arquivos pequenos para uma otimizada para arquivos grandesgrandes

Page 32: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Performance de Performance de multiprocessadoresmultiprocessadores

Boa escalabilidade:Boa escalabilidade: Objeto encapsula todos os dados necessários Objeto encapsula todos os dados necessários

para gerenciar um recurso e todos os locks para gerenciar um recurso e todos os locks necessários para acessar os dados.necessários para acessar os dados.

Não existe locks ou estrutura de dados globaisNão existe locks ou estrutura de dados globais

Acessos a diferentes recursos são gerenciados Acessos a diferentes recursos são gerenciados pelo sistema totalmente em paralelo.pelo sistema totalmente em paralelo.

Page 33: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Performance de Performance de multiprocessadoresmultiprocessadores

Clustered objects:Clustered objects:

Tecnologia utilizada para objetos muito Tecnologia utilizada para objetos muito compartilhadoscompartilhados

Permite que a implementação desses objetos seja Permite que a implementação desses objetos seja particionada ou replicada nos processadores que particionada ou replicada nos processadores que a utilizama utilizam

Transparente para os clientes desse objetoTransparente para os clientes desse objeto

Page 34: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Interação cliente/servidorInteração cliente/servidor

Stub-compiler: ligação do mecanismo IPC à Stub-compiler: ligação do mecanismo IPC à interfaces C++interfaces C++ Objeto “Stub”: apresenta a interface para a Objeto “Stub”: apresenta a interface para a

aplicação cliente e organiza chamadas à mesma aplicação cliente e organiza chamadas à mesma através do mecanismo IPCatravés do mecanismo IPC

Objeto “X”: recebe mensagens IPC e reorganiza Objeto “X”: recebe mensagens IPC e reorganiza em chamadas ao objeto real que exportou a em chamadas ao objeto real que exportou a interfaceinterface

A ligação entre um objeto “X” e o seu target é feito A ligação entre um objeto “X” e o seu target é feito em tempo de compilação baseado nas assinaturas em tempo de compilação baseado nas assinaturas dos métodos (polimorfismo)dos métodos (polimorfismo)

Page 35: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Interação cliente/servidorInteração cliente/servidor

Stub-compiler inclui um modelo para executar Stub-compiler inclui um modelo para executar autenticaçãoautenticação Chamadas IPC recebem um id pelo kernelChamadas IPC recebem um id pelo kernel Cada chamada possui diferente direitos de acesso Cada chamada possui diferente direitos de acesso

que são verificados antes que o mecanismo IPC que são verificados antes que o mecanismo IPC realize a chamadarealize a chamada

Clientes com o acesso correto podem dar acesso Clientes com o acesso correto podem dar acesso ao mesmo objeto a outros clientes, independente ao mesmo objeto a outros clientes, independente do tipo de objetodo tipo de objeto

Page 36: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Outros aspectosOutros aspectos

Alta modularidade Alta modularidade Facilita contribuições ao códigoFacilita contribuições ao código Objetos com implementações específicas podem Objetos com implementações específicas podem

ser introduzidos sem penalidades para aplicações ser introduzidos sem penalidades para aplicações que não os utilizamque não os utilizam

Facilita comparação entre duas implementações Facilita comparação entre duas implementações diferentesdiferentes

Hot-swap permite que patches de segurança, Hot-swap permite que patches de segurança, correção ou melhoria de performance sejam correção ou melhoria de performance sejam instalados sem tirar o sistema do ar.instalados sem tirar o sistema do ar.

Page 37: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

DesafiosDesafios

Cuidado extra ao usar C++Cuidado extra ao usar C++ Uso de objetos grandes para evitar overheadUso de objetos grandes para evitar overhead Examinar o código assembly gerado para Examinar o código assembly gerado para

descobrir bugs de performance no compiladordescobrir bugs de performance no compilador

Dificuldade de chegar a um estado globalDificuldade de chegar a um estado global Muitas instâncias – por exemplo, difícil de Muitas instâncias – por exemplo, difícil de

rodar a thread com a maior prioridade globalrodar a thread com a maior prioridade global Área de pesquisaÁrea de pesquisa

Page 38: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas DistribuídosSistemas Distribuídos

Page 39: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: HardwareSistemas Distribuídos: Hardware

Utiliza sistemas completamente Utiliza sistemas completamente separadosseparados

Não tem limitação em espaço físicoNão tem limitação em espaço físico

Funcionam sobre uma rede de dados Funcionam sobre uma rede de dados comumcomum

Page 40: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: SoftwareSistemas Distribuídos: Software

Cada CPU tem seu próprio SOCada CPU tem seu próprio SO

Camada de abstração: MiddlewareCamada de abstração: Middleware

Tentativa de uniformizar a interface entre Tentativa de uniformizar a interface entre usuário e sistemasusuário e sistemas

Page 41: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: SoftwareSistemas Distribuídos: Software

Middleware baseado em documentoMiddleware baseado em documento Uso de repositórios de arquivosUso de repositórios de arquivos Protocolo definido para acessoProtocolo definido para acesso

Exemplos:Exemplos: InternetInternet

Page 42: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: SoftwareSistemas Distribuídos: Software

Middleware baseado no sistema de Middleware baseado no sistema de arquivosarquivos Modelo upload/downloadModelo upload/download

Transferência de arquivos inteirosTransferência de arquivos inteiros

Modelo acesso remotoModelo acesso remoto Transferência de trechos modificadosTransferência de trechos modificados

Exemplo:Exemplo: AFSAFS

Page 43: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: SoftwareSistemas Distribuídos: Software

Middleware baseado em objetos Middleware baseado em objetos compartilhadoscompartilhados Protocolo para utilização de qualquer recursoProtocolo para utilização de qualquer recurso

Exemplos:Exemplos: CORBACORBA GloboGlobo

Page 44: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Sistemas Distribuídos: SoftwareSistemas Distribuídos: Software

Middleware com base em coordenaçãoMiddleware com base em coordenação Baseado no uso de tuplas na redeBaseado no uso de tuplas na rede Conjunto mínimo de operaçõesConjunto mínimo de operações

Exemplos:Exemplos: LindaLinda Publica/EscrevePublica/Escreve JiniJini

Page 45: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

AmoebaAmoeba

Page 46: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

FilosofiaFilosofia

Computadores estão se tornanado cada Computadores estão se tornanado cada vez mais baratos e rápidos vez mais baratos e rápidos

Aumentar a performance em redes de Aumentar a performance em redes de computadorescomputadores

Necessidade de lidar com hardware Necessidade de lidar com hardware fisicamente distribuído e usando software fisicamente distribuído e usando software logicamente centralizadologicamente centralizado

Prover a sensação de um único e simples Prover a sensação de um único e simples computador com sistema de timesharing.computador com sistema de timesharing.

Page 47: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ObjetivosObjetivos

Deve ser pequenoDeve ser pequeno Simples de usarSimples de usar Escalabilidade para um grande número de Escalabilidade para um grande número de

processadoresprocessadores Bom grau de tolerância a faltasBom grau de tolerância a faltas Alta PerformanceAlta Performance Possibilidade de paralelismoPossibilidade de paralelismo Transparente para os usuáriosTransparente para os usuários

Page 48: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Diferença entre Amoeba e S.O. Diferença entre Amoeba e S.O. em redeem rede

Usuário loga em um Usuário loga em um sistema como um todosistema como um todo

O sistema decide o O sistema decide o melhor lugar para rodar melhor lugar para rodar o programao programa

Serviço de nomes de Serviço de nomes de objetos, único e amploobjetos, único e amplo

Usuário loga em uma Usuário loga em uma máquina específicamáquina específica

Prograna executa na Prograna executa na máquina local, a menos máquina local, a menos que seja especificada que seja especificada outra.outra.

Arquivos são locais, a Arquivos são locais, a menos que um sistema menos que um sistema remoto seja montado.remoto seja montado.

Amoeba S.O em rede

Page 49: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ArquiteturaArquitetura

WorkstationsWorkstations Pool de processadoresPool de processadores Servidores especializados Servidores especializados

ArquivoArquivo Base de dadosBase de dados DiretóriosDiretórios EtcEtc

GatewayGateway

Page 50: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ArquiteturaArquitetura

Page 51: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

WorkstationsWorkstations

Uma por usuárioUma por usuário Onde os usuários realizam suas tarefasOnde os usuários realizam suas tarefas Estas podem ser Suns, IBM, PC/AT e Estas podem ser Suns, IBM, PC/AT e

terminais Xterminais X

Page 52: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Pool de ProcessadoresPool de Processadores

Grupo de CPU’sGrupo de CPU’s CPU pode ser dinamicamente alocada e CPU pode ser dinamicamente alocada e

depois retorna ao pooldepois retorna ao pool Oferece a possibilidade de processamento Oferece a possibilidade de processamento

em paralelo.em paralelo.

Page 53: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Servidores especialiadosServidores especialiados

Servidor de diretóriosServidor de diretórios Servidor de arquivosServidor de arquivos Servidor de bootServidor de boot Servidor de banco de dadosServidor de banco de dados Entre outros…Entre outros…

Page 54: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

GatewaysGateways

Liga sistemas Amoeba em diferentes Liga sistemas Amoeba em diferentes lugares em um sistema único e uniforme.lugares em um sistema único e uniforme.

Isola o sistema Amoeba das Isola o sistema Amoeba das peculiaridades dos protocolos de rede peculiaridades dos protocolos de rede que devem ser usados sobre as WAN’s.que devem ser usados sobre as WAN’s.

Page 55: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Amoeba KernelAmoeba Kernel

Todas as máquinas Amoeba rodam o mesmo Todas as máquinas Amoeba rodam o mesmo kernelkernel

O kernel é responsável pela gerenciamento de O kernel é responsável pela gerenciamento de memória, I/O, comunicação entre processos, memória, I/O, comunicação entre processos, primitivas de objetos, processamento básico e primitivas de objetos, processamento básico e multithreading.multithreading.

O objetivo é manter o kernel o menor possível O objetivo é manter o kernel o menor possível para aumentar confiança e permitir ao S.O. para aumentar confiança e permitir ao S.O. rodar como se fosse um processo de usuário.rodar como se fosse um processo de usuário.

Page 56: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ObjetosObjetos

Amoeba é Amoeba é baseadobaseado em objetos e não em objetos e não orientado orientado a objetos.a objetos.

São acessados através de capacidades. São acessados através de capacidades. O sistema pode ser visto como uma coleção de O sistema pode ser visto como uma coleção de

objetos que podem ser tanto hardware como objetos que podem ser tanto hardware como software. Objetos software são mais comuns.software. Objetos software são mais comuns.

Cada objeto tem um lista de operações que Cada objeto tem um lista de operações que podem ser realizadas e uma capacidade ou podem ser realizadas e uma capacidade ou ticket.ticket.

Page 57: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Remote Procedure CallRemote Procedure Call

É utilizado para a comunicação entre É utilizado para a comunicação entre cliente e servidor.cliente e servidor.

Os processos de usuário enviam uma Os processos de usuário enviam uma mensagem de pedido para o servidor que mensagem de pedido para o servidor que gerencia um objeto.gerencia um objeto.

O pedido contém a capacidade do objeto, O pedido contém a capacidade do objeto, a operação a ser realizada e alguns a operação a ser realizada e alguns parâmetrosparâmetros

Page 58: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Remote Procedure Call Remote Procedure Call

O processo do usuário é bloqueado enquanto O processo do usuário é bloqueado enquanto espera a chamada se completar.espera a chamada se completar.

Depois de completa, o servidor responde com Depois de completa, o servidor responde com uma mensagem que desbloqueia o processo uma mensagem que desbloqueia o processo usuário.usuário.

Enviando pedidos, sendo bloqueados e Enviando pedidos, sendo bloqueados e aceitando respostas resulta no processo de aceitando respostas resulta no processo de RPC. Este por sua vez é encapsulado em RPC. Este por sua vez é encapsulado em rotinas.rotinas.

Page 59: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Remote Procedure CallRemote Procedure Call

Interface RPC é construída sobre o Interface RPC é construída sobre o protocolo FLIPprotocolo FLIP

RPC é baseado em 4 primitivasRPC é baseado em 4 primitivas Getreq – Get requisitionGetreq – Get requisition Putreq – Put requisitionPutreq – Put requisition Trans - TransactionTrans - Transaction Timeout – Time outTimeout – Time out

Page 60: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Capacidade ou ticketCapacidade ou ticket Para criar um objeto, o cliente manda um RPC para o servidor Para criar um objeto, o cliente manda um RPC para o servidor

e recebe de volta uma capacidade para acessar esse objeto.e recebe de volta uma capacidade para acessar esse objeto. Uma capacidade é formada por 128 bits:Uma capacidade é formada por 128 bits:

48 bits com o 48 bits com o server portserver port (endereço do servidor e sua (endereço do servidor e sua porta) porta)

24 bits com a identificação do objeto 24 bits com a identificação do objeto 8 bits com os direitos de acesso 8 bits com os direitos de acesso 48 bits de verificação 48 bits de verificação

Provê um mecanismo unificado para nomes, acesso e proteção Provê um mecanismo unificado para nomes, acesso e proteção de objetosde objetos

É criptografada para evitar que outros clientes alterem os É criptografada para evitar que outros clientes alterem os privilégios da capacidade.privilégios da capacidade.

Page 61: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Protocolo FLIPProtocolo FLIP

FLIP (Fast Local Internet Protocol) foi FLIP (Fast Local Internet Protocol) foi desenvolvido por Andrew Tanenbaum.desenvolvido por Andrew Tanenbaum.

Seu objetivo é otimizar a velocidade das Seu objetivo é otimizar a velocidade das RPC’s do sistema.RPC’s do sistema.

FLIP também provê automaticamente o FLIP também provê automaticamente o menor roteamento de mensagens e provê menor roteamento de mensagens e provê automaticamente a passagem entre automaticamente a passagem entre gateways de redes conectadas.gateways de redes conectadas.

Page 62: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

GetreqGetreq

Usada por servidoresUsada por servidores O servidor inicializado, realiza uma operação de O servidor inicializado, realiza uma operação de

getreq com a porta que deseja ouvir. getreq com a porta que deseja ouvir. getreq bloqueia o servidor até que um cliente getreq bloqueia o servidor até que um cliente

envie um pedido utilizando a operação trans.envie um pedido utilizando a operação trans. Quando um pedido chega, o servidor checa se a Quando um pedido chega, o servidor checa se a

capacidade é válida e se tem privilégios capacidade é válida e se tem privilégios suficientes.suficientes.

Page 63: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

PutreqPutreq

Quando um servidor completa uma Quando um servidor completa uma operação, ele manda uma resposta ao operação, ele manda uma resposta ao cliente usado putreq.cliente usado putreq.

Logo depois disso ele executa a operação Logo depois disso ele executa a operação getreq.getreq.

Page 64: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

TransTrans

Usada por clientes para enviar pedidos aos Usada por clientes para enviar pedidos aos servidores. servidores.

A porta do servidor é o primeiro parâmetro da A porta do servidor é o primeiro parâmetro da operação trans. operação trans.

A operação trans bloqueia o cliente até que o A operação trans bloqueia o cliente até que o servidor mande uma resposta.servidor mande uma resposta.

O kernel no qual a operação trans é executada O kernel no qual a operação trans é executada tenta localizar o servidor transmitindo por tenta localizar o servidor transmitindo por broadcasting o pedido juntamente com a porta.broadcasting o pedido juntamente com a porta.

Page 65: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

TransTrans

Se um outro kernel tem um servidor esperando Se um outro kernel tem um servidor esperando por um pedido naquela porta, ele responde e o por um pedido naquela porta, ele responde e o RPC é enviado ao servidor, o qual processa o RPC é enviado ao servidor, o qual processa o pedido e retorna uma resposta.pedido e retorna uma resposta.

O kernel mantêm um cachê de portas O kernel mantêm um cachê de portas conhecidas para melhorar a performance para conhecidas para melhorar a performance para próximos RPC’spróximos RPC’s

Trans não é chamada diretamente pelos Trans não é chamada diretamente pelos clientes, mas embutida em uma chamada de clientes, mas embutida em uma chamada de processo que organiza os dados e o envio de processo que organiza os dados e o envio de mensagens.mensagens.

Page 66: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

TimeoutTimeout

Usado para informar a quantidade de Usado para informar a quantidade de tempo gasta procurando um servidor para tempo gasta procurando um servidor para atender o pedido de uma operação trans.atender o pedido de uma operação trans.

timeout padrão é 5 segundos.timeout padrão é 5 segundos.

Page 67: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Programação Cliente/ServidorProgramação Cliente/Servidor

Não é necessário que a programação do Não é necessário que a programação do cliente ou do servidor se preocupe com a cliente ou do servidor se preocupe com a preparação de dados ou rotinas de preparação de dados ou rotinas de transporte na rede.transporte na rede.

A própria AIL(Amoeba Interface A própria AIL(Amoeba Interface Language) gera esse código Language) gera esse código automaticamenteautomaticamente

Servidorer podem executar processos Servidorer podem executar processos multithreaded mas isso não é obrigatóriomultithreaded mas isso não é obrigatório

Page 68: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ThreadsThreads

Cada processo tem seu próprio espaço de Cada processo tem seu próprio espaço de endereço e contém multiplas threads.endereço e contém multiplas threads.

Essas threads tem suas próprias pilhas e Essas threads tem suas próprias pilhas e descritor de processos, mas compartilha descritor de processos, mas compartilha os dados globais e o código.os dados globais e o código.

Page 69: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

DiretóriosDiretórios

Nomes de arquivos não implementados Nomes de arquivos não implementados pelo servidor de arquivospelo servidor de arquivos

Muito mais tipos de objetos que arquivos, Muito mais tipos de objetos que arquivos, então a necessidade de um serviço de então a necessidade de um serviço de nomes geral.nomes geral.

Servidor de diretórios implementa o Servidor de diretórios implementa o serviço de nomes, implementando um serviço de nomes, implementando um grafo direcionado arbitrário de diretóriosgrafo direcionado arbitrário de diretórios

Page 70: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

DiretóriosDiretórios

Manipula os nomes de arquivosManipula os nomes de arquivos Objeto diretório é uma lista de pares. Objeto diretório é uma lista de pares.

Os pares são formados de uma string para o nome e Os pares são formados de uma string para o nome e um conjunto de capacidades.um conjunto de capacidades.

Um grau de tolerância extra é alcançado pela Um grau de tolerância extra é alcançado pela duplicação do servidor de diretórios que se duplicação do servidor de diretórios que se comunicam entre si para manter a integridade comunicam entre si para manter a integridade dos diretórios.dos diretórios.

É o único que conhece a localização física de É o único que conhece a localização física de cada arquivo.cada arquivo.

Page 71: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

ArquivosArquivos

O servidor de arquivos é conhecido como O servidor de arquivos é conhecido como Bullet Server.Bullet Server.

Armazena os arquivos contiguamente no Armazena os arquivos contiguamente no disco, para dar ao sistema uma alta disco, para dar ao sistema uma alta performance.performance.

Servidores de arquivos são imutáveis. Servidores de arquivos são imutáveis. Uma vez criados não podem ser Uma vez criados não podem ser mudados.mudados.

Page 72: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Amoeba e emulação POSIXAmoeba e emulação POSIX

Biblioteca de Emulação POSIX provê uma Biblioteca de Emulação POSIX provê uma compatibilidade de código fonte razoável. compatibilidade de código fonte razoável.

Isso provê um Amoeba com um ambiente Isso provê um Amoeba com um ambiente de programação e simplifica a migração de programação e simplifica a migração de softwares de sistemas UNIX-like.de softwares de sistemas UNIX-like.

Page 73: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Pontos importantesPontos importantes O sistema é gratuitoO sistema é gratuito Ele não teve uma atualização oficial em 10 anos.Ele não teve uma atualização oficial em 10 anos. Pode-se utilizar CPUs mais velhas e lentas para Pode-se utilizar CPUs mais velhas e lentas para

crias um sistema poderoso.crias um sistema poderoso. Micro-kernel permite que outros sistemas de Micro-kernel permite que outros sistemas de

arquivos sejam criados.arquivos sejam criados. Tem 4 objetivos principaisTem 4 objetivos principais

DistribuiçãoDistribuição ParalelismoParalelismo TransparênciaTransparência PerformancePerformance

Tem muitos comandos e programas parecidos com o Tem muitos comandos e programas parecidos com o UNIXUNIX

Pode somente manipular programas tão grandes Pode somente manipular programas tão grandes quanto a sua memória físicaquanto a sua memória física

Page 74: Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Muito Obrigado!Muito Obrigado!

ReferênciasReferências Tanenbaum A., Sistemas Operacionais Tanenbaum A., Sistemas Operacionais

Modernos, Modernos, www.prenhall.com/tanenbaum_br http://www.eecg.toronto.edu/~tornado/ http://domino.research.ibm.com/comm/resear

ch_projects.nsf/pages/k42.index.html http://www.cs.vu.nl/pub/amoeba/