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 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
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 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.
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 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.
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 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.
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.
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.
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 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
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/