Un système d'exploitation est fondamentalement un gestionnaire de ressources matérielles, fournissant une interface simplifiée et indépendante du périphérique à ces ressources (par rapport à claquer les registres du processeur ou du périphérique à la main). Dans ce rôle, il facilite également le partage de ces ressources, de sorte qu'il'est également chargé de fournir une isolation et une sécurité entre des processus désormais séparés (ou plus récemment des machines virtuelles).
Beaucoup de ces fonctions sont fortement liées entre elles. Les processus ont besoin à la fois de l'unité centrale et de la mémoire qui leur sont allouées. Les périphériques ont besoin de mémoire et d'interruptions, et ne sont généralement pas alloués exclusivement à un processus, de sorte que le système d'exploitation doit les partager par le biais d'une couche d'abstraction de niveau supérieur (par exemple, les sockets, VFS). Le noyau est la collection de ces pièces considérées comme inséparables - d'où son nom - et qui s'exécutent indépendamment de tout utilisateur/processus.
Il existe bien sûr des divergences d'opinion sur le code qui est vraiment inséparable du reste du noyau et sur le code qui peut réellement s'exécuter (ou comment) en tant que processus géré par le noyau. Les micro-noyaux ont démontré il y a longtemps que de nombreuses choses traditionnellement considérées comme des fonctions du noyau peuvent en fait être exécutées dans des processus distincts. Un micro-noyau moderne tel que L4[1] peut même s'exécuter de cette manière avec des performances comparables à celles des "macro-noyaux" monolithiques tels que Linux, et avec des propriétés de sécurité/robustesse bien meilleures.
Linux et d'autres ont ajouté des fonctionnalités telles que les modules de noyau chargeables et les systèmes de fichiers de l'espace utilisateur pour résoudre certains des problèmes les plus pressants de l'approche monolithique, mais brouillent encore la terminologie en ayant beaucoup de code dans le noyau qui n'a pas vraiment besoin d'être là. Dans un sens pratique, le noyau est vraiment la collection de choses écrites et maintenues par la communauté des développeurs du noyau, même quand cela ne correspond pas aux définitions traditionnelles.
[1] http://www.l4hq.org/