Kernel
Origem: Wikipédia, a enciclopédia livre.
| Esta página ou secção foi marcada para revisão, devido a inconsistências e dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor verifique e melhore a consistência e o rigor deste artigo. Considere utilizar {{revisão-sobre}} para associar este artigo com um WikiProjeto. |
| Esta página precisa ser reciclada de acordo com o livro de estilo. Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior. |
O Kernel de um sistema operacional é entendido como o núcleo deste ou, numa tradução literal, cerne. Ele representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo.
Índice |
[editar] Funções do Kernel
A responsabilidade do kernel consiste, tradicionalmente (particularmente no kernel monolítico), em abstrair a interface do hardware, permitindo que processos utilizem este recurso concorrentemente, de forma segura e padronizada.
As funções normalmente atribuídas ao kernel são: (I) criação, agendamento e finalização de processos; (II) alocação e liberação de memória; (III) controle do sistema de arquivos; (IV) operações de entrada e saída com dispositivos periféricos (discos, interface serial -- mouse, p.ex., interface paralela -- impressoras), acesso à memória, entre outros.
Em um computador, a parte central é a UCP (unidade central de processamento), normalmente um microprocessador -- no qual os processos são executados. A memória RAM é o outro recurso crucial do computador -- o conjunto de chips em que os programas são carregados para execução e no qual são armazenados os seus dados.
[editar] Chamadas de sistema
Para que seja possível realizar algum trabalho útil, um programa no espaço do usuário deve ter acesso a todos os serviços disponibilizados pelo kernel. Esta implementação é diferente em cada kernel, mas deve disponibilizar uma API ao programa, que por sua vez invoca as funções do kernel relacionadas, seja através do sistema de IPC, memória compartilhada ou interrupções.
[editar] Arquitetura
Segundo Tanenbaum (1999) e Silberschatz e outros (2005), o kernel pode ser monolítico, em camadas, ou microkernel (também conhecido como modelo cliente-servidor).
[editar] Kernel monolítico
Kernel monolítico ou monobloco é um kernel que implementa uma interface de alto nível para possibilitar chamadas de sistema específicas para gestão de processos, concorrência e gestão de memória por parte de módulos dedicados que são executados com privilégios especiais. Alguns exemplos deste tipo de kernel:
- BSD
- Linux
- MS-DOS e derivados, incluindo Windows 95, Windows 98 e Windows ME
- Solaris
[editar] Kernel híbrido
Kernel híbrido define um kernel baseado em microkernel no qual módulos externos a ele podem executar operações em modo kernel (protegido), a fim de evitar trocas de contexto e melhorar o desempenho geral do sistema.
[editar] Microkernel
Microkernel é um termo usado para caracterizar o sistema cujas funcionalidades saíram do kernel e foram para servidores, que se comunicam com um núcleo mínimo, usando o mínimo possível do "espaço do sistema" (nesse local o programa tem acesso a todas as instruções e a todo o hardware) e deixando o máximo de recursos rodando no "espaço do usuário" (nesse espaço, o software sofre algumas restrições, não podendo acessar alguns hardwares, não tendo acesso a todas as instruções).
[editar] Nanokernel
O nano kernel ou pico kernel é um tipo de kernel extremamente simples, que é a camada mais próxima do hardware. Os sistemas operacionais que implementam este paradigma geralmente são utilizados como sendo "sistemas virtualizados" ou sistema de tempo real, devido à sua simplicidade. Ele delega virtualmente todos os serviços, incluíndo os mais básicos aos drivers, fazendo com que a memória utilizada por ele seja menor do que a memória utilizada pelo micro-kernel.
- Adeos
- Dycos [1]
- EROS
- EKA2
- Jari Operating System [2]
- JNode
- KeyKOS
- LSE/OS
- Mac OS nanokernel
- OZONE
- Trion Operating System
- XtratuM [3]
[editar] Exokernel
Exokernels é um paradigma de implementação em que existe apenas um Kernel simples que faz apenas gerência de recursos do sistema e um conjunto de bibliotecas que implementam a abstração de um sistema operacional. Nesse tipo de Kernel, o aplicativo pode utilizar diretamente os recursos dos dispositivos do sistema ou pode utilizar bibliotecas de software que implementam este processo. O programador, nesse caso, está livre para escolher a abstração do hardware que desejar.
[editar] Referências
- SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating system concepts. 7.ed. Hoboken: Wiley. 2005.
- TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999.
[editar] Ligações externas
- [4], por Brandon Friesen
- Explicando o que é kernel para leigos

