The English term kernel , which can be translated as “nucleus” , is not part of the dictionary of the Royal Spanish Academy ( RAE ). Its use in our language, however, is quite frequent, especially in the field of computing .
The software that makes up the essential part of an operating system is called a kernel. Through the kernel, the various programs of a computer can access the hardware, for example. The kernel is also responsible for managing resources through system call services.
One of the functions of the kernel, in this framework, is to define what software a hardware device can use and for how long. That is why it is very important in RAM memory management.
What the kernel does, in short, is communicate the software with the hardware . For this, it is responsible for managing the physical devices (the processor, peripherals, etc.) and the various computer programs, ordering how they access the resources.
Since there are a large number of programs and each of them can access the hardware in a limited way, the kernel has the function of managing this interaction, deciding which device each program can use and for how long. This is known as multiprogramming , a technique by which two or more processes can be hosted in main memory to be executed concurrently by the main processor.
Direct access to hardware can be very complex. For this reason, the kernel typically does this through what is known as the hardware abstraction layer , a component of the operating system that serves as an interface between the program and devices. This abstraction layer provides us with a consistent hardware platform for us to run software on.
Thanks to the use of the hardware abstraction layer, it is possible to hide the aforementioned complexity and provide the developer with a clear and uniform interface to use the programs and devices.
It is important to note that certain architectures do not have different execution modes, and this means that their operating systems do not have a kernel per se. An example is the so-called embedded systems .
It is possible to differentiate between four classes of kernel: monolithic kernels , hybrid kernels , microkernels and exonuclei . Each one is in charge of different processes according to their characteristics.
The monolithic kernel is an architecture in which the operating system is the only one that works in supervisor mode. One of its distinctive features is that it only defines a high-level virtual interface.
The microkernel provides a number of minimal system calls for the implementation of basic services, such as basic scheduling, interprocess communication, and address spaces.
The hybrid kernel can be understood as a microkernel that has a certain amount of code in kernel space to execute it at a faster speed than if it were in user space. This code is not considered essential.
The exonucleus or exokernel is a system that was developed at the Massachusetts Institute of Technology to be used in research projects. Its main objective is the creation of a kind of software layer for other virtual systems.
Kernel types also vary by operating system . The Windows kernel , Microsoft 's famous OS, is hermetic: no user can modify it. The Linux kernel , on the other hand, is open source. This means that whoever wishes can establish changes, which gives rise to the existence of multiple Linux distributions. The Linux kernel can also be updated independently of the rest of the OS.