old-www/LDP/sag/html/kernel-parts.html

214 lines
4.5 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Important parts of the kernel</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Linux System Administrators Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Overview of a Linux System"
HREF="overview.html"><LINK
REL="PREVIOUS"
TITLE="Various parts of an operating system"
HREF="various-parts.html"><LINK
REL="NEXT"
TITLE="Major services in a UNIX system"
HREF="major-services.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Linux System Administrators Guide: </TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="various-parts.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 2. Overview of a Linux System</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="major-services.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="KERNEL-PARTS"
></A
>2.2. Important parts of the kernel</H1
><P
>The Linux kernel consists of several important
parts: process
management, memory management, hardware device drivers, filesystem
drivers, network management, and various other bits and pieces.
<A
HREF="kernel-parts.html#KERNELOVERVIEW"
>Figure 2-1</A
>
shows some of them.</P
><DIV
CLASS="FIGURE"
><A
NAME="KERNELOVERVIEW"
></A
><P
><B
>Figure 2-1. Some of the more important parts of the Linux kernel</B
></P
><P
><IMG
SRC="overview-kernel.png"></P
></DIV
><P
>Probably the most important parts of the kernel (nothing else
works without them) are memory management and
process management. Memory management takes care of assigning
memory areas and swap space areas to processes, parts of the
kernel, and for the buffer cache. Process management
creates
processes, and implements multitasking by switching the
active process on the processor.</P
><P
>At the lowest level, the kernel contains a hardware device
driver for each kind of hardware
it supports. Since the world is
full of different kinds of hardware, the number of hardware device
drivers is large. There are often many otherwise similar pieces
of hardware that differ in how they are controlled by software.
The similarities make it possible to have general classes of
drivers that support similar operations; each member of the class
has the same interface to the rest of the kernel but differs in
what it needs to do to implement them. For example, all disk
drivers look alike to the rest of the kernel, i.e., they all
have operations like `initialize the drive', `read sector N',
and `write sector N'.</P
><P
>Some software services provided by the kernel itself have
similar properties, and can therefore be abstracted into classes.
For example, the various network protocols have been abstracted
into one programming interface, the BSD socket library. Another
example is the <I
CLASS="GLOSSTERM"
>virtual filesystem</I
>
(VFS)
layer that abstracts the filesystem operations away from their
implementation. Each filesystem type provides an implementation
of each filesystem operation. When some entity tries to use
a filesystem, the request goes via the VFS, which routes the
request to the proper filesystem driver.</P
><P
>A more in-depth discussion of kernel internals can be found
at <A
HREF="http://www.tldp.org/LDP/lki/index.html"
TARGET="_top"
> http://www.tldp.org/LDP/lki/index.html</A
>. This document was
written for the 2.4 kernel. When I find one for the 2.6 kernel, I
will list it here.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="various-parts.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="major-services.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Various parts of an operating system</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="overview.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Major services in a UNIX system</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>