Linux kernel

Linux kernel 3.0.0 booting
Linux kernel 3.0.0 booting
Linus Torvalds at the LinuxCon Europe 2014 in Düsseldorf
The Linux kernel supports various hardware architectures, providing a common platform for software, including proprietary software.
Map of the Linux kernel
Four interfaces are distinguished: two internal to the kernel, and two between the kernel and userspace.
At XDC2014, Alex Deucher from AMD announced the unified kernel-mode driver. The proprietary Linux graphic driver, libGL-fglrx-glx, will share the same DRM infrastructure with Mesa 3D. As there is no stable in-kernel ABI, AMD had to constantly adapt the former binary blob used by Catalyst.
The Linux Storage Stack Diagram
TiVo DVR, a consumer device running Linux
An example of Linux kernel panic
An iPod booting iPodLinux
Redevelopment costs of Linux kernel
Boot messages of a Linux kernel 2.6.25.17

Free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel.

- Linux kernel

500 related topics

Relevance

GNU General Public License

Series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software.

Richard Stallman at the launch of the first draft of the GNU GPLv3 at MIT, Cambridge, Massachusetts, United States. To his right is Columbia Law Professor Eben Moglen, chairman of the Software Freedom Law Center.
Printed GPL statements for consumer entertainment devices which incorporate GPL components
Quick guide of license compatibility with GPLv3 according to the FSF. Dashed line indicates that the GPLv2 is only compatible with the GPLv3 with the clause "or any later version".

Prominent free software programs licensed under the GPL include the Linux kernel and the GNU Compiler Collection (GCC).

GNU Compiler Collection

Optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems.

Screenshot of GCC 10.2 compiling its own source code
Screenshot of GCC 10.2 compiling its own source code
Overview of GCC's extended compilation pipeline, including specialized programs like the preprocessor, assembler and linker.
GCC follows the 3-stage architecture typical of multi-language and multi-CPU compilers. All program trees are converted to a common abstract representation at the "middle end", allowing code optimization and binary code generation facilities to be shared by all languages.
Front ends consist of preprocessing, lexical analysis, syntactic analysis (parsing) and semantic analysis. The goals of compiler front ends are to either accept or reject candidate programs according to the language grammar and semantics, identify errors and handle valid program representations to later compiler stages. This example shows the lexer and parser steps performed for a simple program written in C.
GCC compiling Hello World on Windows

GCC is a key component of the GNU toolchain and the standard compiler for most projects related to GNU and the Linux kernel.

Kernel (operating system)

Computer program at the core of a computer's operating system and generally has complete control over everything in the system.

A kernel connects the application software to the hardware of a computer
Diagram of a monolithic kernel
In the microkernel approach, the kernel itself only provides basic functionality that allows the execution of servers, separate programs that assume former kernel functions, such as device drivers, GUI servers, etc.
The hybrid kernel approach combines the speed and simpler design of a monolithic kernel with the modularity and execution safety of a microkernel
A diagram of the predecessor/successor family relationship for Unix-like systems

Instead, the Linux kernel is monolithic, although it is also modular, for it can insert and remove loadable kernel modules at runtime.

Git

Software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development.

A command-line session showing repository creation, addition of a file, and remote synchronization
A command-line session showing repository creation, addition of a file, and remote synchronization
Some data flows and storage levels in the Git revision control system
gitg is a graphical front-end using GTK+.
Screenshot of Gitweb interface showing a commit diff

Git was originally authored by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development.

Monolithic kernel

Operating system architecture where the entire operating system is working in kernel space.

580px

Modular operating systems such as OS-9 and most modern monolithic operating systems such as OpenVMS, Linux, BSD, SunOS, AIX, and MULTICS can dynamically load (and unload) executable modules at runtime.

GNU Project

Free software, mass collaboration project that Richard Stallman announced on September 27, 1983.

GNU mascot, by Aurelio A. Heckert (derived from a more detailed version by Etienne Suvasa)
GNU Hurd live CD

In 1991, the Linux kernel appeared, developed outside the GNU project by Linus Torvalds, and in December 1992 it was made available under version 2 of the GNU General Public License.

GNU

Extensive collection of free software , which can be used as an operating system or can be used in parts with other operating systems.

Debian GNU/Hurd with Xfce4 and web browser Midori
Debian GNU/Hurd with Xfce4 and web browser Midori
Richard Stallman, founder of the GNU project
Parabola GNU/Linux-libre, an example of an FSF approved distribution that uses a rolling release model
gNewSense, an example of an FSF approved distribution
100px
100px

As of 2012, a fork of the Linux kernel became officially part of the GNU Project in the form of Linux-libre, a variant of Linux with all proprietary components removed.

Free software

Computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions.

Linux Mint. An example of a free-software operating system running some representative applications. Shown are the Xfce desktop environment, the Firefox web browser, the Vim text editor, the GIMP image editor, and the VLC media player.
This Euler diagram describes the typical relationship between freeware and free and open-source software (FOSS): According to David Rosen from Wolfire Games in 2010, open source / free software (orange) is most often gratis but not always. Freeware (green) seldom expose their source code.
Diagram of free and nonfree software, as defined by the Free Software Foundation. Left: free software, right: proprietary software, encircled: Gratis software
Richard Stallman, founder of the Free Software Movement (2002)
Copyleft, a novel use of copyright law to ensure that works remain unrestricted, originates in the world of free software.
Although nearly all computer viruses only affect Microsoft Windows, antivirus software such as ClamTk (shown here) is still provided for Linux and other Unix-based systems, so that users can detect malware that might infect Windows hosts.

Some of the best-known examples include the Linux kernel, the BSD and Linux operating systems, the GNU Compiler Collection and C library; the MySQL relational database; the Apache web server; and the Sendmail mail transport agent.

Free and open-source software

Software that is both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source code is openly shared so that people are encouraged to voluntarily improve the design of the software.

A screenshot of free and open-source software (FOSS): Linux Mint running the Xfce desktop environment, Firefox, a calculator program, the built-in calendar, Vim, GIMP, and VLC media player

The Linux kernel, created by Linus Torvalds, was released as freely modifiable source code in 1991.

Context switch

Process of storing the state of a process or thread, so that it can be restored and resume execution at a later point.

Computer simulation, one of the main cross-computing methodologies.

For example, in the Linux kernel, context switching involves loading the corresponding process control block (PCB) stored in the PCB table in the kernel stack to retrieve information about the state of the new process.