Tuesday, July 7, 2009

Linux Device Drivers Introduction

Linux started as the hobby of a Finnish college student named as Linus Torvalds in 1991. Early it supported 386 processor later it is metamorphed to support multiple architectures some of the major supported architecture are X86, IA64, ARM, PowerPC, Alpha, SPARC etc.

Linux Kernel:

Linux is an open source kernel maintained by a set of software volunteers called kernel hackers.
It is developed by different open source developers across the world.
www.kernel.org is a official website for kernel source code under a license called GPL(general public license).

Advantages of Linux

Free of cost, Fully customizable in all its components, Linux is powerful, It has low failure rate, We can reduce kernel image to a small size, highly compatible to many operating systems, well supported.
The linux source code has one folder named as arch. Which contains names of all platforms. for e.g. alpha, arm, cris, i386 etc.

e.g. of linux source having version 2.6.10.1 means,
first number 2 rarely change.
second number 6 shows stable.
third no shows added new code.
fourth no shows solution to bugs by putting patches.

Types of Kernel:

Kernels can be classified into four broad categories: monolithic kernels, microkernels, hybrid kernels and exokernels.

Monolithic kernels: Which have traditionally been used by Unix-like operating systems, contain all the operating system core functions and the device drivers. Modern monolithic kernels, such as those of Linux and FreeBSD, both of which fall into the category of Unix-like operating systems, feature the ability to load modules at runtime, thereby allowing easy extension of the kernel's capabilities as required, while helping to minimize the amount of code running in kernel space.

A microkernel usually provides only minimal services, such as defining memory address spaces, interprocess communication (IPC) and process management. All other functions, such as hardware management, are implemented as processes running independently of the kernel. Examples of microkernel operating systems are AIX, BeOS, Hurd, Mach, Mac OS X and MINIX. Applications cannot access other memory address space without API's. Accessing a device require many context switches.

Hybrid kernels include additional code in kernel space to share common data in single address space. It mainly avoid context swithes. Most modern operating systems use hybrid kernels, including Microsoft Windows NT, 2000 and XP.

Exokernels are a still experimental approach to operating system design. They provide no hardware abstractions on top of which applications can be constructed. This separation of hardware protection from hardware management enables application developers to determine how to make the most efficient use of the available hardware for each specific program. Exokernels in themselves they are extremely small. However, they are accompanied by library operating systems, which provide application developers with the conventional functionalities of a complete operating system. A major advantage of exokernel-based systems is that they can incorporate multiple library operating systems, each exporting a different API (application programming interface), such as one for Linux and one for Microsoft Windows, thus making it possible to simultaneously run both Linux and Windows applications.

Platform virtualization :

It hides the physical characteristics of operating system from the users,it shows aother platform for running other platforms.

types :

Full virtualization: without modifying of OS.

Hardware Assisted virtualization: separate Hardware support is needed.

Partial virtualization: Address space virtualization.

Para virtualization : API's are provided between virtual machine and hardware.

Operating system level virtualization: OS is modified to run various paltforms.

Linux Vendors(Distributors):

kernel source is modified to create different operating systems.

1) Server OS: RHEL(Red Hat Enterprise Linux).

2) Desktop Distribution: Fedora, General Ubuntu, Suse linux, Centos.

3) Multimedia OS: Debian linux, Qlinux.

4) Embedded Distribution: monto Vista, Bluecat linux.

5) Real time linux: timesys,linco,Vxworks,uClinux,Windriver.

6) Mobilisation : Android OS.

Evaluation Assurance Level:

At what level the system was testing to meet the goal. It has EAL1 to EAL7 levels.

EAL1: Functionally Tested.
EAL2: Structurally Tested.
EAL3: Methodically Tested and Checked.
EAL4: Methodically Designed, Tested, and Reviewed.
EAL5: Semiformally Designed and Tested.
EAL6: Semiformally Verified Design and Tested.
EAL7: Formally Verified Design and Tested.



No comments:

Post a Comment