The word "Linux" is used in various ways in the world. In this article, I will discuss the most frequently used meanings.
"Linux" originally refers to the OS kernel that Linus Torvalds began developing. An OS kernel, in very simple terms, is the core software of a computer system that exists between processes such as applications and middleware, and hardware.
From the perspective of an application user, the OS kernel achieves the following:
- If one application crashes, it does not affect other applications.
- Multiple applications share system resources such as CPU and memory, while not being able to access each other's resources.
- Communication between applications
- Applications do not need to directly access hardware, as they can access it through a unified interface provided by the kernel. Conversely, applications cannot directly access hardware
In this sense, Linux may be referred to as the "Linux kernel" to avoid confusion. A simple diagram would look like this:
Processes request processing from the kernel using a special method called "system calls". Examples of system calls include process creation, new memory acquisition, and access to devices.
The term "Linux" can also refer to an Operating System (OS) with a Unix-like interface that runs on the Linux kernel. Linux distributions such as Ubuntu and Red Hat Enterprise Linux are more recognizable examples. For instance, "Ubuntu is Linux" can be used.
The term "OS kernel" was mentioned earlier, but OS is not equal to the kernel. The term "OS" refers to a broader scope. In a very rough sense, an OS is the collection of everything that runs on the kernel or that all or most software depends on.
For example, an OS provides:
- System service manager like systemd.
- Shells like bash.
- Standard C libraries used internally by programs written in C
- Compilers for C, C++, Go, etc.
- Interpreters for Python, etc.
The term "OS" is not strictly defined, so some people may argue that some items on the list above are not part of the OS.
Make matters worse, recent Linux distributions have become massive software collections that include everything from applications to middleware, in addition to the OS mentioned above.
As a side note, there is an OS called Debian GNU/Linux, which has other OS variants like Debian GNU/Hurd using the Hurd kernel and Debian GNU/kFreeBSD using the FreeBSD kernel.
The term "Linux" can also refer to an entire computer system built on the kernel-based OS. For example, "Company X's system used to be Windows-based, but it migrated to Linux (a system built on Linux)".
There's a reason why I specifically mentioned "Unix-like interface" in the "Linux as an Operating System" section. For example, Android uses the Linux kernel, but on top of that, it has a unique Android-specific software interface different from Unix-like systems. It's not incorrect to say "Android is Linux", but it's not commonly said. You might hear, "Android uses Linux" more often.
The term "Linux" is indeed difficult to use. When writing books or articles, it is necessary to define the terms as needed, and there is no standardized name to clearly distinguish each meaning.