Sistemas em camadas[editar]
À medida que os sistemas operacionais tornaram-se mais complexos e maiores, projetos puramente monolíticos tornaram-se inviáveis e, então a arquitetura em camada, ou modular, tornou-se uma boa opção, agrupando "camadas" de componentes, ou seja, conjunto de procedimentos, que realizam tarefas similares.
Cada camada comunica-se somente com as suas camadas imediatamente inferior e superior. Uma camada inferior sempre presta um serviço à sua camada superior, sendo que a camada superior não sabe como o serviço é feito, apenas o solicita. A implementação de uma camada pode ser modificada sem exigir modificação em outra camada, pois possuem componentes autocontidos.
Em uma abordagem em camadas, a solicitação de um serviço pode precisar passar por muitas camadas antes de ser atendida, as sim o desempenho se degrada em comparação ao de núcleos monolíticos.
A exemplo temos o Windows NT, o THE e o MULTICS.
fonte: http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_aos_Sistemas_Operacionais/Estruturas_dos_Sistemas_Operacionais
Finalidade do núcleo:
O principal propósito do núcleo é gerenciar os recursos do computador e permitir que outros programas rodem e usem destes recursos.
Arquitetura Monolítica-> Pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamente e depois linkados, formando um grande e único programa executável. Todos processos em um só núcleo.
Arquitetura de Camadas-> Devido ao Aumento da complexidade e do tamanho do código dos sistemas foi necessário criar técnicas de modulação então o sistema passou a ser dividido em camadas sobrepostas. Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pelas camadas superiores(lembra um pouco REDES modelo OSI).
Vantagem: Isolar as funções do sistema operacional, facilitando a manutenção e depuração, além de criar hierarquia de níveis
Desvantagem: Queda no Desempenho.
Arquitetura Máquina Virtual -> Serve para criar um nível intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas virtuais possibilitando a criação de diversas máquinas virtuais independentes onde cada uma oferece cópia virtual do hardware.
Vantagem: Portabilidade do código / consolidação de servidores/ aumento da disponibilidade / facilidade de escalabilidade e balanceamento de carga / facilidade no desenvolvimento de software.
Arquitetura MicroKernel-> Tendência nos sistemas operacionais modernos visando tornar o núcleo do SO o menor e mais simples possível.
Um dos benefícios da abordagem de microkernel é que ela facilita a extensão do sistema operacional. Todos os serviços novos são adicionados ao espaço do usuário e, consequentemente, não requerem a modificação do kernel.
O microkernel também fornece mais segurança e confiabilidade, já que a maioria dos serviços é executada como processos de usuário — e não do kernel. Se um serviço falha, o resto do sistema operacional permanece intocado.
Sistemas Híbridos -> Na prática, muito poucos sistemas operacionais adotam uma estrutura única rigidamente definida. Em vez disso, eles combinam diferentes estruturas, resultando em sistemas híbridos que resolvem problemas de
desempenho, segurança e usabilidade.
Por exemplo, tanto o Linux quanto o Solaris são monolíticos porque o desempenho é muito mais eficiente quando o sistema operacional ocupa um único espaço de endereçamento. No entanto, eles também são modulares para que novas funcionalidades possam ser adicionadas ao kernel dinamicamente.
Exonúcleos -> Um exonúcleo é um tipo de núcleo que não abstrai hardware in modelos teóricos. Ao invés disso ele aloca recursos físicos de hardware, como o tempo de um processador, páginas de memória, e blocos de disco, para diferentes programas.
Fonte:
Arquitetura de SO - Machado 5 ed /Fundamentos de SO - Silberschatz 9ed