Pick a Free OS

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,