IT-Trainer Jobs und Stellenangebote: LFD401 Entwicklung von Anwendungen für Linux

Seminardauer: 4 Tage

Trainer gesucht

IT-Trainer Jobs und Stellenangebote: LFD401 Entwicklung von Anwendungen für Linux, Betriebssystem, Linux Foundation, Netzwerk- und System-Administrator.

Anmelden / Registrieren als Trainer

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