Você está na página 1de 6

O Kernel Linux

Autor: Joo <juliohenrique at msn.com> - Data: 21/03/2013 Tipos de kernels Penetrando no assunto Este artigo refere-se estrutura e funcionamento do Kernel Linux. Kernel pode ser traduzido como ncleo, crebro. A base de um sistema operacional o kernel. O kernel a parte interna de um sistema operacional, o software que fornece os servios bsicos para todas as outras partes do sistema, gerencia o hardware e distribui os recursos do sistema, ao passo que, a interface do usurio a parte mais externa do sistema operacional. Tipos de Kernels Kernel Monoltico :: Monoltico vem da palavra monlito, formado de uma s pedra, que forma um s bloco. O kernel monoltico aquele que contm todos os mdulos e subsistemas em um nico executvel binrio. O kernel monoltico tem como caracterstica, permitir que as funes essenciais sejam executadas atravs do kernel space (espao do kernel). Isto possvel atravs do uso de mdulos. O que significa que um mdulo, apesar de no estar no mesmo cdigo do kernel, executado no espao de memria do kernel fazendo com que o kernel continue sendo nico e centralizado. Geralmente, um kernel monoltico tem melhor desempenho do que outras arquiteturas de kernel, porm, a manuteno da sua programao mais demorada, pois o kernel deve ser recompilado e substitudo por completo, caso queira implement-lo. Exemplos: Linux, Unix, BSD, FreeBSD, FreeDOS, MS-DOS.

Microkernel :: O microkernel (ou kernel modular) um kernel que "conversa" com os subsistemas que esto no user space (espao do usurio) atravs do uso de mensagens. Possui um ncleo cujas funcionalidades so executadas, em quase toda sua totalidade, fora do kernel space. Outras funcionalidades so oferecidas atravs de programas chamados "servidores", que se localizam no user space. O microkernel, basicamente, prov os servios essenciais, tais como como gerenciamento de memria, gerncia de threads e comunicao entre os processos e tarefas. Servios no essenciais residem no user space. Os microkernels so modulares, cada subsistema do microkernel funciona como plugins e por isso, o microkernel extremamente flexvel. Um microkernel pode ter um executvel binrio menor do que um kernel monoltico, porque o microkernel permite a utilizao de plugins que podem ser usados de acordo com as necessidades do projeto.

Exemplos: OpenSolaris, Hurd, QNX (Quick Unix), MINIX. Kernel Hbrido :: Tem caractersticas de microkernel e kernel monoltico. um kernel que possui apenas as funes principais e servios no essenciais, e comunica-se com os mdulos que so chamados de "servidores", como por exemplo, o servio de impresso. Se um "servidor" der erro, o S.O. continua funcionando, pois so separados. Seu desempenho relativamente menor, pois o kernel tem que comunicar-se com os servios via mensagens, e isto exige um hardware mais robusto. Exemplos: Windows NT, Windows XP, Windows Vista, Windows 7, Windows 8, Mac OS, L4. Exokernel :: O exokernel bastante utilizado para virtualizao de sistemas, pois cria uma camada de kernel expondo o hardware dando o controle aos outros sistemas que rodam na camada superior. O exokernel tem um conceito muito parecido com o microkernel, pois ao invs de ter subsistemas no user space (subsistemas executados como programas), tem sistemas operacionais funcionando na camada superior. O exokernel um software bastante difcil de projetar, pois deve se adaptar aos diferentes tipos de sistemas operacionais e deve permitir o acesso aos diferentes recursos de hardware de cada mquina. Exemplo: Xen. Em relao aos tipos de kernels utilizados hoje em dia, preciso esclarecer que, muitas vezes, um determinado sistema operacional baseia-se num kernel de outro sistema, porm, altera a sua estrutura. Tomando-se como exemplo o kernel Mach, no qual baseado o kernel do MacOS, o kernel Mach possui vrias verses, sendo que nessas vrias verses, tem kernel monoltico e microkernel. Os desenvolvedores optam por este, ou aquele tipo de kernel (monoltico, microkernel ou hbrido), ao desenvolver um determinado sistema operacional. Ainda temos que levar em conta que, com o passar dos anos, os kernels vo sendo aperfeioados e, algumas vezes, torna-se difcil estabelecer se determinado kernel monoltico, microkernel ou hbrido. uma questo tcnica de conceituao. O prprio kernel Linux, voc pode compil-lo integrando (built-in - embutido) alguns mdulos de sua escolha, fazendo assim com que esses determinados mdulos passem a fazer parte do bloco monoltico do kernel e sejam carregados durante a inicializao. Apesar de possuir mdulos, o Kernel Linux NO modular (microkernel). O conceito de kernel modular (microkernel) refere-se ao modo como este tipo de kernel utiliza os servios atravs de troca de mensagens com as aplicaes, ou seja, somente o kernel executado no kernel space e no h compartilhamento de memria como no kernel monoltico. Entende-se por mdulos as funes, os processos, os drivers, etc, ou seja, tudo aquilo que no faz parte do cdigo do kernel. As funes, quando mantidas em mdulos, somente sero carregadas para a memria quando forem necessrias. Por exemplo, o kernel est configurado para trabalhar com dispositivos USB, mas somente ir

carregar essas funes para a memria quando o dispositivo USB for conectado. Kernel Linux A Organizao Kernel Linux (Linux Kernel Organization) uma Corporao de Benefcio Pblico do Estado da Califrnia dos Estados Unidos da Amrica, criada em 2002 para distribuir o Kernel do Linux e outros softwares de cdigo aberto para o pblico, sem custos. reconhecida pela IRS (Receita Federal Americana) como uma fundao privada operacional 501(c)3. A Organizao Kernel Linux gerida pela Fundao Linux que oferece total apoio tcnico, financeiro e pessoal para a execuo e manuteno da infra-estrutura do kernel.org. Os servidores esto localizados em Corvallis, Oregon, EUA; Palo Alto e San Francisco, Califrnia, EUA; Amsterd, Holanda, e Ume, na Sucia. O uso com violao de quaisquer leis, proibido. Linux uma marca registrada de Linus Torvalds. Todas as marcas registradas so de propriedade de seus respectivos proprietrios. O que o Linux? Linux um clone do sistema operacional Unix, mas no um Unix, uma vez que no tem mais nenhum cdigo do Unix original, e seu kernel foi escrito a partir do zero, por Linus Benedict Torvalds, com a assistncia de uma equipe de hackers da Net. Ele atende s normas POSIX (Portable Operating System Interface), que pode ser traduzida como "Interface Portvel entre Sistemas Operacionais" e est em conformidade com a especificao Single UNIX. O Linux tem todas as caractersticas que se espera de um moderno e pleno sistema Unix, incluindo operaes de multitarefa, memria virtual, bibliotecas compartilhadas, carregamento de demanda, executveis compartilhados copy-on-write, gerenciamento de memria prprio e rede multistack, incluindo IPv4 e IPv6. Embora originalmente desenvolvido em primeiro lugar para PCs 32 bits x86 (386 e acima), hoje o Linux tambm funciona em uma variedade de arquiteturas de outros processadores, como em todos os 32 bits e 64 bits. Se voc novo no GNU/Linux e no quer baixar o kernel, que apenas um componente do sistema Linux, mas voc quer uma distribuio completa do Linux, existem inmeras distribuies disponveis para download na Internet, bem como para a compra de vrios fornecedores. Alguns so de uso geral e alguns so otimizados para usos especficos. Atualmente, existem espelhos de vrias distribuies disponveis em: http://mirrors.kernel.org/ Note que, no entanto, a maioria das distribuies tem vrios gigabytes e a menos que voc tenha um link de Internet rpido, voc pode poupar aborrecimentos e comprar um CD-ROM e/ou DVD com uma distribuio. Texto adaptado de: https://www.kernel.org/linux.html O Kernel Linux lanado sob a licena GNU GPL verso 2 e, portanto, Software Livre como definido pela

Free Software Foundation. Voc pode ler a cpia integral da licena no arquivo COPYING distribudo com cada verso do kernel do Linux. A base de um sistema operacional o kernel. O articulado e elegante sistema Linux, iniciado em 1991 pelo Finlands Linus Torvalds, formado basicamente pelo kernel, a biblioteca C, o compilador, a cadeia de ferramentas e os utilitrios bsicos do sistema, como o processo de conexo e o shell. Um sistema Linux tambm inclui uma implementao X Windows System moderna, inclusive um ambiente da rea de trabalho cheio de recursos, como o GNOME ou o KDE. Todo o cdigo fonte do kernel Linux est disponvel na Internet em Kernel.org. O Kernel Linux um software gratuito e open source, sendo que voc est livre para alterar o cdigo fonte e fazer qualquer modificao que quiser (se voc souber como), mas, para serem efetivadas como parte oficial do Kernel Linux, estas modificaes tem que obrigatoriamente resolver um problema real e especfico, ter uma construo sadia e uma implementao clara. Esta a poltica. Nos sistemas modernos com unidades de gerenciamento de memria protegida, o kernel geralmente reside em um nvel "mais alto" do sistema quando comparado com as aplicaes normais do usurio. Isto inclui um espao da memria e um acesso completo para o hardware (geralmente atravs dos drivers). Esse estado do sistema e o espao da memria so chamados coletivamente de "espao do kernel" (Kernel Space). Em oposio, as aplicaes do usurio so executadas no "espao do usurio" (User Space). Ao executar o kernel, o sistema est no espao do kernel em oposio execuo normal do usurio no espao do usurio. As aplicaes executadas no sistema se comunicam com o kernel atravs da "chamada do sistema" (Figura 1). Uma aplicao em geral chama as funes de uma biblioteca - por exemplo, a biblioteca C - que por sua vez conta com a interface de chamada do sistema para instruir o kernel a executar as tarefas em seu nome.

Fonte: LOVE, Robert. Desenvolvimento do Kernel do Linux, 2004.

Algumas chamadas da biblioteca fornecem muitos recursos no encontrados na chamada do sistema. Quando uma aplicao executa uma chamada do sistema, dito que o kernel est sendo executado em nome da aplicao. E mais, dito que a aplicao est executando uma chamada do sistema no espao do kernel e o kernel est sendo executado no contexto do processo. Um programa em si no um processo, um processo um programa ativo com seus recursos afins. Dois ou mais processos podem existir executando o mesmo programa e compartilhando diversos recursos. Um processo inicia sua vida atravs de uma chamada do sistema que cria um novo processo duplicando um j existente. Outro nome para processo, tarefa. Porm, a denominao de um programa em execuo no kernel tida como uma tarefa e a denominao de um programa do espao do usurio tida como um processo. O Linux transfere a execuo do espao do usurio para o espao do kernel sempre que a aplicao fizer uma chamada ao sistema ou a aplicao for suspensa por uma interrupo de hardware. Num driver, algumas funes so executadas usando chamadas ao sistema e outras fazem interrupes. Os kernels tambm gerenciam o hardware do sistema. Praticamente todas as arquiteturas fornecem o conceito de "interrupes". Quando o hardware deseja se comunicar com o sistema, ele emite uma interrupo que interrompe de modo assncrono o kernel. As interrupes, geralmente, esto associadas a um nmero. O kernel usa o nmero para executar uma "subrotina de interrupo" determinada para processar e responder interrupo. Por exemplo, quando voc digita, o controlador do teclado emite uma interrupo para permitir que o sistema saiba que h dados no buffer do teclado. O kernel anota o nmero da interrupo sendo emitida e executa a sub-rotina de interrupo correta. A sub-rotina de interrupo processa os dados do teclado e permite que o controlador do teclado saiba que est pronto para mais dados. Para fornecer a sincronizao, o kernel pode desativar as interrupes - todas as interrupes ou apenas um nmero especfico de interrupes. As interrupes, as IRQs (Interrupt Request Line), podem ser vistas no Setup do CMOS da placa-me. O Setup do CMOS chamado erroneamente de BIOS, pois BIOS todo o sistema bsico de entrada e sada (Basic Input/Output System), ou seja, o sistema que vem instalado de fbrica no CMOS (Complementary Metal-Oxide-Semiconductor), que um chip de circuitos integrados. As IRQs so a forma pela qual os componentes de hardware requisitam um tempo computacional do sistema para a CPU. Uma IRQ a sinalizao de um pedido de interrupo de hardware. Os computadores modernos compatveis com o IBM PC, possuem 16 designaes de IRQ (0-15), cada uma delas representando uma pea fsica (ou virtual) de hardware. Por exemplo, a IRQ0 reservada para o temporizador do sistema, enquanto a IRQ1 reservada para o teclado. Quanto menor for o nmero da IRQ, mais prioridade ela ter para ser processada. No Linux, o ambiente grfico (GNOME, KDE, etc), os programas e aplicativos (BrOffice; aMSN; iptables; BIND; navegadores como Firefox, Iceweasel, etc), grosso modo, esto instalados no sistema, mas as funes que esto habilitadas no kernel s sero carregadas para a memria quando o programa for usado. Fazendo um comparativo, o Windows quando inicializa j carrega em memria a maioria das suas funes e

processos, comumente chamados de drivers; o Linux s carrega o necessrio para o kernel trabalhar. Por essa razo que o Linux ocupa pouca memria. O "monstruoso" Windows, com suas mais de 100 milhes de linhas de cdigo auditadas (Windows 7 e Windows 8), o que se chama de arquitetura fechada, ou seja, um "pacote" fechado, onde voc s pode instalar e desinstalar programas adicionais, mas no pode mudar o que vem com ele, pois seu cdigo fonte no aberto. O kernel do Windows tem em torno de 35 milhes de linhas. O kernel do Linux, na verso 2.6.27 ultrapassou 10 milhes de linhas de cdigo, incluindo espaos, comentrios e documentao. So mais de dez milhes de linhas ocupando o mesmo espao na memria.

Caractersticas do kernel Linux


1. Suporta o carregamento dinmico dos mdulos do kernel. Embora o kernel do Linux seja monoltico, capaz de carregar e descarregar dinamicamente o cdigo do kernel segundo a demanda. 2. Tem suporte do multiprocessador simtrico (SMP). 3. O Kernel Linux antecipado (preemptive). capaz de antecipar uma tarefa, caso ela esteja sendo executada no kernel. 4. O Kernel Linux no tem drivers no user space, e sim Kernel Loadable Modules que rodam no Kernel. 5. O Kernel Linux no pode utilizar aritmtica de ponto flutuante. 6. A memria do Kernel Linux no paginvel. Cada byte de memria consumido um byte a menos na memria fsica, portanto, seja seletivo e cauteloso ao compilar mdulos como built-in no kernel. 7. O Kernel Linux executa operaes em segundo plano atravs das threads - processos-padres que existem unicamente no kernel space e no trocam de contexto no user space, porm, so programveis e so preemptive (antecipados) como processos normais. Uma thread do kernel pode ser criada apenas por outra thread do kernel. O Linux no diferencia o que threads do que processo normal (threads significa linha de execuo e uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente). Para o Kernel Linux todos os processos so iguais e apenas compartilham recursos. Mais claramente: para o Kernel Linux no h conceito de threads. Uma thread no Linux meramente um processo que compartilha certos recursos, diferentemente de outros sistemas operacionais, como o Microsoft Windows e o Oracle Solaris, que tem um suporte explcito para threads. 8. Quando um processo ou uma tarefa termina, o Kernel Linux libera os recursos e notifica os outros processos e tarefas que estavam associados a eles. 9. O Kernel Linux gratuito, em todos os sentidos da palavra.

Você também pode gostar