152 lines
7.8 KiB
HTML
152 lines
7.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN">
|
|
<!Converted with LaTeX2HTML 95.1 (Fri Jan 20 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds >
|
|
<HEAD>
|
|
<TITLE>1.3 System Features</TITLE>
|
|
</HEAD>
|
|
<BODY>
|
|
<meta name="description" value="1.3 System Features">
|
|
<meta name="keywords" value="gs">
|
|
<meta name="resource-type" value="document">
|
|
<meta name="distribution" value="global">
|
|
<P>
|
|
<BR> <HR><A NAME=tex2html1790 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME=tex2html1788 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME=tex2html1782 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <A NAME=tex2html1792 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <A NAME=tex2html1793 HREF="node250.html"><IMG ALIGN=BOTTOM ALT="index" SRC="index_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A NAME=tex2html1791 HREF="node12.html">1.4 Software Features</A>
|
|
<B>Up:</B> <A NAME=tex2html1789 HREF="node8.html">1 Introduction to Linux</A>
|
|
<B> Previous:</B> <A NAME=tex2html1783 HREF="node10.html">1.2 A Brief History </A>
|
|
<BR> <HR> <P>
|
|
<H1><A NAME=SECTION00330000000000000000>1.3 System Features</A></H1>
|
|
<P>
|
|
Linux supports most of the features found in other implementations of UNIX,
|
|
plus quite a few that aren't found elsewhere. This section is a nickel tour
|
|
of the Linux kernel features.
|
|
<A NAME=172> </A>
|
|
<A NAME=173> </A>
|
|
<A NAME=174> </A>
|
|
<A NAME=175> </A>
|
|
<P>
|
|
Linux is a complete multitasking, multiuser operating system (just like
|
|
all other versions of UNIX). This means that many users can be logged
|
|
into the same machine at once, running multiple programs simultaneously.
|
|
<A NAME=176> </A>
|
|
<P>
|
|
The Linux system is mostly compatible with a number of UNIX standards (inasmuch
|
|
as UNIX has standards) on the source level, including IEEE POSIX.1, System V,
|
|
and BSD features.
|
|
<A NAME=177> </A>
|
|
<A NAME=178> </A>
|
|
It was developed with source portability in mind:
|
|
therefore, you are most likely to find commonly-used features in the Linux
|
|
system which are shared across multiple implementations. A great deal of
|
|
free UNIX software available on the Internet and elsewhere compiles on
|
|
Linux out of the box. In addition, all source code for the Linux system,
|
|
including the kernel, device drivers, libraries, user programs, and
|
|
development tools, is freely distributable.
|
|
<P>
|
|
Other specific internal features of Linux include POSIX job control (used
|
|
by shells such as <tt>csh</tt> and <tt>bash</tt>),
|
|
<A NAME=181> </A>
|
|
pseudoterminals (<tt>pty</tt>
|
|
devices), and support for national or customized keyboards using
|
|
dynamically-loadable keyboard drivers. Linux also supports <b>virtual
|
|
consoles</b>,
|
|
<A NAME=184> </A>
|
|
which allow you to switch between multiple login sessions from
|
|
the system console in text mode. Users of the ``<tt>screen</tt>'' program
|
|
will find the Linux virtual console implementation familiar.
|
|
<P>
|
|
The kernel is able to emulate 387-FPU instructions itself, so that systems
|
|
without a math coprocessor can run programs that require floating-point
|
|
math instructions.
|
|
<A NAME=186> </A>
|
|
<P>
|
|
Linux supports various filesystem types for storing data. Various filesystems,
|
|
such as the <em>ext2fs</em> filesystem, have been developed specifically
|
|
for Linux.
|
|
<A NAME=188> </A>
|
|
Other filesystem types, such as the Minix-1 and Xenix filesystems,
|
|
are also supported. The MS-DOS filesystem has been implemented as well,
|
|
allowing you to access MS-DOS files on hard drive or floppy directly.
|
|
The ISO 9660 CD-ROM filesystem type,
|
|
which reads all standard formats of CD-ROMs, is also supported.
|
|
We'll talk more about filesystems in Chapters <A HREF="node50.html#chapinstallnum">2</A>
|
|
and <A HREF="node155.html#chapsysadmnum">4</A>.
|
|
<P>
|
|
Linux provides a complete implementation of TCP/IP networking. This includes
|
|
device drivers for many popular Ethernet cards, SLIP (Serial Line Internet
|
|
Protocol, allowing you to access a TCP/IP network via a serial connection),
|
|
PLIP (Parallel Line Internet Protocol), PPP (Point-to-Point Protocol),
|
|
NFS (Network File System), and so on.
|
|
The complete range of TCP/IP clients and services is supported,
|
|
such as FTP, <tt>telnet</tt>, NNTP, and SMTP. We'll talk more about
|
|
networking in Chapter <A HREF="node197.html#chapadvanced">5</A>.
|
|
<A NAME=193> </A>
|
|
<A NAME=194> </A>
|
|
<A NAME=195> </A>
|
|
<A NAME=196> </A>
|
|
<P>
|
|
The Linux kernel is developed to use the special protected-mode features
|
|
of the Intel 80386 and 80486 processors.
|
|
<A NAME=197> </A>
|
|
In particular, Linux makes use of
|
|
the protected-mode descriptor-based memory management paradigm and many of
|
|
the other advanced features of these processors. Anyone familiar with 80386
|
|
protected-mode programming knows that this chip was designed for a
|
|
multitasking system such as UNIX (or, actually, Multics). Linux exploits
|
|
this functionality.
|
|
<P>
|
|
The Linux kernel supports demand-paged loaded executables. That is, only
|
|
those segments of a program which are actually used are read into memory
|
|
from disk. Also, copy-on-write pages are shared among executables, meaning
|
|
that if several instances of a program are running at once, they will
|
|
share pages in physical memory, reducing overall memory usage.
|
|
<A NAME=198> </A>
|
|
<P>
|
|
In order to increase the amount of available memory, Linux also implements
|
|
disk paging: that is, up to 256 megabytes of ``swap space''<A NAME=tex2html27 HREF="footnode.html#199"><IMG ALIGN=BOTTOM ALT="gif" SRC="foot_motif.gif"></A> can be allocated
|
|
on disk. When the system requires more physical memory, it will swap out
|
|
inactive pages to disk, thus allowing you to run larger applications and
|
|
support more users at once. However, swap is no substitute for physical
|
|
RAM---it is much slower due to drive access latency times.
|
|
<A NAME=200> </A>
|
|
<P>
|
|
The kernel also implements a unified memory pool for user programs and
|
|
disk cache. In this way, all free memory is used for caching, and the
|
|
cache is reduced when running large programs.
|
|
<P>
|
|
Executables use dynamically linked shared libraries,
|
|
<A NAME=201> </A>
|
|
meaning that
|
|
executables share common library code in a single library file found on disk,
|
|
not unlike the SunOS shared library mechanism. This allows executable files to
|
|
occupy much less space on disk, especially those that use many library
|
|
functions. There are also statically-linked libraries for those who wish to
|
|
use object debugging or maintain ``complete'' executables without the need
|
|
for shared libraries to be in place. Linux shared libraries are dynamically
|
|
linked at run-time, allowing the programmer to replace modules of the
|
|
libraries with their own routines.
|
|
<P>
|
|
To facilitate debugging, the Linux kernel does core dumps for
|
|
post-mortem analysis. Using a core dump and an executable linked with
|
|
debugging support, it is possible to determine what caused a program to
|
|
crash.
|
|
<A NAME=202> </A>
|
|
<A NAME=203> </A>
|
|
<A NAME=204> </A>
|
|
<P>
|
|
<A NAME=205> </A>
|
|
<A NAME=206> </A>
|
|
<A NAME=207> </A>
|
|
<A NAME=208> </A>
|
|
<P>
|
|
<BR> <HR><A NAME=tex2html1790 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME=tex2html1788 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME=tex2html1782 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <A NAME=tex2html1792 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <A NAME=tex2html1793 HREF="node250.html"><IMG ALIGN=BOTTOM ALT="index" SRC="index_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A NAME=tex2html1791 HREF="node12.html">1.4 Software Features</A>
|
|
<B>Up:</B> <A NAME=tex2html1789 HREF="node8.html">1 Introduction to Linux</A>
|
|
<B> Previous:</B> <A NAME=tex2html1783 HREF="node10.html">1.2 A Brief History </A>
|
|
<BR> <HR> <P>
|
|
<BR> <HR>
|
|
<P><ADDRESS>
|
|
<I>Matt Welsh <BR>
|
|
mdw@sunsite.unc.edu</I>
|
|
</ADDRESS>
|
|
</BODY>
|