The kernel is a program that constitutes the central core of a computer operating system. It has complete control over everything that occurs in the system. A kernel can be contrasted with a shell (such as bash, csh or ksh in Unix-like operating systems), which is the outermost part of an operating system and a program that interacts with user commands. The kernel itself does not interact directly with the user, but rather interacts with the shell and other programs as well as with the hardware devices on the system, including the processor (also called the central processing unit or CPU), memory and disk drives.
Interacts with the hardware
First program to get loaded when the system starts and runs till the session gets terminated
Different from BIOS which is hardware dependent.
Kernel is software dependent
Types of Kernals
All OS related code are stuffed in a single module
Available as a single file
OS components are isolated and run in their own address space
Device drivers, programs and system services run outside kernel memory space
Lesser in size
Shell is a UNIX term for the interactive user interface with an operating system. The shell is the layer of programming that understands and executes the commands a user enters. In some systems, the shell is called a command interpreter.
Program that interacts with kernel
Bridge between kernel and the user
User can type command and the command is conveyed to the kernel and it will be executed
Types of Shells
Bourne Again Shell