• Nenhum resultado encontrado

2.4 Estruturas organizacionais clássicas

2.4.7 Estruturas Baseadas em Library Operating Systems

A linha dos library operating systems (DEARLE,2000) caracteriza-se como uma variação do modelo de micronúcleo onde grande parte da funcionalidade do sistema operacional é assentada em bibliotecas (LibOS) implementadas em modo usuário e específicas para cada aplicação.

Há duas correntes nesta linha, quais sejam:

• Exonúcleos (exokernels) e • Cache kernels.

Segundo Engler e Kaashoek(1995),a diferença entre Cache Kernel e Exokernel está

centrada em aspectos filosóficos. O cache kernel concentra-se primariamente em confiabilidade (reliability), ao invés de preocupar-se em exportar com segurança os recursos de hardware para as aplicações. Em função disto, esta é uma proposta limitada a estruturas baseadas em servidores.

A Tabela 8 apresenta um resumo das características desta abordagem para concepção de núcleo de sistemas operacionais. Uma descrição mais detalhada pode ser obtida na seção 10.2.7(Pág.324).

Tabela 8 - Características de núcleos baseados em library OS.

Características

• Variação do modelo de micronúcleo;

• Duas correntes: exonúcleos e cache kernels (DEARLE et al. 1994; DEARLE e HULSE, 2000).

Vantagens

• Estrutura que permite extensibilidade com uma granularidade bastante fina (KAASHOEK, 1995).

Desvantagens

• Uma interface de tão baixo nível implica em que a freqüência das chamadas de sistema podem aumentar, comprometendo a performance (DEARLE et al. 1994);

• Este comprometimento não é tão visível em implementações de núcleos monolíticos ou micronúcleos. (DEARLE et al. 1994).

Exemplos

• Grasshopper (DEARLE e HULSE, 2000).

A seguir são detalhadas as duas abordagens.

2.4.7.1 Estrutura em Exonúcleo

Os projetos de exonúcleo partem do princípio de que a criação de abstrações sobre o hardware é um enfoque errôneo para a construção de sistemas operacionais. Isto porque, independentemente do nível de abstração fornecido por um sistema operacional, sempre haverá alguma classe de aplicação para a qual as abstrações serão inadequadas. Em função desta reflexão, ao invés de prover todo um conjunto de abstrações, um exonúcleo exporta diretamente os recursos de hardware. A única responsabilidade do núcleo é prover acesso multiplexado e seguro aos recursos de hardware

(KAASHOEK,1995).

A Tabela 9 apresenta um resumo das características desta abordagem para concepção de núcleo de sistemas operacionais. Uma descrição mais detalhada pode ser obtida na seção 10.2.7.1(Pág.325).

Tabela 9 - Características de exonúcleos.

Características

• Ao invés de prover todo um conjunto de abstrações, um exonúcleo exporta diretamente os recursos de hardware; • A única responsabilidade do núcleo é prover acesso multiplexado e seguro aos recursos de hardware (KAASHOEK,1995);

• Exonúcleo permite que programas do usuário sobrescrevam o código exportado pelo sistema e pelo próprio núcleo (DEARLE e HULSE, 2000); • A principal diferença entre este enfoque e aquele proposto pelos núcleos monolíticos, é que o limite da portabilidade não mais coincide com a

interface entre as aplicações e o núcleo (KAASHOEK, 1995);

• Segundo Engler e Kaashoek (1995) Máquinas virtuais e exonúcleos diferem sob os seguintes aspectos: o Máquinas virtuais emulam o hardware, enquanto os exonúcleos exportam funções primitivas de baixo nível; o O processo de emulação esconde informação, o que pode contribuir para o uso ineficiente dos recursos de hardware;

o Um exonúcleo tenta expor toda a informação sobre o sistema e, explicitamente, comunica-se com um library operating system, ao invés de apresentar uma visão virtual;

o Máquinas virtuais confinam sistemas operacionais especializados e processos associados em máquinas virtuais isoladas.

Vantagens

• Permitem aos usuários obter controle da funcionalidade do núcleo;

• Uma interface exonúcleo garante mais poder para as aplicações e também promove um melhor compartilhamento de recursos (ENGLER e KAASHOEK, 1995);

• Aplicações especializadas como SGBD módulos de run-time25de linguagens e garbage collectors26, podem substituir a interface padrão e

acessar o hardware diretamente para obter ganhos de performance (KAASHOEK, 1995).

Desvantagens

• A conseqüência imediata é a falta de segurança – como restringir o que os programas do usuário podem fazer. Em função disto o projeto, que pretende ser pequeno e simples, começa a tornar-se mais complexo com a adição de algoritmos de proteção no núcleo (DEARLE et al. 1994); • Dificuldade no projeto da exposição dos recursos de hardware de modo seguro e eficiente, tendo em vista atingir a alto grau de flexibilidade

(DEARLE et al. 1994);

• O limite da portabilidade não mais coincide com a interface entre as aplicações e o núcleo (KAASHOEK,1995);

• Mesmo movendo a responsabilidade sobre gerência de recursos para o nível de usuário, o núcleo é responsável por fornecer mecanismos que garantam (enforce) determinada política (BACK et al., 2001);

• Para evitar que uma aplicação não libere os recursos, deliberadamente ou por erro, o sistema Aegis emprega também um protocolo de cancelamento (abort) em que os recursos são recuperados à força. (MULLENDER et al., 1990);

• Um dos problemas de disponibilizar-se uma interface de tão baixo nível é que a freqüência das chamadas de sistema pode aumentar demasiadamente (DEARLE et al. 1994).

Exemplos

• Aegis (KAASHOEK, 1995);

• SPIN (BERSHAD et al., 1994); • Nemesis (LESLIE et al., 1997; REED, DONNELLY e FAIRBARINS, 1997; e STEVEN,1999).

2.4.7.2 Estruturas em cache kernel

Segundo Cheriton e Duda(1994) os projetos de cache kernel adotam uma filosofia diferente. Ao invés de exportar uma interface com o hardware, como fazem os projetos de exonúcleo, o enfoque cache kernel suporta um pequeno conjunto de abstrações primitivas para as quais todas as decisões sobre política são implementadas por bibliotecas em nível de usuário. Um cache kernel somente armazena threads, espaços de memória, comunicação entre processos e núcleos. O cache kernel executa em modo supervisor. Para cada objeto armazenado, é associada uma aplicação do núcleo. Esta aplicação efetivamente executa em modo usuário e implementa funções de gerência de espaço de endereçamento e escalonamento de suas próprias threads.

25Módulos (programas, bibliotecas) complementares necessários durante a execução de um programa. 26São módulos responsáveis pela desfragmentação e reorganização do espaço da memória dinâmica.

A Tabela 10 apresenta um resumo das características desta abordagem para concepção de núcleo de sistemas operacionais. Uma descrição mais detalhada pode ser obtida na seção10.2.7.2(Pág.328).

Tabela 10 - Características de cache kernel.

Características

• Os projetos de cache kernel, ao invés de exportar uma interface com o hardware, suportam um pequeno conjunto de abstrações primitivas para as quais todas as decisões sobre política são implementadas por bibliotecas em nível de usuário (CHERITON et al., 1984);

• Um cache kernel somente armazena threads, espaços de memória, comunicação entre processos e núcleos (CHERITON et al., 1984); • O cache kernel executa em modo supervisor (CHERITON et al., 1984);

• Explora troca de mensagens em memória e memória física controlada pela aplicação para permitir a construção de aplicações sofisticadas que desejam construir seu próprio núcleo de sistema operacional (CHERITON e DUDA,1994);

• Permite customização específica por aplicação de modo semelhante à proposta microkernel, através de uma interface mínima com o hardware(CHERITON e DUDA,1994).

Vantagens

• A interface de código de baixo nível permite às aplicações controlar o gerenciamento de recursos de acordo com qualquer política desejada. (CHERITON et al., 1984);

• O enfoque de caching temporário previne as aplicações de exaurir a fonte de descritores de objetos como pode ocorrer em sistemas convencionais. (CHERITON et al., 1984);

• O modelo de cache reduz a complexidade do núcleo, se comparado com os modelos de micronúcleos. (CHERITON et al., 1984);

• Significativa redução em tamanho e complexidade do código – exemplo o código de gerência de memória virtual em V++ é de 1500 linhas em C++ enquanto é de 14400 para SunOS 4.1.2 (Sparc) e quase 20.000 linhas para o kernel Mach (MIPS) (CHERITON e DUDA, 1994).

Desvantagens

• O cache kernel não tenta gerenciar todos os objetos do sistema, somente os objetos ativos (CHERITON et al., 1984);

• Como serve apenas como um cache de objetos ativos, fica por conta dos kernels das aplicações em modo usuário gerenciar os demais objetos (CHERITON et al., 1984).

Exemplos

• V++ (CHERITON et al., 1984; CHERITON e DUDA,1994).