Nota: O seguinte artigo irá ajudá-lo com: O que é um kernel de computador?
Você provavelmente já sabe o que é um sistema operacional também conhecido como OS. No entanto, se você se deparar com o conceito de kernel, a diferença entre os dois pode não ser tão óbvia.
Então, o que é um kernel de computador?
Vamos começar com o básico.
Todo computador tem um sistema operacional, o que possibilita a execução de programas. Ele garante que as diferentes partes do seu PC funcionem juntas e os programas possam compartilhar informações.
No núcleo de cada sistema operacional está o kernel. Na maioria das vezes, apenas programadores e aqueles que gostam de mexer em suas máquinas estão realmente familiarizados com isso.
Então, o que exatamente o kernel faz? Onde atua? E todos os kernels são iguais?
Neste artigo, responderemos a essas e muitas outras perguntas.
Vamos começar!
O que é um kernel de computador?
Um kernel de computador é uma subparte de um sistema operacional. Embora seja apenas um componente, o kernel é responsável por lidar com uma série de tarefas enquanto o sistema operacional tem suas próprias missões.
O kernel normalmente é carregado na memória quando um sistema é inicializado e permanece residente até que o sistema seja desligado. É o primeiro pedaço de código que é executado quando um usuário faz e é responsável por inicializar o sistema e iniciar o primeiro processo do usuário.
Se eu tivesse que definir kernel, eu o chamaria de programa essencial no centro de um sistema operacional. Como o sistema operacional gerencia todo o sistema, o kernel também tem controle sobre tudo nele.
Pense em um kernel como o maestro de uma orquestra. Um maestro não toca nada sozinho, mas garante que todos os instrumentos estejam tocando em harmonia.
Os kernels residem em todos os tipos de sistemas operacionais, do Linux ao Windows e ao macOS.
Sistema operacional versus kernel
OSs e kernels são dois conceitos essenciais na computação. Embora relacionados, são não é a mesma coisa. Ainda assim, muitos usuários de PC confundem os dois termos.
Então, vamos explicar a diferença entre um sistema operacional e um kernel e por que isso é importante.
O que separa esses dois conceitos é que o SO é um pacote de dados e software responsável por gerenciar os recursos do sistema, enquanto o kernel é um programa importante nele.
Os sistemas operacionais são construídos sobre kernels. Eles fornecem uma interface de nível superior que é mais fácil para os usuários interagirem. Eles também incluem recursos e funcionalidades adicionais, como uma interface gráfica do usuário (GUI) e ferramentas do sistema.
Os kernels são normalmente projetados para serem eficientes e leves. Eles incluem apenas a funcionalidade essencial necessária para executar um computador.
Qual é a função do kernel de um sistema operacional?
O kernel é um componente vital de qualquer sistema operacional e, sem ele, um sistema não funcionaria. Ele liga o hardware e o software do computador e é responsável por gerenciar os recursos e controlar o o à memória.
O kernel também gerencia dispositivos e processadores.
Então, qual é a função do kernel de um sistema operacional? Vejamos suas principais responsabilidades:
- Processos de agendamento: Atribui uma parte do tempo (timeslice) a cada processo, inicia novos processos e determina seus estados (executando, aguardando ou finalizado).
- Alocação de recursos: Controla a memória, os dispositivos periféricos e os processos da U. Atua como um elo entre os recursos e os processos. Aloca hardware para os componentes que precisam dele.
- Gerenciamento de dispositivo: Gerencia todos os dispositivos conectados ao sistema (E/S, dispositivos de armazenamento, etc). Transfere informações deles para o sistema.
- Tratamento de interrupção e chamada do sistema: Muda o controle para processos com maior prioridade. Também lida com chamadas de sistema.
- Gerenciamento de memória: Aloca memória para diferentes processos e programas e os remove assim que terminam.
- Gerenciamento de processos: Cria, executa e encerra processos em execução no sistema. Garante que o sistema execute as tarefas relevantes.
Espaço do usuário versus espaço do kernel
Um computador memória virtual é dividido em espaço do kernel e espaço do usuário. O sistema operacional implementa threads e processos no nível do kernel no espaço do kernel. Da mesma forma, o espaço do usuário é onde os encadeamentos do usuário são implementados.
O espaço do usuário e o espaço do kernel têm direitos de o diferentes. Essa diferença de espaço do usuário versus espaço do kernel significa que os programas de espaço do usuário só podem ar a memória do espaço do usuário. Os programas do espaço do kernel, por outro lado, podem ar a memória do espaço do usuário e do espaço do kernel.
O espaço do kernel é seguro e é aí que todo o seu software é salvo. Isso significa que você não pode interferir mesmo se tiver o ao espaço do usuário. Quaisquer erros durante a codificação no espaço do kernel podem danificar todo o sistema.
Tipos de kernel
Em geral, existem cinco tipos principais de kernel:
Kernel Monolítico
O kernel monolítico é um tipo de arquitetura de kernel. Isto implementa todos os recursos fundamentais de um computadorincluindo o gerenciamento de arquivos e memória.
Um kernel monolítico contém todos os componentes essenciais do sistema operacional. A vantagem desse design é que ele simplifica o desenvolvimento e a depuração, mantendo todo o código em um só lugar. A desvantagem é que pode ser um desafio adicionar novos recursos ou modificar os existentes sem afetar todo o kernel.
Os kernels monolíticos geralmente aparecem em sistemas operacionais do tipo Unix. O kernel do Linux, por exemplo, é monolítico.
Microkernel
A diferença mais significativa entre essa variação e os kernels monolíticos é o número de espaços de endereço que eles am. Ao contrário do kernel monolítico, este tipo delega serviços de usuário e kernel para diferentes espaços de endereço.
Microkernels são kernels pequenos e modulares que gerenciam apenas as partes mais essenciais do sistema operacional. Esse design os torna muito mais leves e eficientes do que os kernels monolíticos tradicionais.
Um dos benefícios dos microkernels é que eles pode ser facilmente personalizado para necessidades específicas. Eles também podem ser portados mais facilmente para novas plataformas de hardware.
No entanto, componentes menores tornam os microkernels mais difíceis de desenvolver e manter do que os kernels monolíticos. Esse tipo também pode apresentar alguns riscos de segurança.
Kernel Híbrido
O próximo da nossa lista é o kernel híbrido. Este tipo é essencialmente um extensão da arquitetura microkernel, mas com alguns atributos monolíticos que melhoram seu desempenho.
Um kernel híbrido permite modularidade. Isso significa que os recursos podem ser adicionados ou removidos sem afetar todo o kernel. Ele também fornece uma comunicação mais eficiente entre as diferentes partes do sistema.
Outra vantagem é que ele pode ser mais escalável do que um kernel monolítico porque seu software pode tirar proveito de vários processadores de forma mais eficaz. Os kernels híbridos são usados em muitos sistemas operacionais modernos, como Windows NT e macOS.
Nanokernel
Um nanokernel é um kernel muito pequeno que fornece apenas os serviços mais básicos exigido por um sistema operacional. Esse tipo é normalmente usado em sistemas embarcados onde as restrições de memória e recursos são severas.
Ao manter o kernel pequeno, mais recursos podem ser dedicados a outras partes do sistema, como aplicativos.
O nanokernel não é adequado para sistemas operacionais de uso geral. No entanto, ele pode ser usado como base para SOs embarcados mais especializados.
Exokernel
Exokernel é um kernel do sistema operacional responsável pelo gerenciamento em nível de aplicativo de recursos de hardware. Esse tipo de arquitetura isola a proteção de recursos do gerenciamento, permitindo a personalização específica do aplicativo.
Um exokernel é um kernel de computador que fornece um interface de programação de aplicativos (API) para o direto aos recursos de hardware. É uma forma de microkernel, pois define abstrações mínimas entre as camadas de hardware e software de um sistema.
Ao contrário da maioria dos microkernels, no entanto, os exokernels não fornecem nenhuma abstração para gerenciamento de processos ou comunicação entre processos (IPC). Estes são deixados para serem implementados por programas de nível de usuário.
O exonúcleo é mais comumente usado em pesquisa e desenvolvimento e não em sistemas de produção.
História do núcleo
Antes da introdução do kernel, os desenvolvedores costumavam codificar ações diretamente para o processador. Sem sistemas operacionais, essa era a única maneira de concluir as interações entre o hardware e o software. Era assim que funcionava a maioria dos primeiros computadores nas décadas de 1950 e 1960.
Em 1969, o programador Per Binch Hanses descobriu que converter SOs para se adequar ao novo hardware seria mais difícil do que criar um núcleo e construir um SO. Esta foi a primeira vez que a ideia de programação do kernel apareceu.
Esse novo núcleo armazenava todo o código fonte para facilitar as comunicações e os sistemas de e.
No início da década de 1970, uma equipe da AT&T Bell Labs, liderada por Ken Thompson, desenvolveu Unix. O Unix foi um sistema operacional pioneiro que introduziu muitos conceitos que agora são comuns em sistemas operacionais. Consistia em uma coleção de programas que orientam suas operações e um kernel que os executa.
A Apple lançou seu Mac OS em 1984 com o computador pessoal Macintosh. Com a versão 8.6, mudou para um design de nanokernel. O macOS moderno usa um kernel XNU híbrido.
o Windows NT kernel é baseado no microkernel desenvolvido por David Cutler, que também trabalhou no sistema operacional VMS. O kernel do Windows NT é um kernel híbridocombinando aspectos dos tipos de microkernel e de kernel monolítico.
Embrulhar
Muitas pessoas acreditam que kernel e SO são a mesma coisa, mas isso não é verdade. O kernel é apenas uma parte do sistema operacional, embora seja o mais importante.
Mesmo se você nunca soube o que realmente é, você o usa desde que adquiriu seu primeiro computador. Agora você sabe exatamente o que organiza todos os processos e dados em seu PC.