Linux Multithread-/Multicore-Programmierung


Zielgruppe:

Software-Entwickler, Software-Architekten, Projektleiter

Voraussetzungen:

Kenntnis der Programmiersprache C

Dauer:

3 Tage

Kursziel:

Dieser Kurs zeigt, wie die Prozessorleistung von Linux-Systemen - insbesondere bei modernen Multicore-Architekturen - bestmöglich genutzt werden kann. Er richtet sich an Softwareentwickler, die neue Applikationen entwickeln oder existierende Anwendungen optimieren müssen, und eignet sich insbesondere auch für die Anwendung unter Embedded Linux. Schwerpunkt des Kurses ist die Vorstellung des Pthread-APIs der NPTL-Bibliothek (Native Posix Threads Library). Dabei wird nicht nur der Funktionsumfang der Threadbibliothek eingehend behandelt, sondern auch auf mögliche Probleme und Lösungen, sowie auf Richtlinien für einen guten Softwareentwurf eingegangen. Darüber hinaus zeigt der Kurs aber auch, um wie viel einfacher eine Multithread-Applikationsentwicklung mithilfe von OpenMP sein kann, und bietet somit einen Einblick in eine völlig andere Art der Softwareentwicklung für Multithreading-Systeme.


Inhalt:

Einführung

  • Prinzipielle Funktionsweise eines Threads
  • Zuordnung von Code und Daten
  • Threads vs. Prozesse
  • Der Posix Standard und das Pthread API
  • Das NPTL-Thread-Modell
  • Schedulingkonzepte
  • Threadzustände

Threads

  • Threaderzeugung
  • Parameterübergabe und Returnwerte
  • Threadattribute
  • Prioritäten und Scheduling
    • Time Sharing
    • Realtime
  • Threads und Signale
  • Threadlokaler Speicher
  • Threadbeendigung

Synchronisation

  • Flag-Synchronisation
  • Race Conditions
  • Mutexe
    • Rekursiver Zugriff
    • Deadlocks
    • Prioritätsinversion
    • Ceiling-Priorität
    • Fairness
  • Reader-/Writer-Locks
  • Semaphore
  • Condition Variable
  • Barrieren
  • Einmal-Initialisierung

Multicore-Programmierung

  • Wann lohnt sich Multicore?
  • Amdahl’sches Gesetz
  • Ansätze zur Leistungsoptimierung
  • False Sharing
  • Prozessor-Affinität
  • Spinlocks
  • Richtlinien für einen guten Applikationsentwurf

OpenMP

  • Was ist OpenMP?
  • Beispiel: Multithreadprogrammierung ohne (explizite) Threads

Nicht genau was Sie suchen?