Anda di halaman 1dari 4

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

http://knol.google.com/k/linux-overview#Architecture