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 ar e
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 ca n
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 LWP are based on kernel threads, Linux regards lightweight processes as the basic
execution context and handles them via the nonstandard 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/MP introduces some fixed preemption points as a method to get limited preemptio n
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 singl e
"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 specifi c
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 journalin g
filesystems can be used in Linux; they include IBM AIX's Journaling File System (JFS ) and Silicon Graphics IRI X 's XF S
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.
This assessment suggests that Linux is fully competitive nowadays with commercial operating systems. Moreover, Linux has several
features that make it an exciting operating system. Commercial Unix kernels often introduce new features to gain a larger slice of the
market, but these features are not necessarily useful, stable, or productive. As a matter of fact, modern Unix kernels tend to be quite
bloated. By contrast, Linuxtogether with the other open source operating systemsdoesn't suffer from the restrictions and the conditioning
imposed by the market, hence it can freely evolve according to the ideas of its designers (mainly Linus Torvalds). Specifically, Linux
offers the following advantages over its commercial competitors:
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .