Next Previous Contents

# KernelAnalysis-HOWTO

## Roberto Arcomano berto@bertolinux.com

v0.7, March 26, 2003

This document tries to explain some things about the Linux Kernel, such as the most important components, how they work, and so on. This HOWTO should help prevent the reader from needing to browse all the kernel source files searching for the"right function," declaration, and definition, and then linking each to the other. You can find the latest version of this document at http://www.bertolinux.com If you have suggestions to help make this document better, please submit your ideas to me at the following address: berto@bertolinux.com

## 1. Introduction

- 1.1 Introduction
- 1.2 Copyright
- 1.3 Translations
- 1.4 Credits

## 2. Syntax used

- 2.1 Function Syntax
- 2.2 Indentation
- 2.3 InterCallings Analysis

## 3. Fundamentals

- 3.1 What is the kernel?
- 3.2 What is the difference between User Mode and Kernel Mode?
- 3.3 Switching from User Mode to Kernel Mode
- 3.4 Multitasking
- 3.5 Microkernel vs Monolithic OS
- 3.6 Networking
- 3.7 Virtual Memory

## 4. Linux Startup

## 5. Linux Peculiarities

- 5.1 Overview
- 5.2 Pagination only
- 5.3 Softirq
- 5.4 Kernel Threads
- 5.5 Kernel Modules
- 5.6 Proc directory

## 6. Linux Multitasking

- 6.1 Overview
- 6.2 Timeslice
- 6.3 Scheduler
- 6.4 Bottom Half, Task Queues. and Tasklets
- 6.5 Very low level routines
- 6.6 Task Switching
- 6.7 Fork

## 7. Linux Memory Management

- 7.1 Overview
- 7.2 Specific i386 implementation
- 7.3 Memory Mapping
- 7.4 Low level memory allocation
- 7.5 Swap

## 8. Linux Networking

- 8.1 How Linux networking is managed?
- 8.2 TCP example

## 9. Linux File System

## 10. Useful Tips

- 10.1 Stack and Heap
- 10.2 Application vs Process
- 10.3 Locks
- 10.4 Copy_on_write

## 11. 80386 specific details

- 11.1 Boot procedure
- 11.2 80386 (and more) Descriptors

## 12. IRQ

- 12.1 Overview
- 12.2 Interaction schema

## 13. Utility functions

- 13.1 list_entry [include/linux/list.h]
- 13.2 Sleep

## 14. Static variables

- 14.1 Overview
- 14.2 Main variables

## 15. Glossary

## 16. Links

Next Previous Contents