Seminarinformationen

Seminar - Ziel

In dieser 4-tägigen Schulung „LFD401 Entwicklung von Anwendungen für Linux“ lernen Sie die Entwicklung von Linux-Anwendungen und Systemprogrammen mit C.

Dabei werden die besonderen Eigenschaften der Linux-Umgebung vermittelt und die notwendigen Kenntnisse aufgebaut, um leistungsfähige Anwendungen zu entwickeln und bestehende Programme gezielt zu erweitern oder zu optimieren.

In diesem Kurs werden die Werkzeuge und Methoden zur Entwicklung von C-Programmen und zur Systemprogrammierung unter Linux behandelt. Zusätzlich werden Debugging-Techniken, Prozessmanagement, Linux-spezifische APIs und System Calls sowie weitere Themen vermittelt.

Teilnehmer - Zielgruppe

  • Erfahrene Softwareentwickler

Kurs - Voraussetzungen

Dieser Kurs richtet sich an erfahrene Entwickler:

  • fundierte Kenntnisse in der Programmiersprache C
  • gute Kenntnisse in grundlegenden Linux-Dienstprogrammen und Texteditoren

Seminardauer

  • 4 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Einführung

  • Objectives
  • Who You Are
  • The Linux Foundation
  • Copyright and No Confidential Information
  • Linux Foundation Training
  • Certification Programs and Digital Badging
  • Linux-Distributionen
  • Platforms
  • System vorbereiten
  • Using and Downloading a Virtual Machine
  • Veränderungen in Linux- und Open-Source-Projekten

Grundlagen

  • Procedures
  • Standards und the LSB

How to Work in OSS Projects

  • Überblick über korrektes Contributing
  • Code-Quellen kennen: DCO und CLA
  • Nähe zum Mainline für Security und Quality halten
  • Project DNA studieren und verstehen
  • Eigene Motivation und Ziele definieren
  • Maintainers sowie deren Workflows und Methoden identifizieren
  • Frühzeitig Input einholen und Open Development nutzen
  • Schrittweise beitragen, keine großen Code-Dumps
  • Ego zurückstellen: nicht empfindlich reagieren
  • Geduld, langfristige Beziehungen aufbauen, hilfreich sein

Compilers

  • GCC
  • Other Compilers
  • Wichtige gcc Options
  • Preprocessor
  • Integrated Development Environments (IDE)
  • Labs

Libraries

  • Static Libraries
  • Shared Libraries
  • Linking To Libraries
  • Dynamic Linking
  • Loader
  • Labs

Make

  • Nutzung von make und Makefiles
  • Build großer Projekte
  • Komplexere Regeln
  • Built-in rules
  • Labs

Source Control

  • Source Control
  • RCS und CVS
  • Subversion
  • git
  • Labs

Debugging und Core Dumps

  • gdb
  • Was sind Core Dump Files?
  • Erzeugen von Core Dumps
  • Analyse von Core Dumps
  • Labs

Debugging Tools

  • Zeitmessung
  • Profiling und Performance
  • valgrind
  • Address Sanitizer
  • Labs

System Calls

  • System Calls vs. Library Functions
  • Wie System Calls ausgeführt werden
  • Return Values und Error Numbers
  • Labs

Memory Management und Allocation

  • Memory Management
  • Dynamical Allocation
  • Tuning malloc()
  • Locking Pages
  • Labs

Files und Filesystems in Linux

  • Files, Directories und Devices
  • The Virtual File System
  • The ext2/ext3 Filesystem
  • Journaling Filesystems
  • The ext4 Filesystem
  • Labs

File I/O

  • UNIX File I/O
  • Öffnen und Schließen
  • Lesen, Schreiben und Seeking
  • Positional und Vector I/O
  • Standard I/O Library
  • Large File Support (LFS)
  • Labs

Advanced File Operations

  • Stat Functions
  • Directory Functions
  • inotify
  • Memory Mapping
  • flock() und fcntl()
  • Temporäre Dateien erstellen
  • Weitere System Calls
  • Labs

Processes - I

  • Was ist ein Process?
  • Process Limits
  • Process Groups
  • The proc Filesystem
  • Inter-Process Communication Methods
  • Labs

Processes - II

  • system() zur Prozess-Erzeugung
  • fork() zur Prozess-Erzeugung
  • exec() zur Prozess-Erzeugung
  • clone()
  • Exiting
  • Constructors und Destructors
  • Waiting
  • Daemon Processes
  • Labs

Pipes and FIFOs

  • Pipes und Inter-Process Communication
  • popen() und pclose()
  • pipe()
  • Named Pipes (FIFOs)
  • splice(), vmsplice() und tee()
  • Labs

Asynchronous I/O

  • Was ist Asynchronous I/O?
  • The POSIX Asynchronous I/O API
  • Linux Implementation
  • Labs

Signals - I

  • Was sind Signals?
  • Available Signals
  • Dispatching Signals
  • Alarms, Pausing und Sleeping
  • Signal Handler einrichten
  • Signal Sets
  • sigaction()
  • Labs

Signals - II

  • Reentrancy und Signal Handlers
  • Jumping und Non-Local Returns
  • siginfo und sigqueue()
  • Real Time Signals
  • Labs

POSIX Threads - I

  • Multi-threading unter Linux
  • Grundstruktur eines Programms
  • Threads erstellen und zerstören
  • Signals und Threads
  • Forking vs. Threading
  • Labs

POSIX Threads - II

  • Deadlocks und Race Conditions
  • Mutex Operations
  • Semaphores
  • Futexes
  • Conditional Operations
  • Labs

Networking and Sockets

  • Networking Layers
  • Was sind Sockets?
  • Stream Sockets
  • Datagram Sockets
  • Raw Sockets
  • Byte Ordering
  • Labs

Sockets - Addresses and Hosts

  • Socket Address Structures
  • IP-Adressen konvertieren
  • Host Information
  • Labs

Sockets - Ports and Protocols

  • Service Port Information
  • Protocol Information
  • Labs

Sockets - Clients

  • Basic Client Sequence
  • socket()
  • connect()
  • close() und shutdown()
  • UNIX Client
  • Internet Client
  • Labs

Sockets - Servers

  • Basic Server Sequence
  • bind()
  • listen()
  • accept()
  • UNIX Server
  • Internet Server
  • Labs

Sockets - Input/Output Operations

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

Sockets - Options

  • Socket Options lesen und setzen
  • fcntl()
  • ioctl()
  • getsockopt() und setsockopt()
  • Labs

Netlink Sockets

  • Was sind netlink Sockets?
  • Öffnen eines netlink Socket
  • netlink Messages
  • Labs

Sockets - Multiplexing and Concurrent Servers

  • Multiplexed und Asynchronous Socket I/O
  • select()
  • poll()
  • pselect() und ppoll()
  • epoll
  • Signal Driven und Asynchronous I/O
  • Concurrent Servers
  • Labs

Inter Process Communication

  • IPC-Methoden
  • POSIX IPC
  • System V IPC
  • Labs

Shared Memory

  • Was ist Shared Memory?
  • POSIX Shared Memory
  • System V Shared Memory
  • Labs

Semaphores

  • Was ist ein Semaphore?
  • POSIX Semaphores
  • System V Semaphores
  • Labs

Message Queues

  • Was sind Message Queues?
  • POSIX Message Queues
  • System V Message Queues
  • Labs

Abschluss und Evaluationsumfrage

  • Evaluation Survey

Weitere Schulungen zu Thema Linux Foundation

LFD459 Kubernetes für App-Entwickler

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...

LFS458 Kubernetes Administration

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...

LFD440 Linux Kernel Debugging and Security

- u.a. in Frankfurt am Main, Hannover, Nürnberg, Wien, Offenbach

In dieser 4-tägigen Schulung "LFD440 Linux Kernel Debugging and Security" gewinnen Sie ein tiefes Verständnis für die grundlegenden Methoden und die interne Infrastruktur des Linux-Kernels. Der Kurs vermittelt sowohl theoretische Grundlagen als auch praktische ...

LFD473 PyTorch in Practice: An Applications-First Approach

- u.a. in Leipzig, Paderborn, Wien, Erfurt, Offenbach

In dieser 4‑tägigen Schulung „LFD473 PyTorch in Practice: An Applications-First Approach" liegt der Fokus darauf, Ihnen praxisorientierte Kenntnisse zu PyTorch zu vermitteln und Sie zu befähigen, KI‑Applikationen zu prototypen. Sie starten mit der Entwicklung von ...