578Synchronization between Linux Kernel Contexts; SMP, cache effects

Harald Welte
Language english
Room Saal 2
Time Day 2, 18:00h
Duration 1 hour


The presentation will cover the fundamental architecture of the different contexts inside the linux (2.4 and 2.6) kernels: Userspace, Syscall, Softirq, Hardirq, Kernelthread, Tasklet, Bottom Half

It will start with pointing out the general charakteristics of each of the contexts, especially with regard to SMP systems. Based on those characteristics, it will become evident that special care has to be taken to avoid coherency problems and race conditions - sometimes even on UP systems. The kernel provides a set of primitives (spinlocks, rwlocks, brlocks, seqlocks, rcu, mutexes, waitqueues) to ensure consistency between the different contexts, and between the multiple hardware threads of a SMP system. Those primitives will be covered in detail, giving rules and examples on when and how to use them.

A second part of the presentation will cover cache effects on SMP systems, and give some hints on how to do a SMP friendly structure layout, avoiding cache ping-pong, etc.

This is not an introductory talk.


- C development skills

- knowledge about modern x86 hardware:, MMU, I/O, DMA, Interrupts, ...

- knowledge about general operating system theory and the 'unix OS model'

Archived page - Impressum/Datenschutz