I am trying to know what is the exact definition of a kernel (not sure if there is an agreement on one definition).

Can we say that a kernel is composed of the components that can't be removed from it? for example: we can't remove the process scheduler or the interrupt handlers from the kernel.

But we can remove a device driver (so a device driver isn't necessary in order for the kernel to work), so can we say that device drivers are not really part of the kernel but rather they are extensions of the kernel?


(Noting the Linux tag), I don't think you can classify the ability to remove a device driver or not as relevant to whether it is part of the kernel as it is very possible to compile a kernel with drivers built in - its a balancing act to have enough that systems can boot correctly, but not too much stuff not being used by to many people wasting memory. I'd argue if things are part of the kernel or extensions to the kernel are semantics which can't really be resolved except by participants in a particular conversation.

This link puts the kernel as being everything above the hardware platform and below user space as being part of the kernel - clearly including device drivers, and that is a solid and reasonable definition.

Maybe another way of defining the Linux kernel is "the parts of Linux that are/were overseen by Linus Torvalds", and using this could help clarify what people might mean by a kernel extension. Of-course, this becomes a grey line thanks to things like FUSE. (ie filesystems in userspace)

Not the answer you're looking for? Browse other questions tagged or ask your own question.