Kernel is the main part of computer operating systems, which is heart and soul for of most computer operating systems.
It is responsible for the communication between hardware and software components. The shell is responsible for the communication between user and the kernel. A kernel provides low level access to memory (RAM), CPU and I/O devices such as hard disk and so on. User can use either shell or system calls for the communication with the kernel.