Articles‎ > ‎Technical Articles‎ > ‎

Linux Overview

posted Aug 11, 2009, 11:31 PM by Thiyagaraaj M   [ updated Feb 15, 2012, 4:05 AM by Thiyagaraaj Mp ]

Overview

The Linux kernel is an operating system kernel used by a family of Unix-like operating systems. The term Linux distribution is used to refer to the various operating systems that run on top of the Linux Kernel.

Design
Linus Torvalds

Developed
Linus Torvalds (author) and Andrew Morton. Thousands of collaborators

Initial release
1991

Latest release
2.6.29.2 / 2009-4-27; 4 days ago[1]

Written in
C

License
GNU General Public License version 2 (only)[3][4] plus proprietary BLOBs

Website    
www.kernel.org

Architecture

Linux is a monolithic kernel. Device drivers and kernel extensions run in kernel space (ring 0 in many CPU architectures), with full access to the hardware, although some exceptions run in user space. The graphics system most people use with Linux doesn't run in the kernel, in contrast to that found in Microsoft Windows.

Kernel mode preemption allows device drivers to be preempted under certain conditions. This feature was added to handle hardware interrupts correctly and improve support for symmetric multiprocessing (SMP). Preemption also improves latency, increasing responsiveness and making Linux more suitable for real-time applications.

Linux Kernal

The Linux kernel is released under the GNU General Public License version 2 (GPLv2) plus proprietary licenses for some controversial BLOBs and is developed by contributors worldwide; Linux is one of the most prominent examples of Free / Open Source software.

The Linux kernel was initially conceived and created by Finnish software engineer Linus Torvalds in 1991. Early on, the MINIX community contributed code and ideas to the Linux kernel. At the time, the GNU Project had created many of the components required for a free software operating system, but its own kernel, GNU Hurd, was incomplete and unavailable. The BSD operating system had not yet freed itself from legal encumbrances. This meant that despite the limited functionality of the early versions, Linux rapidly accumulated developers and users who adopted code from those projects for use with the new operating system. Today the Linux kernel has received contributions from thousands of programmers.

User interface

Users can control a Linux-based system through a command line interface (or CLI), a graphical user interface (or GUI), or through controls attached to the associated hardware (this is common for embedded systems). For desktop systems, the default mode is usually graphical user interface (or GUI).

On desktop machines, KDE, GNOME and Xfce are the most popular user interfaces, though a variety of additional user interfaces exist. Most popular user interfaces run on top of the X Window System (or X), which provides network transparency, enabling a graphical application running on one machine to be displayed and controlled from another.

Other GUIs include X window managers such as FVWM, Enlightenment and Window Maker. The window manager provides a means to control the placement and appearance of individual application windows, and interacts with the X window system.

A Linux system typically provides a CLI of some sort through a shell, which is the traditional way of interacting with a Unix system. A Linux distribution specialized for servers may use the CLI as its only interface. A “headless system” run without even a monitor can be controlled by the command line via a remote-control protocol such as SSH or telnet.

Most low-level Linux components, including the GNU Userland, use the CLI exclusively. The CLI is particularly suited for automation of repetitive or delayed tasks, and provides very simple inter-process communication. A graphical terminal emulator program is often used to access the CLI from a Linux desktop.

Linux is a monolithic kernel. It supports:

=> Preemptive multitasking (both in user mode and kernel mode)
=> Virtual memory
=> Shared libraries
=> On Demand loading
=> Shared copy-on-write executables
=> Memory management
=> The Internet protocol suite and networking
=> Threading
=> Inter-Process Communication
=> Virtual File System and much more

Programming on Linux

Most Linux distributions support dozens of programming languages. The most common collection of utilities for building both Linux applications and operating system programs is found within the GNU toolchain, which includes the GNU Compiler Collection (GCC) and the GNU build system. Amongst others, GCC provides compilers for Ada, C, C++, Java, and Fortran. The Linux kernel itself is written to be compiled with GCC. Proprietary compilers for Linux include the Intel C++ Compiler, Sun Studio, and IBM XL C/C++ Compiler.

Most distributions also include support for Perl, Ruby, Python and other dynamic languages. Examples of languages that are less common, but still supported, are C# via the Mono project, sponsored by Novell, and Scheme. A number of Java Virtual Machines and development kits run on Linux, including the original Sun Microsystems JVM (HotSpot), and IBM's J2SE RE, as well as many open-source projects like Kaffe.

The two main frameworks for developing graphical applications are those of GNOME and KDE. These projects are based on the GTK+ and Qt widget toolkits, respectively, which can also be used independently of the larger framework. Both support a wide variety of languages. There are a number of Integrated development environments available including Anjuta, Code::Blocks, Eclipse, KDevelop, Lazarus, MonoDevelop, NetBeans, and Omnis Studio while the long-established editors Vim and Emacs remain popular.

Linux Files and Folders

Linux is made with one thought in mind: Everything is a file.

A blank piece of paper is called a file in the world of computers. You can use this piece of paper to write a text or make a drawing. Your text or drawing is called information. A computer file is another way of storing your information.

If you make many drawings then you will eventually want to sort them in different piles or make some other system that allows you to easily locate a given drawing. Computers use folders to sort your files in a hieratic system.

A file is an element of data storage in a file system (file systems manual page). Files are usually stored on harddrives, cdroms and other media, but may also be information stored in RAM or links to devices.

To organize our files into a system we use folders. The lowest possible folder is root / where you will find the user homes called /home/.

  /
  /home/
  /home/mom/
  /home/dad/

Behind every configurable option there is a simple human-readable text file you can hand-edit to suit your needs. These days most programs come with nice GUI (graphical user interface) like Mandrakes Control Center and Suses YAST that can smoothly guide you through most configuration. Those who choose can gain full control of their system by manually adjusting the configuration files from foo=yes to foo=no in an editor.

Almost everything you do on a computer involves one or more files stored locally or on a network.

Your filesystems lowest folder root / contains the following folders:
/bin    Essential user command binaries (for use by all users)
/boot    Static files of the boot loader, only used at system startup
/dev    Device files, links to your hardware devices like /dev/sound, /dev/input/js0 (joystick)
/etc    Host-specific system configuration
/home    User home directories. This is where you save your personal files
/lib    Essential shared libraries and kernel modules
/mnt    Mount point for a temporarily mounted filesystem like /mnt/cdrom
/opt    Add-on application software packages
/usr    /usr is the second major section of the filesystem. /usr is shareable, read-only data. That means that /usr should be shareable between various FHS-compliant hosts and must not be written to. Any information that is host-specific or varies with time is stored elsewhere.
/var    /var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.
/proc    System information stored in memory mirrored as files.

The only folder a normal user needs to use is /home/you/ - this is where you will be keeping all your documents.

  /home/elvis/Documents
  /home/elvis/Music
  /home/elvis/Music/60s

Files are case sensitive, "myfile" and "MyFile" are two different files.

Popular distributions

Well-known Linux distributions include:

    * Arch Linux, a distribution based on the KISS principle with a rolling release system
    * CentOS, a distribution derived from the same sources used by Red Hat, maintained by a dedicated volunteer community of developers with both 100% Red Hat - compatible versions and an upgraded version that is not always 100% upstream compatible
    * Debian, a non-commercial distribution maintained by a volunteer developer community with a strong commitment to free software principles
    * Fedora which is a community distribution sponsored by Red Hat
    * Gentoo, a distribution targeted at power users, known for its FreeBSD Ports-like automated system for compiling applications from source code
    * Knoppix, The first Live CD distribution to run completely from removable media without installation to a hard disk. Derived from Debian
    * Kubuntu, the KDE version of Ubuntu
    * Linux Mint, a popular distribution based on and compatible with Ubuntu
    * Mandriva, a Red Hat derivative popular in France and Brazil, today maintained by the French company of the same name
    * OpenGEU, derived from Ubuntu: The project's goal is to combine the power of GNOME desktop with the eye-candy of Enlightenment 17.
    * openSUSE, originally derived from Slackware, sponsored by the company Novell .
    * Pardus, developed in Turkey, as a product of the Pardus Project. It was named after the Anatolian Leopard.
    * PCLinuxOS, a derivative of Mandriva, grew from a group of packages into a popular, community-spawned desktop distribution.
    * Red Hat Enterprise Linux, which is a derivative of Fedora maintained and commercially supported by Red Hat
    * Slackware, one of the first Linux distributions, founded in 1993, and since then actively maintained by Patrick J. Volkerding
    * Ubuntu, a popular desktop distribution derived from Debian, maintained by Canonical
    * gOS and other netbook operating systems

DistroWatch maintains a popularity ranking of distribution information on its web site (using primarily page views), but this is not considered to be a reliable measure of distribution popularity.

Articles