So Linux is 25 years old now. The Linux kernel was created by a Finnish student named Linus Torvalds in 1991 who at the time was a 21-year-old computer science student at the University of Helsinki, Finland . On 25 August 1991, Torvalds posted the following to comp.os.minix, a newsgroup on Usenet-
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386 (486) AT clones. This has been brewing since April, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
Linus then licensed the kernel using the GPL license, meaning that it was open source and available to the general public to look at the code, modify it to their needs, and then distribute it under the same GPL license. On 14 March 1994, Linux kernel 1.0.0 was released, with 176,250 lines of code. Version 3.10 of the Linux kernel, released in June 2013, contains 15,803,499 lines of code, while the version 4.1, released in June 2015, has grown to over 19.5 million lines of code contributed by almost 14,000 programmers.
So What Does Linux Kernel Do?
Every operating system uses a kernel in one form or the other. It is possible although impractical to have a computer without a kernel. Without the kernel, it is almost impossible to have a working operating system. In general terms, the kernel is a software code that serves as a layer between the hardware and main programs that run on a computer. It is the first part to load when the OS boots up. It is loaded in memory and stays there throughout the entire time the computer is in session. So let’s look at the few characteristics of the Linux kernel.
1. Communication and Resource Management
The Linux kernel allows for communication between the hardware via drivers included in the kernel or added via kernel modules and the software. It also responsible for the efficient management of the system’s resources such as memory management, process and task management, and disk management. Thus, the kernel ensures that there is enough memory available for an application. It also makes sure that the processor works efficiently in running and completing tasks.
2. The Linux Kernel Is Monolithic
The Linux kernel is of a monolithic nature, in that instead of the opposite which is termed a microkernel which aims to have the smallest install and memory footprint as possible my managing only what it has to such as the CPU, memory and IPC. The Linux kernel also includes things such as device drivers, system server calls and the file management system. This makes the Linux kernel quite better at accessing hardware and multi-tasking since there is kind of a direct line to any information required from memory or any running process. The monolithic nature also means that the kernel comes with a very large footprint but one key way the developers have sidestepped this problem is the use of kernel modules. Kernel modules can be loaded/unloaded at runtime which means features may be added or removed at any time.
The Linux kernel was originally not designed to be portable, but it has currently been ported to numerous systems. It is the OS (kernel) of choice in almost all of the top 500 fastest supercomputers. It powers the most popular OS ever, Google Android. Other mobile operating systems such as Firefox OS, HP webOS and Samsung’s Tizen are all powered by the Linux kernel.
Beginning with Linux kernel version 4.0 which was released in April 2015, live kernel patching was added. Updates can be applied to the kernel or even replaced without needing to reboot your computer. This allows for system updates with no downtime on systems and this can be quite useful especially in server systems.
The kernel ought not be confused with the BIOS. The BIOS is an independent program stored in a chip on the main circuit board of a computer. It is used during the booting process for tasks like initializing the hardware and loading the kernel into memory. Unlike the BIOS always remains in the computer and is specific to its particular hardware, the kernel can be easily replaced or upgraded by changing or upgrading the operating system or, in the case of Linux, by adding a newer kernel or modifying an existing kernel.
Like Linux, Windows and macOS both come with their own kernels which are all different. Of the very many Linux distros that are available, general or specialized, the Linux kernel is the main common factor amongst them.