Definition of the kernel versus the operating system. What it is and is not.

Operating system plan layout.
Operating system plan layout.

The kernel in an operating system is the interface that handles loading drivers and configuring hardware; the operating system that runs on top of the kernel provides a usable interface; i.e a command-line or graphical user interface that the computer operator may use to interface with the computer system and give it commands that are interpreted by the kernel and processed to perform a computing task. The word kernel can mean a core in German; i.e the kernel is the core of the operating system. The command-line BASH or CSH shell that a UNIX or Linux machine provides to the user is running on top of the kernel and is not the kernel per se. The software i.e the Glibc, BASH shell; GCC compiler and many other components such as the Xorg windowing manager could all be running on a completely different kernel and you would call that something else, for example FreeBSD runs a different kernel but it uses the same software as Linux. The Plan 9 operating system uses a distributed operating system model; you can run it all on one piece of hardware or break it up for greater security and better load sharing of hardware tasks on hardware. Unfortunately latency between CPUs means you do not get huge speed gains on a distributed operating system, but that will change with new hardware and software technology.

The Darwin UNIX operating system booting up in verbose mode.
The Darwin UNIX operating system booting up in verbose mode.

By the definition of OS, it has to allow applications and users to interact with the system. The kernel can’t do that without init, without udev, without a shell, without a standard c library. All of that is part of the OS. And a lot more. No, a kernel is not the OS. There are 3 types of kernels, a monolithic kernel, a microkernel where the kernel is broken up into separate software modules, and then there is a distributed kernel where it is broken up into separate software modules and you can run those separate modules on different hardware. The aforementioned Plan 9 operating system uses this model. The Macintosh operating system uses the Darwin UNIX operating system which is free; but the graphical interface built on top of that is what Apple are selling. The Windows operating system uses the NT kernel and Linux of course is named after the kernel it runs. The Windows 8 operating system will still use the NT kernel as will the Windows phone 8 mobile operating system. The Windows Server 2012 operating system also uses the NT kernel. In Linux you may type uname -a or cat /proc/version to find out what version of the kernel you are running. This is the properties of the kernel I have in Windows 7.

C:\Users\flynn>cd c:\Windows\system32

c:\Windows\System32>dir ntoskrnl.exe
 Volume in drive C has no label.
 Volume Serial Number is 82F1-0965

 Directory of c:\Windows\System32

05/04/2012  08:52 PM         5,505,392 ntoskrnl.exe
               1 File(s)      5,505,392 bytes
               0 Dir(s)   7,310,733,312 bytes free

c:\Windows\System32>

You may also use the ver command in the command prompt window to view the kernel version.

c:\Windows\System32>ver

Microsoft Windows [Version 6.1.7600]
Simplified history of UNIX.
Simplified history of UNIX.

The typical operating system needs a kernel to function; but it also needs all of the other software that comes with an operating system to be a usable system. The Linux kernel takes care of loading kernel modules when a new item of hardware is plugged in. That is how hardware such as a USB drive or a micro receiver for a wireless mouse. There is some more in depth information here: http://stackoverflow.com/questions/8469732/how-does-the-linux-kernel-know-which-drivers-to-load-at-boot. This will give more of an understanding of how the drivers are loaded at boot. The modprobe command is also used to load drivers manually if needed after the machine boots. There are some files accessible in the /proc folder that allow the management of the state of the kernel after it has booted. There is more information that may be gleaned from the man proc command or this weblink: http://www.tin.org/bin/man.cgi?section=5&topic=proc.

No comments have been made. Use this form to start the conversation :)

Leave a Reply