Linux Kernel Internals Tigran Aivazian tigran@veritas.com 22 August 2000 Introduction to the Limx 2.4 kernel.The latest copy of this document can be always downloaded from: hup:/hyww moses uklinus nellpatches/lki.sgml This documentation is free software:you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Sofware Foundation:either version 2 of the License,or (at your option)any later version.The author is working as senior Limx kernel engineer at VERITAS Software Ltd and wrote this book for the purpose of supporting the short training course/lectures he gave on this subject.internally at VERITAS. 1.Booting .1.1 Building the Linux Kerel Image ·L2 Booting:Overview ·L3 Booting:BIOS POST .14 Booting:bootsector and setup .15 Using LILO as a bootloader .16 High level initialisation ·L7 SMP Bootup on x86 .1.8 Freeing initialisation data and code .19 Processing kernel command line 2.Process and Interrupt Management 23 26K es .2.11 How System Calls Are Implemented on i386 Architecture? .2.12 Atomic Operations .2.13 Spinlocks.Read-write Spinlocks and Big-Reader Spinlocks .214 Semaphores and read/write Semaphores Linux Kernel Internals 1Linux Kernel Internals Tigran Aivazian tigran@veritas.com 22 August 2000 Introduction to the Linux 2.4 kernel. The latest copy of this document can be always downloaded from: http://www.moses.uklinux.net/patches/lki.sgml This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The author is working as senior Linux kernel engineer at VERITAS Software Ltd and wrote this book for the purpose of supporting the short training course/lectures he gave on this subject, internally at VERITAS. 1.Booting • 1.1 Building the Linux Kernel Image • 1.2 Booting: Overview • 1.3 Booting: BIOS POST • 1.4 Booting: bootsector and setup • 1.5 Using LILO as a bootloader • 1.6 High level initialisation • 1.7 SMP Bootup on x86 • 1.8 Freeing initialisation data and code • 1.9 Processing kernel command line 2.Process and Interrupt Management • 2.1 Task Structure and Process Table • 2.2 Creation and termination of tasks and kernel threads • 2.3 Linux Scheduler • 2.4 Linux linked list implementation • 2.5 Wait Queues • 2.6 Kernel Timers • 2.7 Bottom Halves • 2.8 Task Queues • 2.9 Tasklets • 2.10 Softirqs • 2.11 How System Calls Are Implemented on i386 Architecture? • 2.12 Atomic Operations • 2.13 Spinlocks, Read−write Spinlocks and Big−Reader Spinlocks • 2.14 Semaphores and read/write Semaphores Linux Kernel Internals 1