Buscar

Sistemas Operacionais Distribuídos e Multiprocessados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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
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
Sistemas MultiprocessadosSistemas Multiprocessados
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
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
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!
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
Sistemas Multiprocessados: Sistemas Multiprocessados: 
SoftwareSoftware
 EscalonamentoEscalonamento
 Compartilhamento de tempoCompartilhamento de tempo
 Compartilhamento de espaçoCompartilhamento de espaço
 Escalonamento em bandoEscalonamento em bando
K42K42
IBM Research
INTRODUÇÃOINTRODUÇÃO
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
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
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)
ObjetivosObjetivos
 PerformancePerformance
 EscalabilidadeEscalabilidade
 LocabilidadeLocabilidade
 CustomizaçãoCustomização
 ManutençãoManutenção
 AcessibilidadeAcessibilidade
 AplicabilidadeAplicabilidade
ESTRUTURA DO K42ESTRUTURA DO K42
 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
 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.
Modelo Cliente­ServidorModelo Cliente­Servidor
TECNOLOGIA DO K42TECNOLOGIA DO K42
 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
 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
 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
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
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 kernele 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
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
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
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
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
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.
MODELO ORIENTADO A MODELO ORIENTADO A 
OBJETOSOBJETOS
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
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.
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
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)
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
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.
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
Sistemas DistribuídosSistemas Distribuídos
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
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
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
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
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
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
AmoebaAmoeba
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.
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
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
ArquiteturaArquitetura
 WorkstationsWorkstations
 Pool de processadoresPool de processadores
 Servidores especializados Servidores especializados 
 ArquivoArquivo
 Base de dadosBase de dados
 DiretóriosDiretórios
 EtcEtc
 GatewayGateway
ArquiteturaArquitetura
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
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.
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…
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.
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.
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.
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
Remote ProcedureCall 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.
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
Capacidade ou ticketCapacidade ou ticket
 Para criar um objeto, o cliente manda um RPC para Para criar um objeto, o cliente manda um RPC para 
o servidor e recebe de volta uma capacidade para o servidor e recebe de volta uma capacidade para 
acessar esse objeto.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  (endereço do servidor 
e sua porta) e sua 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 Provê um mecanismo unificado para nomes, acesso 
e proteção de objetose proteção de objetos
 É criptografada para evitar que outros clientes É criptografada para evitar que outros clientes 
alterem os privilégios da capacidade.alterem os privilégios da capacidade.
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.
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.
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.
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.
TransTrans
 Se um outro kernel tem um servidor Se um outro kernel tem um servidor 
esperando por um pedido naquela porta, ele esperando por um pedido naquela porta, ele 
responde e o RPC é enviado ao servidor, o responde e o RPC é enviado ao servidor, o 
qual processa o pedido e retorna uma qual processa o pedido e retorna uma 
resposta.resposta.
 O kernel mantêm um cachê de portas O kernel mantêm um cachê de portas 
conhecidas para melhorar a performance conhecidas para melhorar a performance 
para próximos RPC’spara pró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.
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.
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
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.
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
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.
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.
 Servidoresde 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.
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.
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 crias Pode­se utilizar CPUs mais velhas e lentas para crias 
um sistema poderoso.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
Muito Obrigado!Muito Obrigado!
 ReferênciasReferências
 Tanenbaum A., Sistemas Operacionais Tanenbaum A., Sistemas Operacionais 
Modernos, Modernos, www.prenhall.com/tanenbaum_brwww.prenhall.com/tanenbaum_br
 http://www.eecg.toronto.edu/~tornado/http://www.eecg.toronto.edu/~tornado/
 http://domino.research.ibm.com/comm/research_projects.nsf/pages/k42.index.htmlhttp://domino.research.ibm.com/comm/research_projects.nsf/pages/k42.index.html
 http://www.cs.vu.nl/pub/amoeba/http://www.cs.vu.nl/pub/amoeba/
http://www.prenhall.com/tanenbaum_br
http://www.prenhall.com/tanenbaum_br
http://domino.research.ibm.com/comm/research_projects.nsf/pages/k42.index.html
http://www.cs.vu.nl/pub/amoeba/

Outros materiais