kayohf
(usa openSUSE)
Enviado em 25/07/2010 - 19:10h
Essa resposta não é fácil nem curta, mas é bem interessante. Não existe a necessidade de você ter conhecimento em programação para captar a ideia das tarefas do Kernel.
O kernel é o carinha que fica entre o hardware e o software, é ele quem traduz as requisições de um lado para o outro, e é ele que dá toda a possibilidade para o software se comunicar com o hardware, gerenciando o software.
O kernel cuida do hardware, de forma a compartilhar ele. Com o aprofundamento em cima desse assunto, você vai perceber que nos primórdios dos sistemas operacionais, apenas um programa rodava por vez, até que os engenheiros criaram a ideia de vários processos/programas operando ao mesmo tempo. Isso nada mais é do que um macete de alternância entre os processos ativos para estipular quem vai usar o recurso pedido, como processador, hd, placa de rede, e o quanto.
Então, a principio você já pode ver ele controla então essa fila de processos, uma tarefa nada fácil já que ele tem que determinar por igual e sendo justo quem vai usar o processador por exemplo. Um erro aí e um programa rodará mais do que os outros e deixará todo o resto do sistema lerdo, podendo até travar.
O kernel tem duas grandes dificuldades, de fazer o que tem que fazer, ou seja, o software se comunicando com o hardware e de garantir que todo mundo possa fazer isso e que ninguém atrapalhe o outro.
Sobre o monolítico e microkernel/nanokernel, você vai precisar ir mais a fundo no kernel para conseguir entender a diferença. No Linux, por exemplo, tudo é feito por ele, pelo kernel, tudo que você pode pensar, como gerenciamento do hardware, do driver do hardware em questão, do pessoal que quer usar esse hardware e nessa fila, por exemplo, se quebra algo dentro do código do kernel na area 'driver do hardware', tudo para, entende? Kernel panic. Ou seja, areas que não tem ligação nenhuma com essa parte em questão do kernel são afetadas por um erro ali.
A ideia do microkernel é separar esses caras e fazer do microkernel/nanokernel um cara que apenas se comunica entre esses caras separas, que dá um meio a diversos programas, que antes eram um só, o kernel, a se comunicarem para fazerem o mesmo que o kernel monolítico.
Isso garante, por exemplo, que o cara que controla a criação e gerenciamento de processos não seja afetado caso o cara que controle o acesso ao hardware falhe.
A um exemplo melhor, se você tiver problema em um módulo do kernel, o kernel não para. Essa é a ideia do micro/nanokernel mas em um interesse mais global.
Existe muita teoria e engenharia para se estudar sobre o Kernel, se esse for seu interesse, bem vindo!
Não leve meu comentário como algo fundamental, por favor busque mais para um melhor entendimento.