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