Edocti
Advanced Technical Training for the Software Engineer of Tomorrow
Edocti Training

Linux Internals and Application Programming

Intermediate
21 h
4.7 (201 reviews)

Scheduled sessions

No sessions are available at the moment.
Linux Internals and Application Programming

Inside Linux: Dive deep into system calls, process management, IPC, and memory management through practical C programming.

Complete hands‑on labs focusing on POSIX APIs, file I/O, signals, pipes, and shared memory implementations.

Explore CPU scheduling, multithreading, and advanced synchronization mechanisms in detail.

Gain practical experience by actively coding, testing, and debugging complex user‑space applications (~70% labs).

How this helps: Build a highly robust foundation for writing efficient, safe, and portable Linux applications.

Who it’s for: Developers with basic C and Linux skills who want to upgrade to advanced system-level programming.

By the end of the course, you’ll master Linux internals and confidently architect robust user‑level applications.

Skills You Will Learn

Linux System Calls POSIX APIs & IPC Multithreading & Sync Memory Management Signals & Error Handling GDB & Core Dumps Yocto Project Basics Embedded Linux Concepts

Curriculum

Intro to embedded Linux

  • Analyze the main components of an embedded Linux project

Toolchains

  • Types of toolchains
  • Choosing the C library
  • Toolchain components and tools
  • Building a toolchain (focus on ARM)
  • Static vs. dynamic linking
  • Cross-compiling larger projects — an example

Bootloaders

  • Understanding bootloaders
  • Intro to device trees
  • Das U-Boot: installation, configuration, main commands

Booting the kernel

  • Booting on BeagleBone Black
  • Booting on QEMU

A simple Linux application

  • A very small introduction to POSIX IPC
  • Build a simple IPC application used throughout the course

Debugging and core dumps

  • Basic debugging
  • Remote debugging
  • Main GDB commands
  • Analyzing core files and controlling CPU‑intensive apps

Intro to Yocto

  • Installing Yocto
  • Configuring, building and running
  • Layers, BitBake and recipes
  • Customizing images

Kernel programming preview

  • Error numbers and kernel output
  • task_struct overview
  • Kernel linked lists
  • Object‑Oriented mechanisms inside the kernel

Intro to modules

  • A trivial example
  • Compiling modules
  • Modules vs. built‑in
  • Module utilities
  • Automatic loading/unloading
  • Exporting symbols

Intro to device drivers

  • Modules and device drivers
  • Memory allocation/deallocation
  • Transferring data between user‑space and kernel‑space
  • Character devices
  • Using the cache
  • Interrupts and exceptions
  • Deferrable functions

Optional modules

Suggested enhancements (optional)

  • systemd service units and process supervision
  • Deeper IPC: POSIX message queues, shared memory, semaphores
  • Filesystems: /proc and sysfs basics for application developers
  • Scheduling and priorities (nice/rtprio) for user-space apps
  • gdbserver + VS Code remote debugging tips
  • perf and a brief eBPF intro for troubleshooting

Course Day Structure

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30

Did you attend this course?

Your feedback is invaluable to us. Please share your experience with us and help us improve this course for future participants.

Share your feedback

Want to find out more? We are here to help!

Or email us directly at training@edocti.com.