Linux kernel is monolithic.
Linux supports the dynamic loading of kernel modules.
Linux has symmetrical multiprocessor (SMP) support.
Traditional Unix did not.
The Linux kernel is preemptive. Traditional Unix are not.
Linux ignores some common Unix features that are thought
to be poorly designed, such as STREAMS, or standards that
are brain dead.
Linux Kernel Naming Convention
Where to find ?
http://www.kernel.org
How : $ tar xvjf linux-x.y.z.tar.bz2 // $ tar
xvzf linux-x.y.z.tar.gz
Where : /usr/src/linux
Patches : $ patch -p1 < ../patch-x.y.z
Sr. No. Directory Description
1 arch Architecture-specific source
2 crypto Crypto API
3 Documentation Kernel source documentation
4 drivers Device drivers
5 fs The VFS and the individual file systems
6 include Kernel headers
7 init Kernel boot and initialization
8 ipc Interprocess communication code
9 kernel Core subsystems, such as the scheduler
10 lib Helper routines
11 mm Memory management subsystem and the VM
12 net Networking subsystem
13 scripts Scripts used to build the kernel
14 security Linux Security Module
15 sound Sound subsystem
16 usr Early user-space code (called initramfs)
Configuring :
Configuring options – prefixed by CONFIG_feature
Boolean or Tristate :
yes, no, or module
$ make config
Or $ make menuconfig
Or $ make xconfig
Or $ make gconfig
architecture and boot loader dependent.
Eg., on an x86 using grub
copy arch/i386/boot/bzImage to /boot,
edit /boot/grub/grub.conf
Installing Modules :
% make modules_install
In /lib
The kernel does not have access to the C
library.
The kernel is coded in GNU C.
The kernel lacks memory protection like user-
space.
The kernel cannot easily use floating point.
The kernel has a small fixed-size stack.
Kernel Threads
Process Scheduling
System Calls
The relationship between applications, the C library,
and the kernel with a call to printf().
Interrupts, IRQ,ISR, entry point
Memory allocation
Pages :
Smallest – word
MMU manages the system's page tables with page-
sized granularity
Virtual Filesystem (VFS)
as varied as in user-space applications
INCORRECT CODE, SYNCRONISATION
Debugging:
Seem difficult but quite easy.
Unlike large software, have typical issues
Time constraints, race conditions