Universidade Federal de Santa Catarina - UFSC

Departamento de Informática e de Estatística - INE

Curso de Graduação em Ciência da Computação

INE5357 – Sistemas Operacionais II

Prof. Antônio Augusto Fröhlich

 

Nome: Douglas Braz Tokuno                                                               9813214-8

 

 

Exokernel: An Operating System Architecture for

Application-Level Resource Management

 

Dawson R. Engler, M. Frans Kaashoek, and James O’Toole Jr.

M.I.T. Laboratory for Computer Science

 

 

 

Introdução

 

            Sistemas operacionais definem a interface entre aplicações e recursos físicos. Infelizmente, esta interface pode significar limite de performance e liberdade de implementação de aplicações. Tradicionalmente, os sistemas operacionais escondem informações dos recursos da máquina utilizando abstrações de alto nível como os processos, arquivos, espaço de endereçamento e comunicação interprocessos. Estas abstrações definem a máquina virtual na qual as aplicações executam; suas implementações não podem ser substituídas ou modificadas por aplicações não confiáveis. A implementação dessas abstrações é inapropriada por três principais razões: não permite que aplicações utilizem otimizações específicas do domínio, desencoraja mudanças das implementações de abstrações existentes e restringe a flexibilidade das ferramentas de desenvolvimento de aplicações.

            Segundo os autores, estes problemas podem ser resolvidos através do gerenciamento de recursos no nível de aplicação. Para isso, foi desenvolvida uma nova arquitetura de sistema operacional, exokernel, no qual abstrações tradicionais de sistemas operacionais, como a memória virtual (VM) e comunicação interprocessos (IPC), são implementados inteiramente no nível de aplicação por software não confiável. Esta arquitetura tem um kernel mínimo – que foi chamado de exokernel – que de forma segura faz a multiplexação dos recursos de hardware disponíveis. As bibliotecas dos sistemas operacionais, trabalhando acima da interface do exokernel, implementam abstrações de mais alto nível.

            Para prover controle dos recursos da máquina para as aplicações, um exokernel define uma interface de baixo nível. A arquitetura exokernel é baseada e motivada por uma única, simples e velha observação: uma primitiva de mais baixo nível pode ser implementada mais eficientemente e permitir mais liberdade para os desenvolvedores das abstrações de mais alto nível.

 

Motivação para Exokernels

 

            Tradicionalmente, sistemas operacionais têm centralizado o gerenciamento de recursos através de um conjunto de abstrações que não podem ser especializadas, estendidas ou substituídas. A principal observação sobre as abstrações de sistemas operacionais tradicionais é que elas são demasiadamente gerais. Os sistemas operacionais comuns tentam fornecer todas as funcionalidades necessárias para todas as aplicações.

            Para prover o máximo de oportunidade para o gerenciamento de recursos no nível de aplicação, a arquitetura exokernel consiste de um pequeno exokernel embutido que faz a multiplexação e exporta os recursos físicos de forma segura através de um conjunto de primitivas de baixo nível. Bibliotecas do sistema operacional, que usam a interface de baixo nível do exokernel, implementam abstrações de mais alto nível e podem definir implementações especiais para melhorar a funcionalidade e performance das aplicações.

            As bibliotecas do sistema operacional podem fornecer tanta portabilidade e compatibilidade quanto desejada. As aplicações que usam diretamente uma interface exokernel não podem ser portáveis, pois a interface incluirá informações específicas de hardware. As aplicações que usam as bibliotecas do sistema operacional e implementam interfaces padrões serão portáveis para qualquer sistema que utilize a mesma interface.

 

Desenvolvimento do Exokernel

 

            O desafio para um exokernel é oferecer à biblioteca do sistema operacional máxima liberdade no gerenciamento dos recursos físicos enquanto os protege de cada um dos outros; um erro de programação em uma biblioteca pode afetar outra biblioteca do sistema operacional. Para alcançar esse objetivo, um exokernel separa proteção de gerenciamento através de interfaces de baixo nível.

            Na separação de proteção de gerenciamento, um exokernel executa três importantes tarefas: (1) acompanhar a posse dos recursos, (2) garantia de proteção por guarda de todos os usos dos recursos ou binding points, e (3) anulação do acesso aos recursos. Para realizar estas tarefas, um exokernel emprega três técnicas. Primeira, usando secure bindings, biblioteca do sistema operacional que pode ligar-se com segurança aos recursos da máquina. Segundo, visible revocation permite a biblioteca do sistema operacional participar do protocolo de anulação de recurso. Terceiro, um abort protocol é usado por um exokernel para parar ligações seguras de uma biblioteca do sistema operacional não cooperativa, a força.

 

Status e Metodologia Experimental

 

            Foram implementados dois sistemas que seguem a arquitetura exokernel: Aegis, um exokernel, e ExOS, uma biblioteca do sistema operacional. Outro protótipo de exokernel, Glaze, está sendo construído para um multiprocessador baseado em SPARC de memória compartilhada experimental, junto com PhOS, uma biblioteca do sistema operacional paralela.

            Aegis e ExOS são implementados em DECstations baseados em MIPS. Aegis exporta o processador, a memória física, TLB, exceções e interrupções. Além do mais, ele exporta com segurança a interface de rede usando um sistema de filtro de pacote que emprega geração dinâmica de código. ExOS implementa processos, memória virtual, exceções no nível de usuário, várias abstrações interprocessos, e muitos protocolos de rede (ARP/RARP/IP/UDP, e NFS). Um sistema de arquivo nativo extensível, que implementa gerenciamento global de buffer está em desenvolvimento. Atualmente, esse protótipo não possui usuários reais, mas é usado extensivelmente para desenvolvimento e experimentação.

            Em um hardware idêntico, foi comparado a performance do Aegis e ExOS com a performance do Ultrix 4.2, um consolidado sistema operacional UNIX monolítico. É importante notar que o Aegis e ExOS não oferecem o mesmo nível de funcionalidades que o Ultrix. Entretanto, não se espera que o acréscimo das mesmas causarão grandes aumentos nos tempos medidos.

            A comparação com o Ultrix serve para dois propósitos. Primeiro, eles mostram que há muito overhead nos sistemas atualmente, que pode ser facilmente removido utilizando implementações especializadas. Segundo, ele fornece um bom e fácil ponto de referência para o entendimento da performance do Aegis e ExOS.

            Medições mostram que a maioria das operações primitivas do kernel (como tratamento de exceções e transferência de controle protegida) é de 10 a 100 vezes mais rápida que no Ultrix. As razões para a boa performance do Aegis são as seguintes: um, manter o caminho de posse de recurso é uma tarefa simples e pode então ser implementado eficientemente. Dois, desde que o kernel tenha um pouco mais de funcionalidade, além de fazer a multiplexação de baixo nível, e seja pequeno e leve: por exemplo, ele mantém a estrutura de dados na memória física. Três, por transferência de filtros de pacotes e pelo emprego de geração dinâmica de código, ligações seguras para a rede podem ser implementados eficientemente.

            O ExOS gerencia abstrações do sistema operacional fundamentais (por exemplo, memória virtual e processos) no nível de aplicação. Medições mostram que memória virtual e primitiva de comunicação interprocessos é de cinco até 40 vezes mais rápidos que as primitivas de kernel do Ultrix.

 

Extensibilidade com ExOS

 

            Bibliotecas do sistema operacional, que trabalham acima da interface do exokernel, implementam abstrações de alto nível e podem definir implementações para propósitos especiais, que melhorem a performance e funcionalidade das aplicações. Os autores demonstram a flexibilidade da arquitetura exokernel, apresentando como abstrações do sistema operacional fundamentais podem ser redefinidos por simples bibliotecas no nível de aplicação. Foi demonstrado que essas extensões podem trazer benefícios drásticos de performance. As diferentes versões do ExOS podem coexistir na mesma máquina e são totalmente protegidas pelo Aegis.

 


Conclusão

 

            Experimentos utilizando os protótipos Aegis e ExOS demonstram as quatro hipóteses:

             Baseado nos resultados desses experimentos foi concluído que a arquitetura exokernel é uma estrutura viável de sistema operacional extensível de alta performance.

 

Comentários sobre o artigo

 

            Conforme o resumo apresentado, os autores afirmam e comprovam que a utilização de um kernel mínimo (chamado de exokernel) com uma interface de baixo nível e bibliotecas do sistema operacional, utilizando uma interface de mais alto nível para as aplicações, podem nos resultar em benefícios realmente significantes em termos de performance, escalabilidade, portabilidade. Entretanto, por se tratar de um sistema em fase experimental, como foi citado no próprio artigo, temos que ver esses resultados com um pouco de cautela.

            Outro comentário dos próprios autores, sobre as bibliotecas do sistema operacional é de que um erro em alguma biblioteca poderá afetar outros componentes do SO. Com isso então temos que garantir que todas as bibliotecas estejam funcionando corretamente, sem que qualquer mínimo erro altere ou perturbe na realização de alguma tarefa.

            Realmente, os dados apresentados pelos autores foram impressionantes e muito interessantes, mas a pergunta que fica é se algum dia veremos um sistema operacional com essa arquitetura “rodando” em algum dispositivo prático. Não podemos nos esquecer que o mercado de sistemas operacionais para desktops é dominado por algumas empresas que podem dificultar a introdução dessa nova arquitetura nesse tipo de mercado e em termos de servidores temos uma cultura um tanto quanto conservadora, talvez restringindo o exokernel apenas ao meio acadêmico.

            Os autores não citaram a possível presença dessa nova arquitetura em sistemas embutidos, mas acredito que seria um mercado mais promissor, se conseguisse manter esse mesmo desempenho e portabilidade apresentada no artigo.