Zum Hauptinhalt springen

Linux Multithread-/Multicore-Programmierung

Zielgruppe

Software-Entwickler, Software-Architekten, Projektleiter

Vorkenntnisse

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

Praktische Übungen

Setzten Sie das Gelernte direkt in die Praxis um.

Der Kursinhalt entspricht nicht ganz dem, was Sie suchen?


Das sagen Kunden:

"Didaktisch gut aufbereitet, absolut sicher in der Ausführung!"
"Hervorragende Kursleitung!"
"Angenehm ruhig, kompetent, offen für Fragen."
"Sehr gut fand ich die Erklärung der Hintergründe."
"Mit 'Design Patterns für Embedded Systeme' hat Herr Nieratschker ein sehr lehrreiches, interaktives und spannendes Training entwickelt. Durch die aufeinander aufbauenden Rätselfragen fühlt sich der Kurs an, wie eine gedankliche Schnitzeljagd: der Da Vinci Code für Programmierer."
"Noch nie einen so perfekt strukturierten Kurs besucht!!! SKT++."
"Gute bildliche Erklärungen, viel Geduld bei praktischen Anwendungen."
"Ein Muss für jeden objektorientierten Programmierer!"
"Sehr guter Ansatz zum Herleiten der Patterns."
"Alle Teilnehmer wurden 'abgeholt', da der Wissensstand sehr unterschiedlich ist."
"Hat mich richtig vorwärts gebracht."
"Sehr gute, praxisnahe Beispiele."
"Der Dozent beherrscht es, die Kursteilnehmer mitzunehmen."
"Komplexe Themen super verständlich hergeleitet."
"Knowledge of the instructor far above the trained theme!"
"The thing I liked most was the instructor's teaching skills!"
"The things I liked most were the teacher's clarity both in presentation and spoken English."
"Examples from real world, not like e.g. wikipedia."
"We were 'forced' to think ... Our attention was up all the time, which was great."
"What I liked in particular was the deep knowledge of the instructor and the sense of humor."
"What I liked in particular was the way we discovered patterns."
"Didaktisch gut aufbereitet, absolut sicher in der Ausführung!"
"Hervorragende Kursleitung!"
"Angenehm ruhig, kompetent, offen für Fragen."
"Sehr gut fand ich die Erklärung der Hintergründe."
"Mit 'Design Patterns für Embedded Systeme' hat Herr Nieratschker ein sehr lehrreiches, interaktives und spannendes Training entwickelt. Durch die aufeinander aufbauenden Rätselfragen fühlt sich der Kurs an, wie eine gedankliche Schnitzeljagd: der Da Vinci Code für Programmierer."
"Noch nie einen so perfekt strukturierten Kurs besucht!!! SKT++."
"Gute bildliche Erklärungen, viel Geduld bei praktischen Anwendungen."
"Ein Muss für jeden objektorientierten Programmierer!"
"Sehr guter Ansatz zum Herleiten der Patterns."
"Alle Teilnehmer wurden 'abgeholt', da der Wissensstand sehr unterschiedlich ist."
"Hat mich richtig vorwärts gebracht."
"Sehr gute, praxisnahe Beispiele."
"Der Dozent beherrscht es, die Kursteilnehmer mitzunehmen."
"Komplexe Themen super verständlich hergeleitet."
"Knowledge of the instructor far above the trained theme!"
"The thing I liked most was the instructor's teaching skills!"
"The things I liked most were the teacher's clarity both in presentation and spoken English."
"Examples from real world, not like e.g. wikipedia."
"We were 'forced' to think ... Our attention was up all the time, which was great."
"What I liked in particular was the deep knowledge of the instructor and the sense of humor."
"What I liked in particular was the way we discovered patterns."

SKT Nieratschker · Karl Nieratschker · Joseph-Maria-Lutz-Str. 7 · D-85293 Reichertshausen · Tel. +49 (0) 8441 490210 · office@skt-nieratschker.com