Beruflich Dokumente
Kultur Dokumente
History of Linux
It is developed by a talented student who wrote a source code and then shares
it with the world to let everyone have the same excitement as he is. He was
right about that. Many programmers interested to try and they compiled and
improved the source code and gave him feedback.
Here is the Linux history’s fact. Linux was created by Linus Torvalds in 1991
when he was a student at Helsinki University, Finland. He developed an
operating system source code and post about it in Minix news group. The date
is August 25 1991. That’s how it was started. The feedback is good and lead to
the source code version 0.01 available on September 1991. Later, the source
code was available in ftp and spread around the world.
Many years passed by, and Linux has become a very popular operating
system. Today, many great network programs, security tools and servers
including DNS, Email, and Web server similar to those available in UNIX were
developed by programmers and hackers around the world.
Linux ORGIN
In April 1991 - Linus Torvalds, then 21 years old, started working on some
simple ideas for an operating system. He started with a task switcher in 386
assembly and a terminal driver. Then, on, 25 August 1991, Torvalds posted to
comp.os.minix:
After that, many people contributed code to the project. By September 1991,
Linux version 0.01 was released. It had 10,239 lines of code. In October 1991,
Linux version 0.02 was released.[3]
In December 1991, Linux 0.11 was released. This version was the first to be
self-hosted - Linux 0.11 can be compiled under Linux 0.11. This was also
around the time Linus adopted the GPL over his own do-not-sell-it license.
A newsgroup alt.os.linux was started, and on January 19, 1992, the first post to
alt.os.linux was made. [4] On March 31, 1992 alt.os.linux became comp.os.linux
[5]
The X Window System was soon ported to Linux. In March 1992, Linux
version 0.95 was the first to be capable of running X. This large version
number jump (from 0.1x to 0.9x) was due to a feeling that a version 1.0 with
no major missing pieces was imminent. However, this proved to be somewhat
overoptimisitc; during the whole of 1993, and early 1994, 15 development
versions of version 0.99 appeared.
Finally, on March 14, 1994, Linux 1.0.0 was released, with 176,250 lines of
code. In March 1995, Linux 1.2.0 was released (310,950 lines of code).
Linus decided, on May 9, 1996, to adopt Tux the penguin as mascot for Linux.
January 25, 1999 - Linux 2.2.0 was released (1,800,847 lines of code).
December 18, 1999 - IBM mainframe patches for 2.2.13 were published,
allowing Linux to be used on enterprise-class machines.
January 4, 2001 - Linux 2.4.0 was released (3,377,902 lines of code).
December 17, 2003 - Linux 2.6.0 was released (5,929,913 lines of code).
Starting in 2004, the release process changed and new kernels started
coming out on a regular schedule every 2–3 months, numbered 2.6.0,
2.6.1, up through 2.6.39.
VERSION NUMBERING
The Linux kernel has had three different numbering schemes.
The first scheme was used in the run-up to "1.0". The first version of the
kernel was 0.01. This was followed by 0.02, 0.03, 0.10, 0.11, 0.12 (the first GPL
version), 0.95, 0.96, 0.97, 0.98, 0.99 and then 1.0.[253] From 0.95 on there were
many patch releases between versions.
After the 1.0 release and prior to version 2.6, the number was composed as
"A.B.C", where the number A denoted the kernel version, the number B
denoted the major revision of the kernel, and the number C indicated the
minor revision of the kernel. The kernel version was changed only when
major changes in the code and the concept of the kernel occurred, twice in the
history of the kernel: in 1994 (version 1.0) and in 1996 (version 2.0). Version
3.0 was released in 2011, but it was not a major change in kernel concept. The
major revision was assigned according to the traditional even-odd system
version numbering system. The minor revision had been changed whenever
security patches, bug fixes, new features or drivers were implemented in the
kernel.
In 2004, after version 2.6.0 was released, the kernel developers held several
discussions regarding the release and version scheme[254][255] and ultimately
Linus Torvalds and others decided that a much shorter "time-based" release
cycle would be beneficial. For about seven years, the first two numbers
remained "2.6", and the third number was incremented with each new
release, which rolled out after two to three months. A fourth number was
sometimes added to account for bug and security fixes (only) to the kernel
version. The even-odd system of alternation between stable and unstable was
gone. Instead, development pre-releases are titled release candidates, which is
indicated by appending the suffix '-rc' to the kernel version, followed by an
ordinal number.
The first use of the fourth number occurred when a grave error, which
required immediate fixing, was encountered in 2.6.8's NFS code. However,
there were not enough other changes to legitimize the release of a new minor
revision (which would have been 2.6.9). So, 2.6.8.1 was released, with the only
change being the fix of that error. With 2.6.11, this was adopted as the new
official versioning policy. Later it became customary to continuously back-
port major bug-fixes and security patches to released kernels and indicate
that by updating the fourth number.
On 29 May 2011, Linus Torvalds announced[256] that the kernel version would
be bumped to 3.0 for the release following 2.6.39, due to the minor version
number getting too large and to commemorate the 20th anniversary of Linux.
It continued the time-based release practice introduced with 2.6.0, but using
the second number; for example, 3.1 would follow 3.0 after a few months. An
additional number (now the third number) would be added on when
necessary to designate security and bug fixes, as for example with 3.0.18. The
major version number was also later raised to 4, for the release following
version 3.19.[257][b] The Linux community refers to this as "X.Y.Z" versioning.
Unofficially, Linux is very similar to the operating systems which are known
as Unix, and for many purposes they are equivalent. Linux the kernel is an
operating system kernel that behaves and performs similarly to the famous
Unix operating system from AT&T Bell Labs. Linux is often called a "Unix-like"
operating system.
OPEN SOURCE
$ uname –a
ARCHITECTURAL APPROACHES
Monolithic Kernel
You can think of a monolithic kernel OS as a single large static
binary file process running entirely in a single address space. Basic
OS services such as process management, memory management,
interrupt handling, IO communication, file system, device drivers,
networking, etc all run in kernel space. Entire services are loaded on
boot up and reside in memory and work is done using system calls.
Linux is an example on a monolithic kernel based OS.
Microkernel Advantages
Here some advantages to the microkernel OS architecture…
The following list describes how Linux competes against some well-
known commercial Unix kernels:
Monolithic kernel
It is a large, complex do-it-yourself program, composed of several
logically different components. In this, it is quite conventional; most
commercial Unix variants are monolithic. (Notable exceptions are
the Apple Mac OS X and the GNU Hurd operating systems, both
derived from the Carnegie-Mellon’s Mach, which follow a
microkernel approach.)
Compiled and statically linked traditional Unix kernels
Most modern kernels can dynamically load and unload some
portions of the kernel code (typically, device drivers), which are
usually called modules. Linux’s support for modules is very good,
because it is able to automatically load and unload modules on
demand. Among the main commercial Unix variants, only
the SVR4.2 and Solaris kernels have a similar feature.
Kernel threading
Some Unix kernels, such as Solaris and SVR4.2/MP, are organized as
a set of kernel threads. A kernel thread is an execution context that
can be independently scheduled; it may be associated with a user
program, or it may run only some kernel functions. Context switches
between kernel threads are usually much less expensive than
context switches between ordinary processes, because the former
usually operate on a common address space. Linux uses kernel
threads in a very limited way to execute a few kernel functions
periodically; however, they do not represent the basic execution
context abstraction. (That’s the topic of the next item.)
Multiprocessor support
Several Unix kernel variants take advantage of multiprocessor
systems. Linux 2.6 supports symmetric multiprocessing (SMP) for
different memory models, including NUMA: the system can use
multiple processors and each processor can handle
any task—there is no discrimination among them. Although a few
parts of the kernel code are still serialized by means of a single “big
kernel lock,” it is fair to say that Linux 2.6 makes a near optimal use
of SMP.
Filesystem
Linux’s standard filesystems come in many flavors. You can use the
plain old Ext2 filesystem if you don’t have specific needs. You might
switch to Ext3 if you want to avoid lengthy filesystem checks after a
system crash. If you’ll have to deal with many small files, the
ReiserFS filesystem is likely to be the best choice.
Besides Ext3 and ReiserFS, several other journaling filesystems can
be used in Linux; they include IBM AIX’s Journaling File System (JFS)
and Silicon Graphics IRIX’s XFS filesystem. Thanks to a powerful
object-oriented Virtual File System technology (inspired by Solaris
and SVR4), porting a foreign filesystem to Linux is generally easier
than porting to other kernels.
STREAMS
Linux has no analog to the STREAMS I/O subsystem introduced in
SVR4, although it is included now in most Unix kernels and has
become the preferred interface for writing device drivers, terminal
drivers, and network protocols
Linux advantages
Linux is cost-free. You can install a complete Unix system at no expense
other than the hardware (of course).
Linux is powerful.
Linux systems are very fast, because they fully exploit the features of
the hardware components. The main Linux goal is efficiency, and
indeed many design choices of commercial variants, like the
STREAMS I/O subsystem, have been rejected by Linus because of
their implied performance penalty.
alpha
Hewlett-Packard’s Alpha workstations (originally Digital, then Compaq; no
longer manufactured)
arm, arm26
ARM processor-based computers such as PDAs and embedded devices
cris
“Code Reduced Instruction Set” CPUs used by Axis in its thin-servers, such as
web cameras or development boards
frv
Embedded systems based on microprocessors of the Fujitsu’s FR-V family
h8300
Hitachi h8/300 and h8S RISC 8/16-bit microprocessors
i386
IBM-compatible personal computers based on 80x86 microprocessors
ia64
Workstations based on the Intel 64-bit Itanium microprocessor
m32r
Computers based on the Renesas M32R family of microprocessors
m68k, m68knommu
Personal computers based on Motorola MC6800 microprocessors
mips
Workstations based on MIPS microprocessors, such as those marketed by Silicon
Graphics
parisc
Workstations based on Hewlett Packard HP 9000 PA-RISC microprocessors
ppc, ppc64
Workstations based on the 32-bit and 64-bit Motorola-IBM PowerPC microprocessors
s390
IBM ESA/390 and zSeries mainframes
sh, sh64
Embedded systems based on SuperH microprocessors developed by Hitachi and
STMicroelectronics
sparc, sparc64
Workstations based on Sun Microsystems SPARC and 64-bit Ultra SPARC
microprocessors
um
User Mode Linux, a virtual platform that allows developers to run a kernel in
User Mode
v850
NEC V850 microcontrollers that incorporate a 32-bit RISC core based on the
Harvard architecture
x86_64
Workstations based on the AMD’s 64-bit microprocessors—such Athlon and
Opteron—and Intel’s ia32e/EM64T 64-bit microprocessors
TERMINOLOGIES
System call
a system call is how a program requests a service from an
operatingsystem's kernel This may include hardware-related
services (for example, accessing a hard disk drive), creation and
execution of new processes, and communication with integral
kernel services such as process scheduling.
Pre-emption :
the ability of the operating system to preempt (that is, stop or
pause) a currently scheduled task in favour of a higher priority task.
Multitasking:
multitasking operating system is any type of system that is capable
of running more than one program at a time. Most modern
operating systems are configured to handle multiple programs
simultaneously,
context switch:
context switch is the process of storing and restoring the state
(context) of a process or thread so that execution can be resumed
from the same point at a later time. This enables multiple processes
to share a single CPU and is an essential feature of a multitasking
operating system.
User space :
Normal programs run in user space. User space is basically a
form of sand-boxing -- it restricts user programs so they
can't mess with memory (and other resources) owned by
other programs or by the OS kernel. This limits (but usually
doesn't entirely eliminate) their ability to do bad things like
crashing the machine.
Kernel space:
Kernel runs in kernel space. The kernel is the core of the
operating system. It normally has full access to all memory and
machine hardware (and everything else on the machine. To
keep the machine as stable as possible, you normally want only
the most trusted, well-tested code to run in kernel
mode/kernel space.
Similarities in Distros
Kernel
Similar libraries (development libraries)
Basic utilities(e.g. text editors,shells,network)
Daemons (e.g. printer,http,ftp,ssh e.t.c)
Drivers (e.g. ntfs,hardware e.t.c)
Modules (e.g network cards modules)
Differences in distros
Installation procedures (System installers)
Desktop Environments (KDE,Gnome e.t.c)
Bundled Applications (Multimedia applications e.t.c)
Bundled Libraries
System Configurations(e.g. Web server,Media server,workstation)
Hardware support out-of-the-box Package Managers