Training Catalog‎ > ‎

5-Day Linux Application Development

Linux Application Development

Length: 5 Days

Type: Hands-On

Target Audience: C and C++ developers moving to Linux or aiming to improve their application and system programming skills.


Summary:

In this intensive week, you will learn all about Linux application building and debugging, from low level constructs and close interaction with the kernel space, and to the highest abstractions. You will learn the best practices of multi-threaded programming in a multiprocessor environment, learn all about efficient IPC, effective computing, resilient code techniques, system resource monitoring and debugging. The course is a must have for anyone who needs to learn proper Linux application development skills, or take them to the next level.


Prerequisites:

  • Essential:

    • The attendees should proficient with either C or C++

  • Recommended:

    • Working knowledge of Linux command line tools

Outline:

  • Introduction to Linux, Licensing, Open Source terminology

  • Linux Kernel premier, Kernel vs. User space

  • The “Everything is a file” concept.

  • Toolchains, GCC

  • Make language

  • git and source control

  • Debugging, GDB

  • The binutils 

  • Analyzing core dumps

  • Other debugging and profiling tools

  • System Calls

  • Memory management and memory allocation

  • Filesystems design considerations

  • Filesystems in Linux

  • Working with files and directories

  • fops, ioctl: the linux device driver gate

  • Process model, Threading model, userspace, kernel space and more

  • IPC: Signals

  • Exception handling. Signals vs. Exceptions

  • Kernel handlers  tasklets, working queues, bottom halves/top halves - theory.

  • Threads and Synchronization: spin_locks, semaphores, mutexes, futex.

  • IPC: shared memory

  • IPC: sockets, TCP/IP, Unix Domain Sockets

  • IPC: Message Queues

  • IPC: Netlink sockets

  • OS inspection, debugging, debugfs, sysfs, procfs (introduction)  

  • Asynchronous/Synchronous programming constructs and concepts

Comments