Das Threading Modell des Linuxkerns beruht auf dem blockierenden Schema, und Aktivitäten im Kern sind nicht verdrängbar. Natürlich können eintretende Hardware-Ereignisse -- Interrupts -- eine sofortige Preemption zur Folge haben, sofern diese nicht deaktiviert wurden2.3.
Um den Kern attraktiver bzw. leistungsfähiger im Serverbereich zu gestalten, wurde großer Wert auf maximale Parallelität in Multiprozessor-Systemen gelegt und somit die in Abschnitt 2.2 erwähnten intelligenten Sperren weitreichend eingesetzt.
Die Synchronisation im Linuxkern stützt sich auf grundlegende Mechanismen und erweiterte Funktionen. Die grundlegenden sind:
Hier zeigt sich auch der Sinn der Einschränkung auf Multiprozessor-Systeme, denn Busy-Waiting auf den Abschluß einer parallelen Aktion auf einem Prozessor ist ein eindeutiger Deadlock in nicht preemptiven Umgebungen wie Linux.
Semaphore und Spinlocks in Linux sind nicht rekursiv, ein nochmaliges Anfordern der gleichen Ressource führt also zu einem Deadlock.
Verwendet man diese Funktionalitäten sinnvoll und intelligent, läßt sich ein hohes Maß an Parallelität erreichen. Davon profitiert z.B. der überarbeitete Netzwerkprotokoll-Stack unter SMP.
Außer diesen grundlegenden Mechanismen existieren weitergehende Funktionalitäten, die den Ablauf im Kern beeinflussen. Hierbei werden verschiedene mögliche Szenarien sehr gut auf abstrakte Datentypen und Funktionen abgebildet. Zu beachten ist aber, auf welcher Ebene man sich gerade befindet: