Kernel

Ola pessoal, em especial a querida colega Carol,  que pediu algo sobre KERNEL, o assunto rende muito, nao tenho uma compreencao muito grande, porem sou curioso e leio bastante e seguindo algumas fontes tentei resumir e reunir algumas informacoes, entao vamos nessa, lembrando que as fontes estao no final do post!

Para explicar o que é o kernel, fiz uma analogia com uma outra máquina: um carro.

Trata-se de duas máquinas, uma mecânica e a outra eletrônica.

1) Para o carro movimentar-se ele precisa de um motor;
1) Para o microcomputador funcionar, ele precisa se um programa básico - um software chamado sistema operacional;

2) Existem vários tipos de motores, motores para carro de corrida, para carro de passeio, etc;
2) Existem vários tipos de sistemas operacionais, Linux, Windows, UNIX, etc;

3) Mesmo para um mesmo fabricante de motor, existem vários modelos para o mesmo fim, por exemplo: motor 1.0, motor 1.6;
3) Existe um Linux para cada tipo de computador, main-frame, PC, Machintosh

4) Quando aprendemos a dirigir um carro de passeio, aprendemos o funcionamento básico: direção, pedais para acelerar, trocar de marcha, frear. Ou seja, não atuamos diretamente no motor, mas através de comandos para fazê-lo funcionar;
4) Quando usamos Linux, temos um outro software que faz a mediação (interface) entre o kernel e o usuário, chama-se shell. Existem vários shells (csh, ksh, bsh, bash, etc). Mas o importante é que são os mesmos, independente do kernel (motor) em uso, afinal os pedais e direção são sempre iguais seja em um motor 1.0 ou 1.6!

5) Para alguns acessórios funcionarem em um carro, devemos adequar o motor ou algum componente dele para que isto aconteça, por exemplo um ar-condicionado exigirá uma bateria com maior amperagem;
5) Para que o Linux funcione perfeitamente, em alguns casos é necessário instalarmos algum módulo específico, entenda módulo com um programa (software) preparado para uma finalidade específica e que não é comum a todos os equipamentos, por exemplo um módulo para a placa de rede de nosso microcomputador.


Kernel pode ser entendido com uma série de arquivos escritos em linguagem C e em linguagem Assembly que constituem o núcleo do sistema operacional.

A responsabilidade do kernel consiste, tradicionalmente (particularmente no kernel monolítico, tentem entendem em especial no inicio esse kernel), em abstrair a interface do hardware, permitindo que processos utilizem este recurso concorrentemente, de forma segura e padronizada. OU seja, ele faz a ligaçao do hardware com o sistema.

IMPORTANTE
As funções normalmente atribuídas ao kernel são:


    Criação, agendamento e finalização de processos;
    Alocação e liberação de memória;
    Controle do sistema de arquivos;
    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.



Existem varias arquiteturas de kerneis para diferentes sistemas operacionais, irei descreve-los:

1-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 de sistemas operacionais que implementam esse tipo de kernel:

    * BSD
    * Linux
    * MS-DOS e derivados, incluindo Windows 95, Windows 98 e Windows ME
    * Solaris
    * Palm OS

2-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.

    * BeOS / Haiku
    * Microsoft Windows NT
    * XNU (núcleo do Darwin utilizado no Mac OS X)

3-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).

    * Hurd
    * Minix
    * Mach

4-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
    * EROS
    * EKA2
    * Jari Operating System
    * JNode
    * KeyKOS
    * LSE/OS
    * Mac OS nanokernel
    * OZONE
    * Trion Operating System
    * XtratuM

5-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.


Foram citadas as arquiteturas de keineis entre elas o kernel monolitico ou monobloco é um kernel que implementa uma interface de alto nível para possibilitar chamadas de sistema, uma chamada de sistema (system call) é o mecanismo usado pelo programa para requisitar um serviço do sistema operacional,

Periodicamente, novas versões do kernel do Linux são lançadas. Isso ocorre para prover melhorias em uma determinada função da versão anterior, para corrigir vulnerabilidades e para adicionar recursos ao kernel, principalmente compatibilidade com novos hardwares.

Acredito que seguindo as fontes abaixo vcs terao uma maior compreecao sobre o assunto, pode acredita:

http://pt.wikipedia.org/wiki/Kernel

http://pt.wikipedia.org/wiki/Linux_(kernel)

http://www.infowester.com/linuxkernel.php

1 comentários:

Carol disse...

NOSSA, olha... Muito bom o post.. E obrigado por homenagear a mim.. ;D Realmente, nunca rinha entendido o principal objetivo e o que era o tal Kernel... Deu pra ter uma noção bem boa! Muito bem explicado, adorei os exemplos e as comparações.

Postar um comentário

 
2009 LINUX & SW-Free Nenhun Direito Reservado
Votem no 8p