Todo sistema operacional tem um kernel ( núcleo ou cerne em inglês ), que é a parte principal do sistema operacional é através do kernel que temos a ligação entre software e hardware.
Na definição do 'núcleo', Jochen Liedtke disse que a palavra é "tradicionalmente usada para definir a parte do sistema operacional que é obrigatória e comum a todo software no sistema."

A maioria dos sistemas operacionais depende do conceito de
núcleo. A existência de um núcleo é uma consequência natural de projetar um sistema de computador como séries de camadas de abstração,
cada uma das funções dependendo das funções das camadas abaixo de si. O núcleo deste ponto de vista, é simplesmente o nome dado ao nível mais inferior de abstração que é implementado em software. Para evitar ter um núcleo, teria-se que projetar todo o software no sistema de modo a não utilizar abstração alguma; isto iria aumentar a complexidade e o projeto a tal ponto que apenas os sistemas mais simples seriam capazes de ser implementados.

Enquanto isto hoje é chamado
núcleo, originalmente a mesma parte do sistema também foi chamado o
nucleus ou
caroço (Nota, no entanto, este termo
caroço também foi usado para se referir a memória primordial de um sistema de computador, por que alguns dos primeiros computadores usaram uma forma de memória chamada memória de caroços magnéticos), e foi concebido originalmente como contendo apenas os recursos de suporte essenciais do sistema operativo.
Na grande maioria dos casos, o processo de iniciação começa executando o núcleo no modo supervisor.
O núcleo depois inicializa a si e depois o primeiro processo. Depois disto, tipicamente, o núcleo não executa diretamente, apenas em resposta para eventos externos (
ex., através de chamadas de sistema usados pelos aplicativos para requisitar serviços do núcleo, ou via interrupções usadas pelo hardware para notificar o núcleo sobre eventos). Além disso, tipicamente o núcleo fornece um laço que é executado sempre que nenhum processo esta disponível para execução; geralmente chamado de
processo desocupado.

O desenvolvimento do núcleo é considerado uma das mais complexas e difíceis tarefas em programação.
Sua posição central em um sistema operacional implica na necessidade de boa performance, que define o núcleo como peça de software crítica e torna seu desenvolvimento correto e implementação correta difícil. Devido a diversas razões, o núcleo pode até não ser capaz de utilizar mecanismos de abstração, que ele fornece a outro software. Tais razões incluem preocupações com o gerenciamento de memória (ex. uma função em modo de usuário pode depender de memória estando sujeita a paginação por demanda, mas como o próprio núcleo fornece esta facilidade, ele não pode utilizá-la, pois ele pode não permanecer na memória para fornecer esta facilidade) e a falta de reentrância, logo o seu desenvolvimento torna-se ainda mais difícil para engenheiros de software.
Por enquanto não vamos nos aprofundar no assunto, havendo interesse dos leitores estarei postando mais a respeito.
0 comentários:
Postar um comentário