For Kernel_Newbies By a Kernel_Newbie
Before I start off,I would like to confess that I am a complete Kernel_Newbie
who has been hacking 2.4 Kernel Code for only 1 month,and hence some of the
information might be inconsistent owing to the __inconsistent__ knowledge of the
author. It is highly recommended to combine this Document with Tigrans 2.4
Kernel Internals (linuxdoc.org),as the left_overs can be traced to his
document.Moreover there are first_hand references in his document in linuxdoc
about Process Management,IPC,page_cache,which doesnt call for a repeat
invocation,as far as the data structures are concerned. Nevertheless, the best
source is the Kernel-Source itself,and the information contained in this
document are only for Linux 2.4 on INTEL.There have been rewrites of some
sections (the scheduler being one) in 2.4. By the way,if anyone who is reading
this is having ideas of analysing kernel_code,then he should start with IPC
(linux/ipc/{sem.c,shm.c,msg.c,utilc.util.h}),as the sections there are pretty
local to their origin,except for a few sched.c references.
Prologue:
One of the methods of learning to Program is by looking at others Code,and
none better than witnessing __Experts__ in Action. The Linux Kernel Source is a
plethora of Knowledge embedded in millions of lines of Code,where
__performance__ and __wizardry__ rules. Taking a decision to look at Kernel Code
is a step towards getting yourself __drowned__ in a fathomless ocean. Infact for
people reluctant or scared to look at Kernel_Code,the best method to start, is
by reading more about Linux,and getting oneself theoritically acquainted with
its modus_operundi. Its advisable to have a look at some books on Kernel
Internals,especially Linux Device Drivers by A.Rubini.The practical_acquaintance
will creep_in with time,and with perseverance,and is a __never_ending__
process,where one starts fighting with the Code,to get under its skin.The code
is split up into several_rooms and one can choose his room for a period of time
before moving onto another,where the complexities can vary to a large extent.So
lets start off by picking a room which is located at 30,000 feet from the earth.
A View from 30,000 feet of the Linux Kernel dancing around in Memory :
A boot through a floppy : (arch/i386/boot/bootsect.S) A System Starts
booting-, POST finished, track 0,sector 1, (Boot Sector) moved to 0x7C00,