Sie sind auf Seite 1von 18

What is Linux

Linux is a 100% free operating system which is specially designed for


multitasking, multi-user networks that is similar to UNIX. Its means Linux is
not UNIX. Linux was designed specifically for the low hardware base systems
like 386(x86 Intel CPU) platform and released under GNU (General Public
License) means 100% free for public.

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.

Version 2 of Linux, released on June 9, 1996, was a landmark. Strong


development continued:

 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.

On 21 July 2011 Linus Torvalds announced the release of Linux 3.0:


"Gone are the 2.6.<bignum> days".[20] The version bump is not about
major technological changes when compared to Linux 2.6.39;[21] it
marks the kernel's 20th anniversary.[22] The time-based release process
remained the same.

As of 2013, the Linux 3.10 release had 15,803,499 lines of code

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.

In addition to Linus's "-rc" development releases, sometimes the version will


have a suffix such as "tip", indicating another development branch, usually
(but not always) the initials of a person who made it. For example, "ck" stands
for Con Kolivas, "ac" stands for Alan Cox, etc. Sometimes, the letters are
related to the primary development area of the branch the kernel is built
from, for example, "wl" indicates a wireless networking test build. Also,
distributors may have their own suffixes with different numbering systems
and for back-ports to their "enterprise" (i.e. stable but older) distribution
versions.
IS LINUX == UNIX
Officially an operating system is not allowed to be called a Unix until it passes
the Open Group's certification tests, and supports the necessary API's. Nobody
has yet stepped forward to pay the large fees that certification involves, so
we're not allowed to call it Unix. Certification really doesn't mean very much
anyway. Very few of the commercial operating systems have passed the Open
Group tests.

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

In general, open source refers to any program whose source


code is made available for use or modification as users or other
developers see fit. Open source software is usually developed
as a public collaboration and made freely available.

 The software being distributed must be redistributed to anyone


else without any restriction.
 The source code must be made available (so that the receiving
party will be able to improve or modify it).
 The license can require improved versions of the software to
carry a different name or version from the original software
KERNEL

The kernel is the essential center of a computer operating system,


the core that provides basic services for all other parts of the
operating system .
Typically, a kernel includes an interrupt handler that handles all
requests or completed I/O operations that compete for the kernel's
services, a scheduler that determines which programs share the
kernel's processing time in what order, and a supervisor that
actually gives use of the computer to each process when it is
scheduled. A kernel may also include a manager of the operating
system's address spaces in memory or storage, sharing these among
all components and other users of the kernel's services. A kernel's
services are requested by other parts of the operating system or by
application programs through a specified set of program interfaces
sometimes known as system calls.

To know the Kernel version of your Linux system; Just type

$ 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.

Monolithic Kernel Advantages


Generally speaking a monolithic OS kernel is faster due to small
source and compiled code size. Less code means also less bugs and
security issues.

Monolithic Kernel disadvantages


Monolithic OS being a single big pile of code has disadvantages. For
example, making changes is not easy and testing takes more time. It
is hard to maintain, patch or extend. Bug fixing or adding new
features requires the compilation of the whole source code which is
a time and resource consuming process.
Microkernel:

The idea behind microkernel OS is to reduce the kernel to only basic


process communication and IO control and let other system services
run in user space just like any other normal processes. These
services are called servers and kept separate and run in different
address spaces. Contrary to monolithic OS where services are
directly invoked, communication in a microkernel is done via
message passing (inter process communication IPC). Mac OS and
WinNT are two examples on microkernel OS architecture.

Microkernel Advantages
Here some advantages to the microkernel OS architecture…

1. Service separation has the advantage that if one service


(called a server) fails others can still work so reliability is the
primary feature. For example if a device driver crashes does
not cause the entire system to crash. Only that driver need to
be restarted rather than having the entire system die. This
means more persistence as one server can be substituted
with another. It also means maintenance is easier.
2. Different services are built into special modules which can
be loaded or unloaded when needed. Patches can be tested
separately then swapped to take over on a production
instance.
3. Message passing allows independent communication and
allows extensibility
4. The fact that there is no need to reboot the kernel implies
rapid test and development.
5. Easy and faster integration with 3d party modules.
Microkernel Disadvantages
Here are some disadvantages to the microkernel approach…

1. Memory foot print is large


2. Potential performance loss (more software interfaces due to
message passing)
3. Message passing bugs are not easy to fix Process
management is complex

Linux Vs Other Unix-Like Kernels

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.)

Multithreaded application support


Most modern operating systems have some kind of support for
multithreaded applications—that is, user programs that are
designed in terms of many relatively independent execution flows
that share a large portion of the application data structures. A
multithreaded user application could be composed of many
lightweight processes (LWP), which are processes that can operate
on a common address space, common physical memory pages,
common opened files, and so on. Linux defines its own version of
lightweight processes, which is different from the types used on
other systems such as SVR4 and Solaris. While all the
commercial Unix variants of LWPare based on kernel threads, Linux
regards lightweight processes as the basic execution context and
handles them via the non standard clone( ) system call
Preemptive kernel
When compiled with the “Preemptible Kernel” option, Linux 2.6 can
arbitrarily interleave execution flows while they are in privileged
mode. Besides Linux 2.6, a few other conventional, general-purpose
Unix systems, such as Solaris and Mach 3.0, are fully preemptive
kernels. SVR4.2/MPintroduces some fixed preemption
points as a method to get limited preemption capability.

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 fully customizable in all its components.


Thanks to the compilation options, you can customize the kernel by
selecting only the features really needed. Moreover, thanks to the
GPL, you are allowed to freely read and modify the source code of
the kernel and of all system programs.

Linux runs on low-end, inexpensive hardware platforms.


You are able to build a network server using an old Intel 80386
system with 4 MB of RAM.

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.

Linux developers are excellent programmers


Linux systems are very stable; they have a very low failure rate and
system maintenance time.
The Linux kernel can be very small and compact
It is possible to fit a kernel image, including a few system programs,
on just one 1.44 MB floppy disk. As far as we know, none of the
commercial Unix variants is able to boot from a single floppy disk.

Linux is highly compatible with many common operating


systems.
Linux lets you directly mount filesystems for all versions of MS-DOS
and Microsoft Windows.
.

Linux is well supported.


Believe it or not, it may be a lot easier to get patches and
updates for Linux than for any proprietary operating system. The
answer to a problem often comes back within a few hours after
sending a message to some newsgroup or mailing list. Moreover,
drivers for Linux are usually available a few weeks after new
hardware products have been introduced on the market. By
contrast, hardware manufacturers release device drivers for only a
few commercial operating systems—usually Microsoft’s. Therefore,
all commercial Unix variants run on a restricted subset of hardware
components. With an estimated installed base of several tens of
millions, people who are used to certain features that are standard
under other operating systems are starting to expect the same from
Linux. In that regard, the demand on Linux developers is also
increasing. Luckily, though, Linux has evolved under the close
direction of Linus and his subsystem maintainers to accommodate
the needs of the masses.
Disadvantages of Linux
1) MANY WINDOWS PROGRAMS WILL NOT RUN IN LINUX.

iTunes, Microsoft Office, Internet Explorer and many other


Windows programs will not run natively in Linux.
2) There are far too many distribution of Linux
3) Linux is not very user friendly & confusing for beginners .

Linux supported CPU architectures


The standard names of the platforms are:

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 MC6800 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 and kernel space

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.

Linux kernel architecture:


Distro’s of Linux kernel

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

Das könnte Ihnen auch gefallen