Kernel vs Operating System

Is it really obvious to you which is the difference in between a kernel and an operating system?
… because it looks to be like railways and trains (without railways trains can do nothing, but on the other hand only railways doesn’t help to anyone)

Just after few minutes of “googling”

“kernel is the fundamental part of an operating system. It is a piece of software responsible for providing secure access to the machine’s hardware to various computer programs. Since there are many programs, and access to the hardware is limited, the kernel is also responsible for deciding when and how long a program should be able to make use of a piece of hardware, in a technique called multiplexing. Accessing the hardware directly could also be very complex, so kernels usually implement a set of hardware abstractions. These abstractions are a way of hiding the complexity, and providing a clean and uniform interface to the underlying hardware, which makes it easier on application programmers.”

Well, the first thing that comes into my mind is the Linux example. The Linux kernel is is common for all Linux distributions, so when looking at this example the answer may seem obvious: kernel is “that thing” you can find here and Linux distributions you may find in different places, many of them appeared lately, but I will quote just the most notorious ones: RedHat, Mandriva, Ubuntu, Suse, Slackware, Debian and the list may continue.

What does the Linux Kernel contain? Some of the Linux distribuitions use to keep the sources as well, besides the binaries. Usually you can find them under /usr/src/linux and directory names are self-explanatory: init, mm(memory management), drivers, ipc (inter-process communication), modules, fs(file system), kernel (main kernel code), scripts … I have named just the most useful ones. Linux kernel is responsible for bringing to the user a “clean” bash command prompt. It is the software layer which sits closest to the hardware and it has to make sure that , before the user can start using the hardware resources, those are enabled, configured and are working properly. It brings the computer to life and another important aspect is that it executes only privileged code.

Read more of this post