[Up: tech] [Robot Wisdom home page]

The Linux kernel for poets

Jorn Barger November 2002

The idea of the page is to update the online text by David Rusling [biog] and add current resource-links. [title page] [table of contents] [preface] [glossary] [gpl] [lpd] [old links]

User-mode Linux looks like a neat environment for safely exploring the kernel.

0. What is the kernel?

The Linux kernel is the one complex program at the core of the Linux operating system. The first version posted to the Internet in 1991 was just 64k, written by Linus Torvalds alone. [history] Since then hundreds of 'kernel hackers' have added tens of millions of lines of code, and most kernels these days are over 1 Mb in size. Its filename on your harddrive is probably something like "vmlinuz-2.4.18" in your '/boot/' directory.

The earliest versions were called Image. They were soon renamed vmlinux, purely as a tribute to the standard Unix kernel 'vmunix' (for 'virtual memory Unix'). [thread] In 1993, a compressed ('zipped') format was introduced and called vmlinuz (or zImage, or bzImage).

The kernel-program itself is a 'binary image' or 'binary' created by compiling several million lines of 'C' programming code. The terms of the license are that this 'C source code' must always be offered with the binary image.

A great deal of the GNU/Linux operating system was created by Richard Stallman's GNU Foundation before Linus entered the picture. Stallman still plans to release an alternate kernel called 'HURD' that's expected to run more slowly but allow greater flexibility. (Linux uses the old-fashioned 'monolithic' approach while HURD is a theoretically-more-sophisticated 'microkernel': intro)

The kernel is responsible for managing: memory, time, files, programs, users, devices, and network connections. It has five main sections: startup code, memory management and task management, file management, network management, and device management. [cite]

The word 'kernel' comes from the same root as 'corn' and 'grain'. [etym] I believe for operating systems it's used to differentiate the core functionality from the various 'outer' layers (especially those parts Linux borrowed from GNU).

1. Hardware Basics [etext]

Controllers and Peripherals
Address Spaces

2. Software Basics [etext]

introduces basic software principles and looks at assembly and C programing languages. It looks at the tools that are used to build an operating system like Linux and it gives an overview of the aims and functions of an operating system.

3. Memory Management [etext]

describes the way that Linux handles the physical and virtual memory in the system.


4. Processes [etext]

describes what a process is and how the Linux kernel creates, manages and deletes the processes in the system.

5. Interprocess Communication Mechanisms [etext]

Processes communicate with each other and with the kernel to coordinate their activities. Linux supports a number of Inter-Process Communication (IPC) mechanisms. Signals and pipes are two of them but Linux also supports the System V IPC mechanisms named after the Unix TM release in which they first appeared.

6. PCI [etext]

describes how the Linux kernel initializes and uses PCI buses and devices in the system. (The Peripheral Component Interconnect (PCI) standard is now firmly established as the low cost, high performance data bus for PCs.)

7. Interrupts and Interrupt Handling [etext]

looks at how the Linux kernel handles interrupts. Whilst the kernel has generic mechanisms and interfaces for handling interrupts, some of the interrupt handling details are hardware and architecture specific.

8. Device Drivers [etext]

describes how the Linux kernel controls the physical devices in the system.

9. The File System [etext]

describes how the Linux kernel maintains the files in the file systems that it supports. It describes the Virtual File System (VFS) and how the Linux kernel's real file systems are supported.

10. Networks [etext]

describes how Linux supports the network protocols known collectively as TCP/IP.

11. Kernel Mechanisms [etext]

looks at some of the general tasks and mechanisms that the Linux kernel needs to supply so that other parts of the kernel work effectively together

12. Modules [etext]

describes how the Linux kernel can dynamically load functions, for example file systems, only when they are needed.

13. Processors [etext]

a brief description of some of the processors that Linux has been ported to.

14. The Linux Kernel Sources [etext]

describes where in the Linux kernel sources you should start looking for particular kernel functions.

15. Linux Data Structures [etext]

browsable sources

2.4.18 tour (frames)

2.4 internals

2.0 tour

1.0 tour

hacking howto




You can submit a new URL or any other suggestion for this page by typing it into the box below. It will instantly become visible to anyone at this comments page. I should get around to checking it out and updating it above within a week or three, at which point I'll delete it from the comments page.

If you want credit, include your name and email (otherwise it's anonymous). You can use HTML but you don't have to.

[Up: tech] [Site map] [Robot Wisdom home page]

Related pages:
Linux/Unix: timeline theory kernel distros installing desktops
Timelines: Microsoft 80386
Early Unix-like OSes for micros timeline
Internet Timelines Project: XML-theory
Regular expressions resources
DecentOS design ideas WakeOS
FirstCut parser design ideas

(Feedback to jorn@robotwisdom.com)

Search this site Search full Web

Before you leave this site: Be sure you've checked out Jorn's weblog which offers daily updates on the best of the Web-- news etc, plus new pages on this site. See also the overview of the hundreds of pages of original content offered here, and the offer for a printed version of the site.

Hosting provided by instinct.org. Content may be copied under Open Web Content License.