Schulungsübersicht

Einführung

  •  Ziele
  •  Wer Sie sind
  •  Die Linux Foundation
  •  Linux Foundation Training
  •  Zertifizierungsprogramme und digitale Abzeichen
  •  Linux-Distributionen
  •  Plattformen
  •  Vorbereitung des Systems
  •  Verwendung und Herunterladen einer virtuellen Maschine
  •  Änderungen in Linux

Vorbereitungen

  •  Prozeduren
  •  Standards und die LSB

Wie man an OSS-Projekten arbeitet **

  •  Überblick, wie man richtig beiträgt
  •  Bleiben Sie nah am Mainline für Sicherheit und Qualität
  •  Studieren und verstehen Sie die Projekt-DNA
  •  Finden Sie heraus, welches Problem Sie lösen möchten
  •  Identifizieren Sie die Maintainer und ihre Arbeitsabläufe und Methoden
  •  Holen Sie sich früh Feedback und arbeiten Sie offen
  •  Leisten Sie inkrementelle Beiträge, nicht große Code-Dumps
  •  Lassen Sie Ihr Ego draußen: Seien Sie nicht empfindlich
  •  Seien Sie geduldig, bauen Sie langfristige Beziehungen auf und helfen Sie aktiv

Kompilierer

  •  GCC
  •  Andere Kompilierer
  •  Wichtige gcc-Optionen
  •  Preprocessor
  •  Integrierte Entwicklungsumgebungen (IDE)
  •  Labs

Bibliotheken

  •  Statische Bibliotheken
  •  Dynamische Bibliotheken
  •  Verlinken von Bibliotheken
  •  Dynamischer Link Loader
  •  Labs

Make

  •  Verwendung von make und Makefiles
  •  Erstellung großer Projekte
  •  Komplexere Regeln
  •  Integrierte Regeln
  •  Labs

Quellcodeverwaltung

  •  Quellcodeverwaltung
  •  RCS und CVS
  •  Subversion
  •  git
  •  Labs

Debugging und Core Dumps

  •  gdb
  •  Was sind Core Dump-Dateien?
  •  Erstellen von Core Dumps
  •  Prüfen von Core Dumps
  •  Labs

Debugging-Werkzeuge

  •  Zeitbestimmung
  •  Profilierung und Leistung
  •  valgrind
  •  Labs

Systemaufrufe

  •  Systemaufrufe vs. Bibliotheks-Funktionen
  •  Wie Systemaufrufe durchgeführt werden
  •  Rückgabewerte und Fehlernummern
  •  Labs

Speicherverwaltung und Zuordnung

  •  Speicherverwaltung
  •  dynamische Zuordnung
  •  Optimierung von malloc()
  •  Seiten sperren
  •  Labs

Dateien und Dateisysteme in Linux **

  •  Dateien, Verzeichnisse und Geräte
  •  Das virtuelle Dateisystem
  •  das ext2/ext3-Dateisystem
  •  Journaling-Dateisysteme
  •  das ext4/-Dateisystem
  •  Labs

Datei-E/A

  •  UNIX Datei-E/A
  •  Öffnen und Schließen
  •  Lesen, Schreiben und Suchen
  •  Positionale und Vektoreingabe/Ausgabe
  •  Standard E/A-Bibliothek
  •  Große Datei-Unterstützung (LFS)
  •  Labs

Erweiterte Dateibearbeitungen

  •  Stat-Funktionen
  •  Verzeichnisfunktionen
  •  inotify
  •  Speicherabbildung
  •  flock() und fcntl()
  •  Erstellen temporärer Dateien
  •  Andere Systemaufrufe
  •  Labs

Prozesse I

  •  Was ist ein Prozess?
  •  Prozessgrenzen
  •  Prozessgruppen
  •  Das proc-Dateisystem
  •  Methoden zur Interprozesskommunikation
  •  Labs

Prozesse II

  •  Erstellen eines Prozesses mit system()
  •  Erstellen eines Prozesses mit fork()
  •  Erstellen eines Prozesses mit exec()
  •  Verwenden von clone()
  •  Beendigung
  •  Konstruktoren und Destruktoren
  •  Warten
  •  Daemon-Prozesse
  •  Labs

Pipes und Fifos

  •  Pipes und Interprozesskommunikation
  •  popen() und pclose()
  •  pipe()
  •  Benannte Pipes (FIFOs)
  •  splice(), vmsplice() und tee()
  •  Labs

Asynchrone E/A **

  •  Was ist asynchrone E/A?
  •  Die POSIX-Asynchron-E/A-API
  •  Linux-Implementierung
  •  Labs

Signale I

  •  Was sind Signale?
  •  Verfügbare Signale
  •  Versand von Signalen
  •  Alarms, Pausieren und Schlafen
  •  Einrichten eines Signal-Handlers
  •  Signalsets
  •  sigaction()
  •  Labs

Signale II

  •  Wiederholungssicherheit und Signal-Handler
  •  Springen und nicht-lokale Rückkehr
  •  siginfo und sigqueue()
  •  Reale Zeit-Signale
  •  Labs

POSIX Threads I

  •  Multithreading unter Linux
  •  Grundlegende Programmaufbau
  •  Erstellen und Zerstören von Threads
  •  Signale und Threads
  •  Forking vs. Threading
  •  Labs

POSIX Threads II

  •  Deadlocks und Rennenbedingungen
  •  Mutex-Operationen
  •  Semaphoren
  •  Futexes
  •  Bedingte Operationen
  •  Labs

Netzwerke und Sockets

  •  Netzwerk-Schichten
  •  Was sind Sockets?
  •  Stream-Sockets
  •  Datagramm-Sockets
  •  Rohschnitt-Sockets
  •  Bytereihenfolge
  •  Labs

Sockets Adressen und Hosts

  •  Socket-Adressstrukturen
  •  Konvertieren von IP-Adressen
  •  Hostinformationen
  •  Labs

Sockets Ports und Protokolle

  •  Service-Port-Informationen
  •  Protokollinformationen
  •  Labs

Sockets Clients

  •  Grundlegende Client-Sequenz
  •  socket()
  •  connect()
  •  close() und shutdown()
  •  UNIX-Client
  •  Internet-Client
  •  Labs

Sockets Server

  •  Grundlegende Server-Sequenz
  •  bind()
  •  listen()
  •  accept()
  •  UNIX-Server
  •  Internet-Server
  •  Labs

Sockets Eingabe/Ausgabe-Operationen

  •  write(), read()
  •  send(), recv()
  •  sendto(), recvfrom()
  •  sendmsg(), recvmsg()
  •  sendfile()
  •  socketpair()
  •  Labs

Sockets Optionen

  •  Abrufen und Setzen von Socket-Optionen
  •  fcntl()
  •  ioctl()
  •  getsockopt() und setsockopt()
  •  Labs

Netlink Sockets **

  •  Was sind Netlink-Sockets?
  •  Öffnen eines Netlink-Sockets
  •  Netlink-Nachrichten
  •  Labs

Sockets Multiplexing und gleichzeitige Server

  •  Multiplexierte und asynchrone Socket-E/A
  •  select()
  •  poll()
  •  pselect() und ppoll()
  •  epoll
  •  Signalgesteuerte und asynchrone E/A
  •  Gleichzeitige Server
  •  Labs

Interprozesskommunikation

  •  Methoden der Interprozesskommunikation
  •  POSIX-IPC
  •  System V IPC **
  •  Labs

Geteilter Speicher

  •  Was ist geteilter Speicher?
  •  POSIX-geteilter Speicher
  •  System V-geteilter Speicher **
  •  Labs

Semaphoren

  •  Was sind Semaphoren?
  •  POSIX-Semaphoren
  •  System V-Semaphoren **
  •  Labs

Nachrichtenwarteschlangen

  •  Was sind Nachrichtenwarteschlangen?
  •  POSIX-Nachrichtenwarteschlangen
  •  System V-Nachrichtenwarteschlangen **
  •  Labs

Voraussetzungen

Dieser Kurs richtet sich an erfahrene Entwickler. Die Teilnehmer sollten mit C-Programmierung vertraut sein und grundlegende Kenntnisse über Linux-Utilities und Texteditoren haben.

Zielgruppe

Dieser Kurs richtet sich an erfahrene Entwickler. Die Teilnehmer sollten mit C-Programmierung vertraut sein und grundlegende Kenntnisse über Linux-Utilities und Texteditoren haben.

Erfahrungsstufe: Mittel

 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien