Linux kernel version history
Linux is the most popular kernel of free computer operating system. It is a UNIX like operating system written in C language and conforming to POSIX standard. Linux was first developed by Finnish hacker Linus Torvalds to try to provide free UNIX like operating system on Intel x86 architecture. The project started in 1991, and here’s a copy of Linus Torvalds, who was on Usenet news at the time comp.os.minix This famous post marks the beginning of the Linux project. Some MINIX hackers helped in the early days of the project, and today countless programmers around the world are helping the project for free.
Technically, Linux is a kernel. “Kernel” refers to a system software that provides hardware abstraction layer, disk and file system control, multitasking and other functions. A kernel is not a complete operating system. A complete operating system based on Linux kernel is called Linux operating system, or GNU / Linux.
Linux is a monolithic kernel system. The device driver has full access to the hardware. The device drivers in Linux can be easily set in the form of modularization, and can be directly loaded or unloaded during the operation of the system.
From the release history of Linux kernel, we can have an overall understanding of Linux as a whole, and we can know the characteristics of each version and what changes have been made, so that we can better understand and learn Linux.
The function of Linux kernel
Some people often ask me, what’s the use of learning Linux kernel? In fact, the Linux kernel is the core of a huge and complex operating system. Learning Linux kernel has five functions. Let’s take a look at the five functions of Linux kernel.
1. Manage processes: the kernel is responsible for creating and destroying processes, and handling their connection with the outside world (input and output). Communication between different processes (through signals, pipelines, or communication primitives) is basic to the whole system function, and is also handled by the kernel. In addition, scheduler, which controls how processes share CPU, is a part of process management. More generally, the kernel’s process management activities implement the abstraction of multiple processes on a single or several CPUs.
2. Memory management: computer memory is the main resource, and the strategy used to deal with it is crucial to system performance. The kernel establishes a virtual address space for each of all processes on a limited available resource. Different parts of the kernel interact with the memory management subsystem through a set of function calls, from simple malloc / free pairs to more and more complex functions.
3. File system: Unix is largely based on the concept of file system; almost everything in UNIX can be regarded as a file. Kernel builds a structured file system on top of unstructured hardware. As a result, file abstraction is widely used in the whole system. In addition, Linux supports multiple file system types, that is, different data organization methods on physical media. For example, disks can be formatted as ext3 file system of standard Linux, fat file system commonly used, or several other file systems.
4. Device control: almost every system operation is mapped to a physical device. Except processor, memory and very few other entities, all device control operations in the system are performed by code specific to the device to be addressed. These codes are called device drivers. The kernel must be embedded with the driver of every peripheral device in the system, from hard disk drive to keyboard and tape drive. This aspect of kernel functionality is of major interest to us in this book.
5. Network management: the network must be managed by the operating system, because most network operations are not specific to a certain process: the packets entering the system are asynchronous events. Messages must be collected, identified and distributed before a process takes over. The system is responsible for delivering data messages between the program and the network interface. It must control the execution of the program according to the network activity of the program. In addition, all the routing and address resolution problems are implemented in the kernel.