Linux Kernel Internals

 

Course Description

This course acquaints developers with the fundamental subsystems, data structures, and API of the Linux kernel version 2.6.

Overview

This two day, hands-on course, provides attendees with experience in creating Linux kernel source code within various subsystems of the Linux kernel.

 

Attendees will spend approximately 50 percent of the class time actually gaining hands-on experience with these topics.

 

Course Objectives

After this course, attendees will be able to:

Who Should Attend:

The course is designed for software engineers who are familiar with Linux from the user and application development level, who wish to gain understanding of how the Linux kernel works internally.

 

Additional, assumed prerequisite knowledge, is experience in configuring and installing Linux kernels.

 

Duration

Two days.

Course Materials

The workshop materials include a comprehensive student workbook and CD. The workbook contains all of the slides used in the course as well as hands-on lab exercises.

 

The CD contains the lab exercise code as well as a large amount of Linux software.

Course Workshop and Set-up:

The workshop makes use of standard PC's with a desktop Linux distribution for development.

 

Linux Kernel Internals Outline

Linux Kernel Overview

Diagram of Linux subsystems
Role of the kernel

Processes

Process data structures
Scheduling
Process context
Process creation

System Calls

How system calls are made from user space
How the system call mechanism is implemented within the kernel
Creating a new system call

Interrupt Context

interrupt handlers
Deferring work
Timers

Synchronization

spin locks
semaphores
other synchronization mechanisms

Memory Management

Memory allocation
Address spaces

Virtual Filesystem/Block Devices

VFS data structures
Adding a filesystem
File system caches
Block devices
Paging
Proc filesystem