214 lines
4.5 KiB
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
|
|
> |