Difference between revisions of "Linux kernel"

From Pulsed Media Wiki
(Created page with "== Linux kernel == The '''Linux kernel''' is a free and open-source, monolithic, Unix-like operating system Kernel (operating...")
 
(Linux: Information)
 
Line 1: Line 1:
== Linux kernel ==
+
= Linux kernel =
  
The '''Linux kernel''' is a free and open-source, [[Monolithic kernel|monolithic]], [[Unix-like]] [[Operating System|operating system]] [[Kernel (operating system)|kernel]]. It is the main component of a [[Linux distribution|Linux operating system]] and is the core interface between the computer's [[Hardware (computing)|hardware]] and its [[Process (computing)|processes]]. It handles [[Computer resource|resource management]], low-level [[Hardware abstraction|hardware interaction]], [[Process management|process management]], [[Memory management|memory management]], and [[System call|system calls]].
+
The '''Linux kernel''' is the core part of the [[Linux distribution|Linux operating system]]. Think of it as the central foundation or the manager that connects the computer's hardware (like the processor, memory, and storage) with the software programs you run.
  
The Linux kernel was conceived and created by [[Linus Torvalds]] in 1991. Initially, it was a hobby project inspired by MINIX, but it quickly grew with contributions from developers around the world. It is licensed under the [[GNU General Public License version 2|GNU General Public License version 2]] (GPLv2), which ensures it remains free and open-source.
+
Its main job is to manage the computer's resources, decide which programs get to use the processor and when, manage the computer's memory, and allow software to interact with the hardware.
  
Due to its [[Licensing|licensing]] and modular design, the Linux kernel has become a foundational component for a vast array of computing systems, including [[Linux distribution|Linux distributions]] (like [[Debian]], [[Ubuntu]], [[Fedora]], [[Android (operating system)|Android]]), [[Embedded system|embedded systems]], [[Server (computing)|servers]], [[Supercomputer|supercomputers]], and devices within the [[Internet of things]].
+
The Linux kernel was started as a personal project by [[Linus Torvalds]] in 1991. Many developers around the world contribute to it, and it is available for free for anyone to use, study, and share under a specific open-source license (the GPLv2).
  
=== History ===
+
Because it's free, open-source, and very flexible, the Linux kernel is used in many different places, not just desktop computers running Linux. It's the base for things like [[Android (operating system)|Android phones]], servers that power the internet, embedded devices, and supercomputers.
  
In 1991, [[Linus Torvalds]], a student at the University of Helsinki, began a project to create a simple [[Kernel (operating system)|kernel]] for his new [[Personal computer|PC]] using a [[Intel 80386|386 processor]]. He was dissatisfied with [[MINIX]], a small [[Unix-like]] [[Operating System|operating system]] used for teaching, and aimed to create something more capable.
+
== What the Kernel Does (Simply) ==
  
He announced his project in a Usenet post in August 1991, stating it was "just a hobby, won't be big and professional like gnu". The first official version, 0.02, was released in September 1991. Early on, it benefited greatly from using [[GNU Project|GNU]] [[Software|software]] (like the [[GNU Compiler Collection|GCC]]) and libraries, leading to the common term "Linux" often referring to the entire [[Operating System|operating system]] formed by the Linux kernel combined with [[GNU Project|GNU]] user-space tools, sometimes referred to as [[GNU/Linux]].
+
The kernel is always running when your computer is on. It handles the essential tasks that allow software to work:
  
The project rapidly gained contributors over the [[Internet]], accelerating its development. The version number quickly increased, reaching 1.0 in 1994, 2.0 in 1996, 3.0 in 2011, and 4.0 in 2015. Development is now managed through a large, distributed network of maintainers and contributors coordinated by [[Linus Torvalds]]. The [[Version control|version control system]] used for the kernel source code is [[Git]], which was created by Torvalds himself.
+
* '''Manages Programs:''' It decides which program runs on the processor and how long it gets, making sure everything runs smoothly, even when you have many programs open.
 +
* '''Manages Memory:''' It keeps track of the computer's memory (RAM) and makes sure each program has the memory it needs without interfering with others.
 +
* '''Talks to Hardware:''' It provides a way for software to use hardware devices like the keyboard, mouse, screen, storage drives, and network cards.
 +
* '''Manages Files:''' It helps organize and access files on your storage drives.
  
=== Design and Architecture ===
+
== Building Blocks ==
  
The Linux kernel is primarily a [[Monolithic kernel|monolithic kernel]], meaning that the entire [[Operating System|operating system]] [[Kernel (operating system)|kernel]] runs in [[Kernel space|kernel space]] as a single [[Process (computing)|process]]. This differs from a [[Microkernel]], where core functionalities are broken down into separate [[Process (computing)|processes]] running mostly in [[User space|user space]].
+
While very complex under the hood, you can think of the kernel having parts that handle these main jobs. It can also load extra pieces (called kernel modules) while it's running to add support for new hardware or features without needing a restart.
  
However, the Linux kernel incorporates [[Kernel module|loadable kernel modules]], which allows parts of the kernel, such as [[Device driver|device drivers]], [[Filesystem|filesystem]] support, and [[Networking stack|networking protocols]], to be loaded and unloaded while the kernel is running. This modularity provides flexibility, reduces the kernel's memory footprint on systems that don't need all features, and simplifies development and distribution of drivers.
+
== Open and Collaborative ==
  
Key architectural aspects include:
+
The Linux kernel is one of the biggest examples of open-source software development. Thousands of developers worldwide contribute to improving it. This collaborative approach helps make the kernel very stable, secure, and adaptable to new technologies.
  
* **Layered Structure:** While monolithic, the kernel is conceptually organized into layers, from the low-level [[Architecture-specific assembly language|architecture-specific code]] at the bottom to the [[System call|system call]] interface at the top.
+
== Where You Find the Linux Kernel ==
* **[[Portability|Portability]]:** The kernel contains [[Architecture-specific assembly language|architecture-specific code]] to run on a wide range of [[Central Processing Unit|CPU]] architectures (e.g., [[X86]], [[ARM architecture|ARM]], [[MIPS architecture|MIPS]], [[Power Architecture|PowerPC]]), with an [[Hardware abstraction layer|abstraction layer]] handling hardware differences.
 
* **[[Preemption (computing)|Preemptible Kernel]]:** Modern Linux kernels are preemptible, meaning a higher-priority [[Process (computing)|process]] can interrupt a currently running kernel [[Process (computing)|process]], improving responsiveness, especially on [[Multi-core processor|multi-core]] systems.
 
  
=== Key Subsystems ===
+
The Linux kernel is everywhere!
  
The Linux kernel manages the system's [[Computer resource|resources]] through several key subsystems:
+
* On your '''Linux desktop or laptop''' (in distributions like Ubuntu, Fedora, etc.)
 +
* Inside your '''Android phone'''
 +
* Running most of the '''servers''' on the internet
 +
* Powering the world's fastest '''supercomputers'''
 +
* In many '''embedded devices''' like routers, smart TVs, and car systems
  
* '''[[Process management|Process Management]]:''' The kernel is responsible for creating, scheduling, and terminating [[Process (computing)|processes]]. The [[Scheduler (computing)|scheduler]] determines which [[Process (computing)|process]] runs on the [[Central Processing Unit|CPU]] and for how long, aiming to efficiently utilize [[Central Processing Unit|CPU]] time and provide a good user experience (e.g., the [[Completely Fair Scheduler|Completely Fair Scheduler]] - CFS).
+
Its flexibility and open nature have made it a fundamental component of modern computing.
* '''[[Memory management|Memory Management]]:''' This subsystem manages the system's [[Random-access memory|RAM]], allocating memory to [[Process (computing)|processes]], handling [[Virtual memory]], swapping data between RAM and [[Disk storage|disk]] (swapping), and managing the [[Page cache|page cache]] to improve [[Disk storage|disk]] I/O performance.
 
* '''[[File system|File Systems]]:''' The kernel provides a [[Virtual file system|Virtual File System]] (VFS) layer that abstracts the details of different [[Filesystem|filesystem]] types (e.g., [[Ext4]], [[XFS]], [[NTFS]], [[FAT filesystem|FAT]]). This allows the same [[System call|system calls]] to work regardless of the underlying [[Filesystem|filesystem]] on the [[Disk storage|disk]].
 
* '''[[Device driver|Device Drivers]]:''' Drivers are [[Software|software]] components that allow the kernel to interact with specific [[Hardware device|hardware devices]] (e.g., network cards, [[Graphics card|graphics cards]], [[Universal Serial Bus|USB]] devices, [[Disk storage|storage controllers]]). Many drivers can be compiled as [[Kernel module|loadable kernel modules]].
 
* '''[[Networking stack|Networking Stack]]:''' This subsystem handles all network communications, implementing various [[Network protocol|network protocols]] (like [[TCP/IP]], [[UDP]], [[IPX]]) and interacting with network [[Hardware device|hardware]] via [[Device driver|drivers]].
 
* '''[[System call|System Call Interface]]:''' This is the boundary between user-space [[Application software|applications]] and the [[Kernel (operating system)|kernel]]. [[Application software|Applications]] request kernel [[Server (computing)|services]] (like creating a [[Process (computing)|process]], reading a file, sending data over a network) by making [[System call|system calls]] via a defined interface.
 
 
 
=== Kernel Modules ===
 
 
 
[[Kernel module|Loadable kernel modules]] ([[Kernel module|LKM]]) are object files that can extend the running kernel's functionality. They are used to add support for new [[Hardware device|hardware]] or [[Filesystem|filesystems]], or to add specific [[Networking stack|networking protocols]] without requiring a [[Reboot (computing)|reboot]] or a full kernel recompile. This makes the kernel more dynamic and adaptable to different hardware configurations.
 
 
 
=== Licensing ===
 
 
 
The Linux kernel is licensed under the [[GNU General Public License version 2|GNU General Public License version 2]] (GPLv2). This [[Licensing|license]] requires that anyone who distributes the kernel or derivative works must also make the source code available under the same terms. This ensures that the kernel remains free and open-source and encourages contributions from the community.
 
 
 
=== Development Model ===
 
 
 
The Linux kernel is one of the largest and most successful [[Open-source model|open-source projects]] globally. Its development follows a distributed model:
 
 
 
* Thousands of developers from various companies and independent contributors worldwide work on different parts of the kernel.
 
* Code changes are proposed through email to specific maintainers responsible for different kernel subsystems.
 
* Maintainers review and test the changes, then submit them up a hierarchy of subsystem maintainers.
 
* Ultimately, changes flow up to [[Linus Torvalds]], who has the final say on which changes are merged into the main kernel tree.
 
* The entire process is managed using the [[Git]] distributed [[Version control|version control system]].
 
 
 
This model allows for rapid development and review of code, making the kernel highly adaptable and robust.
 
 
 
=== Significance and Impact ===
 
 
 
The Linux kernel's [[Portability|portability]], stability, and open-source nature have led to its widespread adoption across diverse computing domains:
 
 
 
* '''[[Linux distribution|Linux Distributions]]:''' It is the core of every [[Linux distribution|Linux distribution]], powering desktop computers, laptops, and servers.
 
* '''[[Android (operating system)|Android]]:''' The [[Android (operating system)|Android operating system]], the most popular [[Mobile operating system|mobile operating system]] globally, is based on a modified version of the Linux kernel.
 
* '''[[Embedded system|Embedded Systems]]:''' Linux is prevalent in [[Embedded system|embedded devices]] like [[Router (computing)|routers]], [[Smart television|smart TVs]], [[In-vehicle infotainment|automotive systems]], and [[Internet of things|IoT devices]].
 
* '''[[Server (computing)|Servers]] and [[Supercomputer|Supercomputers]]:''' Linux dominates the [[Server (computing)|server]] market and powers the vast majority of the world's [[Supercomputer|supercomputers]].
 
* '''[[Cloud computing|Cloud Computing]]:''' It is the most common [[Operating System|operating system]] kernel used in [[Cloud computing|cloud environments]], powering [[Virtual machine|virtual machines]] and [[Containerization|containers]] across major providers.
 
 
 
=== See Also ===
 
  
 +
== See Also ==
 
* [[Operating system]]
 
* [[Operating system]]
* [[Kernel (operating system)]]
+
* [[Software]]
* [[Monolithic kernel]]
+
* [[Hardware (computing)]]
* [[Microkernel]]
 
* [[Operating-system-level virtualization]] (used by [[Docker]], [[LXC]])
 
* [[Hypervisor]] (used by [[KVM]], [[Xen]])
 
* [[GNU Project]]
 
* [[Linux distribution]]
 
* [[Android (operating system)]]
 
* [[Device driver]]
 
* [[System call]]
 
* [[GNU General Public License]]
 
* [[Linus Torvalds]]
 
* [[Git]]
 
 
 
=== References ===
 
 
 
* [https://www.kernel.org/doc/ Documentation/ Changes] - Official kernel documentation and change logs.
 
* [https://www.linuxfoundation.org/blog/publications/kernel-report-2021/ The Linux Foundation - Linux Kernel Development Report] - Provides insights into kernel development activity.
 
* [https://lwn.net/ LWN.net] - A major source for news and technical articles about the Linux kernel and development.
 
* [https://osr50.cs.princeton.edu/linus_post.html Linus Torvalds's original Usenet post announcing the project.]
 
* Bovet, Daniel P., Cesati, Marco. ''Understanding the Linux Kernel''. O'Reilly Media, 2005. (A classic technical book on kernel internals)
 
  
[[Category:Linux kernel]]
+
[[Category:Linux]]
[[Category:Operating system kernels]]
+
[[Category:Operating system components]]
[[Category:Free and open-source software]]
 
[[Category:Unix-like operating systems]]
 
[[Category:Computer system organization]]
 
[[Category:Computer programming]]
 
[[Category:Systems programming]]
 

Latest revision as of 13:29, 19 May 2025

Linux kernel

The Linux kernel is the core part of the Linux operating system. Think of it as the central foundation or the manager that connects the computer's hardware (like the processor, memory, and storage) with the software programs you run.

Its main job is to manage the computer's resources, decide which programs get to use the processor and when, manage the computer's memory, and allow software to interact with the hardware.

The Linux kernel was started as a personal project by Linus Torvalds in 1991. Many developers around the world contribute to it, and it is available for free for anyone to use, study, and share under a specific open-source license (the GPLv2).

Because it's free, open-source, and very flexible, the Linux kernel is used in many different places, not just desktop computers running Linux. It's the base for things like Android phones, servers that power the internet, embedded devices, and supercomputers.

What the Kernel Does (Simply)

The kernel is always running when your computer is on. It handles the essential tasks that allow software to work:

  • Manages Programs: It decides which program runs on the processor and how long it gets, making sure everything runs smoothly, even when you have many programs open.
  • Manages Memory: It keeps track of the computer's memory (RAM) and makes sure each program has the memory it needs without interfering with others.
  • Talks to Hardware: It provides a way for software to use hardware devices like the keyboard, mouse, screen, storage drives, and network cards.
  • Manages Files: It helps organize and access files on your storage drives.

Building Blocks

While very complex under the hood, you can think of the kernel having parts that handle these main jobs. It can also load extra pieces (called kernel modules) while it's running to add support for new hardware or features without needing a restart.

Open and Collaborative

The Linux kernel is one of the biggest examples of open-source software development. Thousands of developers worldwide contribute to improving it. This collaborative approach helps make the kernel very stable, secure, and adaptable to new technologies.

Where You Find the Linux Kernel

The Linux kernel is everywhere!

  • On your Linux desktop or laptop (in distributions like Ubuntu, Fedora, etc.)
  • Inside your Android phone
  • Running most of the servers on the internet
  • Powering the world's fastest supercomputers
  • In many embedded devices like routers, smart TVs, and car systems

Its flexibility and open nature have made it a fundamental component of modern computing.

See Also