When practising low-level programming, the programmer must use techniques vastly different from those employed in high-level programming languages. During this course, we cover the crucial low-level C/C++ programming techniques in Linux. Participants will learn both system functions, input/output capturing and handling of files, pipes and sockets, as well as thread-aware programming topics such as managing processes/threads, synchronization or inter-process communication. We also cover the assembly language and hybrid programming.
- Introduction to a Linux based system, building blocks, APIs
- Automation and build supporting tools:
- make, automake, autotools
- Processes, threads and scheduling
- scheduling priorities and classes
- thread programming and synchronization (pthread)
- OpenMP basics
- File operations, pipes, sockets
- UNIX sockets
- network sockets
- connection handling techniques (select)
- Signal handling (including POSIX RT Signals)
- IPC and synchronization (POSIX and SysV)
- message queues
- shared memory
- Timers and clocks
- Managing system resources, forcing limits on resources
- Assembly language in operating system environment, hybrid programming
- Using SIMD and DSP in-CPU blocks (depends on system)
Audience and prerequisites
This course targets engineers and programmers who want to use Linux to develop applications, get familiar with the APIs provided by this system and choose the right one for a given task.
Participants should be familiar with UNIX or Linux command line interface and basic tools, as well as the basics of C programming.
Course participants receive completion certificates signed by ALX.