Kernel
Imagem: Anatomia do Kernel Linux. Fonte: http://www.ibm.com/developerworks/br/library/l-linux-kernel/figure2.jpg
Essa é a imagem de como o Kernel Linux é dividido, na parte superior, temos o espaço de usuário ou do aplicativo. Este é o espaço no qual os aplicativos de usuário são executados. Há também a GNU C Library (glibc), que fornece a interface de chamada do sistema que se conecta ao kernel e também o mecanismo para transição entre o aplicativo de espaço de usuário e o kernel, isso é importante, pois o kernel e o aplicativo do usuário ocupam espaços de endereços diferentes e protegidos.
Abaixo do Espaço do Usuario nós temos o Espaço do Kernel, na parte superior, temos a interface de chamada do sistema, que implementa as funções basicas do kernel, abaixo dessa interface, temos o código do kernel, que pode ser definico como o código do kernel independente da arquitetura (é comum a todas as arquiteturas do provessador as quais o Linux oferece suporte) e abaixo, está o código dependente da arquitetura, que forma o que é mais comumente chamado de BSP (Board Support Package). Este código atua como o processador e o código específico da plataforma para a arquitetura em questão.
O Kernel Linux também é dividido em Subsistemas, que são: Interface de Chamada do Sistema, Gerenciamento de Processos, Gerenciamento de Memória, Sistema de Arquivo Virtual, Pilha de Redes, Drivers de Dispositivo e o Código Dependente de Arquitetura
Imagem: Subsistemas do Kernel Linux. Fonte: http://www.ibm.com/developerworks/br/library/l-linux-kernel/figure3.jpg
Interface de Chamada do Sistema
É uma camada fina que fornece meios para fazer as chamadas de funções a partir do espaço de usuario no kernel, pode ser dependente da arquitetura, ela é um serviço de multiplexação e desmultiplexação de chamada de funções(Define-se multiplexação como sendo a tarefa de reunir pedaços de dados, vindos de diferentes portas (no hospedeiro de origem)).
Gerenciamento de