2. Introduction
History
What Is A Kernel
Types Of Kernel
Versions
Kernel Functional
Importance Of Kernel
The Linux Keys To Success
Linux Evolution
Conclusion
3. Linux was initially developed by Linus Torvalds in 1991 as an operating
system for IBM-compatible personal computers based on the Intel
80386 microprocessor. Linus remains deeply involved with improving
Linux, keeping it up-to-date with various hardware developments and
coordinating the activity of hundreds of Linux developers around the
world.
4. Over the years, developers have worked to make Linux available on
other architectures including Alpha, SPARC, Motorola MC680x0, PowerPC,
and IBM System/390.
Technically speaking, Linux is a true Unix kernel, although it is not a full
Unix operating system, because it does not include all the applications such
as file system utilities, windowing systems and graphical desktops, system
administrator commands, text editors, compilers, and so on. However, since
most of these programs are freely available under the GNU General Public
License, they can be installed into one of the file systems supported by
Linux.
5. The Linux kernel project was started in 1991 by Linus Torvalds as a
Minix-like Operating System for his 386.
(Linus had originally wanted to name the project Freax, but the now-
familiar name is the one that stuck.) The first official release of Linux
1.0 was in March 1994, but it supported only single-processor i386
machines. Just a year later, Linux 1.2 was released (March 1995) and
was the first version with support for different hardware platforms
(specifically: Alpha, Sparc, and Mips), but still only single-processor
models. Linux 2.0 arrived in June of 1996 and also included support for
a number of new architectures, but more importantly brought Linux into
the world of multi-processor machines (SMP). After 2.0, subsequent
major releases have been somewhat slower in coming (Linux 2.2 in
January 1999 and 2.4 in January 2001), each revision expanding
Linux's support for new hardware and system types as well as boosting
scalability.
6. (Linux 2.4 was also notable in being the release that really broke
Linux into the desktop space with kernel support for ISA Plug-and-
Play, USB, PC Card support, and other additions.) Linux 2.6,
released 12/17/03, stands not only to build on these features, but
also to be another "major leap" with improved support for both
significantly larger systems and significantly smaller ones (PDAs and
other devices.).
7. A set of code which directly interacts with hardware and allocate and
manages resources such as CPU time, memory and I/O access .Kernel
also contain system calls which provide specific functions.
it’s a program that runs in Kernel Mode.
CPUs run either in Kernel Mode or in User Mode.
when in User Mode, some parts of RAM can’t be addressed, some
instructions can’t be executed, and I/O ports can’t be accessed.
when in Kernel Mode, no restriction is put on the program
besides running in Kernel Mode, kernels have three other peculiarities
such as:
-large size (millions of machine language instructions)
-machine dependency (some parts of the kernel must be coded
in Assembly language)
- loading into RAM at boot time in a rather primitive way
8. All OS services operate in kernel space
Good performance
Disadvantages:
-Dependencies between system component
-Complex & huge (millions(!) of lines of code)
-Larger size makes it hard to maintain
E.g. Multics, Unix, BSD, Linux
Minimalist approach
-IPC, virtual memory, thread scheduling
Put the rest into user space
-Device drivers, networking, file system, user interface
More stable with less services in kernel space
Disadvantages:
-Lots of system calls and context switches
E.g. Mach, L4, AmigaOS, Minix, K42
9. Combine the best of both worlds
-Speed and simple design of a monolithic kernel
-Modularity and stability of a microkernel
Still similar to a monolithic kernel
E.g. Windows NT, NetWare, BeOS
-Flexible
-Modular
-Easy to implement
-Performance
10. Linux distinguishes stable kernels from development kernels through a
simple numbering scheme. Each version is characterized by three
numbers, separated by periods. The first two numbers are used to
identify the version; the third number identifies the release.
The third field is number of patch. Patches are intended to fix some
bug, they almost never introduce new feature in stable kernel.
Patches that do not bring new features (they should be less than 100
lines in length) increase the fourth number.
If the fourth number is zero, it’s not written: first patch changes
supposed 2.2.14 to 2.2.14.1 and the next one to 2.2.14.2 and so on.
11. As shown in Figure 1-1, if the second number is even, it denotes a
stable kernel; otherwise, it denotes a development kernel. The 2.2
kernel was first released in January 1999, and it differs considerably
from the 2.0 kernel, particularly with respect to memory management.
Work on the 2.3 development version started in May 1999.
Figure 1-1. Numbering Linux versions
12. It is responsible for storing information on disk and retrieving and
updating this information.
The File System is accessed through system calls such as :
open, read, write, …
Example :
- FAT16, FAT32, NTFS
-ext2, ext3…
One of the purpose of an OS is to hide the system’s hardware
from user.
Instead of putting code to manage the HW controller into every
application, the code is kept in the Linux kernel.
It abstracts the handling of devices.
- All HW devices look like regular files.
13. The Unix OS is a time-sharing system.
Every process is scheduled to run for a period of time (time slice).
Kernel creates, manages and deletes the processes.
Every process (except init) in the system is create as the result of a
fork system call.
The fork system call splits a process into two processes (Parent and
Child).
Each process has a unique identifier (Process ID).
Physical memory is limited.
Virtual memory is developed to overcome this limitation such as:
-Large Address space
-Protection
-Memory mapping
-Fair physical memory allocation
-Shared virtual memory
14. Each operating system uses a kernel. Without a kernel, you can’t have
an operating system that actually works. Windows, Mac OS X, and
Linux all have kernels, and they’re all different. It’s the kernel that also
does the grunt work of the operating system. Besides the kernel, there
are a lot of applications that are bundled with the kernel to make the
entire package something useful — more on that a bit later.
The kernel’s job is to talk to the hardware and software, and to
manage the system’s resources as best as possible. It talks to the
hardware via the drivers that are included in the kernel (or additionally
installed later on in the form of a kernel module).
It also aims to avoid deadlocks, which are problems that completely
halt the system when one application needs a resource that another
application is using. It’s a fairly complicated circus act to coordinate all
of those things, but it needs to be done and that’s what the kernel is for.
15. The top reason for the success of Linux is that it is not driven by
someone who has a technical, commercial, or political agenda.
Rather, Linux is driven by the requirements of the real world entities
that want to adopt it: IT companies and final users.
Linus Torvalds and other top-level developers are thus similar to
referees, who ensure that each change in the kernel is technically
sound and, even more important, potentially beneficial to the
whole Linux community.
Thus, it is not really surprising that Linus Torvalds has a full-time job in
the Linux Foundation, which is a nonprofit consortium supported by
many large IT companies and dedicated to fostering the growth of
Linux Bovet.
16. The Linux kernel now has a coherent and uniform model to organize
busses, drivers and devices. The Linux kernel in general, uses some
concept of object-oriented programming to structure the code.
The organization of device drivers has been greatly simplified and
unified by using this model. Functionalities such as udev have been
made possible using this unified model.
Nowadays Linux is no longer a pet project for young, brilliant
computer geeks. . .
But Linux kernel hacking is still a fascinating art, as in the early days.
Most of the current work on the kernel is done by professional
programmers. . .
But many of them were individual enthusiasts who spent their spare
time hacking the kernel, and who were later hired by large companies
to work full-time on Linux.