Linux – development of low-level services and libraries (LNXPR1)
Unix-like systems, Linux - programming
On Linux and other Unix systems, applications interact with the operating system via system calls to the kernel and sometimes with shared memory. The system C library and POSIX define APIs beyond ISO C, while Linux offers extra practical extensions for performance and integration.
Interprocess communication includes POSIX and System V queues, semaphores and shared memory, plus sockets and pipes that can transfer file descriptors. Linux integrates signal handling and timer events into event loops. Languages: C, C++, Rust, Python.
THIS TRAINING COURSE WILL HELP YOU:
- Understand how the OS works from a user-space program's perspective
- Learn to use interprocess communication primitives on Unix systems
- Identify Linux-specific features that simplify development beyond POSIX
WHO SHOULD ATTEND?
- Developers of software and system tools for Linux embedded and servers
- Library and framework authors integrating software on Unix platforms
- Anyone interested in OS internals and user-space services
COURSE LOCATION AND AVAILABLE DATES
Need this course in English?
Public courses are usually delivered in Czech, but this course is also available in English. We can arrange private training for your team online, at your premises or in our classrooms, and tailor the content to your needs.
For groups of around 4 or more participants, private training can already be comparable in price to booking individual places on a public course. Send us your requirements and we’ll recommend the best format and provide an exact quote.
Request training in English
Course content:
Hide details
-
Operating system interface
-
System calls (syscalls)
-
Standard library and POSIX.1-2024
-
Tools for tracing kernel communication
-
Errors in system calls
-
Handling fatal and recoverable errors
-
Handling and propagating OS errors
-
System calls interrupted by signals
-
Communication, input and output
-
Standard streams (stdin, stdout, stderr)
-
File descriptors
-
Buffered streams in C, C++ and Rust
-
Filesystem and directory structure
-
Filesystem operations
-
Relative paths and current working directory
-
File permissions and attributes
-
Working with files
-
Opening for reading or writing
-
Hybrid approaches to file access
-
Workarounds for lack of transactions
-
Clocks and time measurement
-
Current time and time intervals
-
Timer signals, events and timerfd
-
Waiting and suspending processes (wait)
-
Process and thread management
-
fork, exec and spawn functions
-
Corresponding system calls
-
Standard threads and pthreads
-
Resource sharing
-
When using fork or clone
-
Closing or preserving resources across exec
-
Program return value
-
Environment and the shell
-
Process groups and background processes
-
System services and the service manager
-
Combining processes started from the shell
-
Operating system tasks
-
Difference between process and thread (LWP)
-
Choosing between multiprocessing and multithreading
-
Threads and processes in C, C++, Rust and Python
-
Signals and their handling
-
Asynchronous signal handling
-
Synchronous handling via timerfd
-
Communication using real-time signals
-
Blocking and non-blocking communication
-
When we don't want syscalls to sleep the process
-
File descriptor readiness
-
EWOULDBLOCK returned instead of blocking
-
I/O multiplexing
-
Waiting for a set of possible events
-
Events come from file descriptors
-
External event-management libraries
-
Basic interprocess communication
-
Pipes between processes (pipe)
-
Named pipes in the filesystem (named pipe)
-
Handling broken pipes and SIGPIPE
-
Message queues
-
POSIX and System V variants
-
Multiple senders and receivers
-
In some ways more flexible than sockets
-
Local (Unix) sockets
-
Forking processes and socketpair
-
Local client-server architecture
-
Socket types and their limitations
-
Network sockets
-
Client-server architecture
-
The Internet and TCP/IP protocol
-
Workaround with SO_REUSEADDR
-
Connection handling strategies
-
Forking processes or starting threads
-
Using a pool of processes or threads
-
Non-blocking sockets and an event queue
-
Name services
-
Domain names and getaddrinfo
-
glibc and /etc/nsswitch.conf
-
Limitations, errors and alternatives
-
Memory management and mapping
-
Dynamic memory allocation (heap, alloca)
-
Mapping files from the filesystem
-
Boundaries between kernel and user space
-
Shared memory
-
Automatic for threads
-
Explicit POSIX or System V (shm)
-
The only communication that does not go through the kernel
-
Passing file descriptors
-
The kernel can transfer file descriptors
-
Can use a pipe or a local socket, for example
-
Any file descriptor can then be sent
-
Synchronization primitives
-
pthreads tools (mutex, condition variable)
-
POSIX and System V semaphores and eventfd
-
Atomic variables and lock-free operations
-
Debugging options
-
ptrace system call
-
Interactive debuggers like GDB
-
Tracers like strace
-
Shared dynamic libraries
-
Linking libraries at program start
-
Explicit loading via dlopen
-
Library dependencies
-
Bonus: Optimized data paths
-
Optimized polling via epoll
-
Zero-copy techniques in the kernel
-
The io_uring mechanism
-
Prerequisites:
-
Good knowledge of C programming.
-
Recommended previous course:
-
Linux – Basic Administration (LNX1)
-
Schedule:
-
3 days (9:00-17:00)
Training and learning environment
What does the environment for in-person IT courses look like?We hold training courses in our own classrooms equipped with modern computer equipment for each participant and a large projection screen. Each workstation is fitted with a powerful computer for seamless practical exercises, and the environment supports a calm, friendly atmosphere during training.
Do I need to bring my own laptop to the classroom IT course?Our training rooms are fully equipped, so you do not need to bring your own laptop. A modern computer with all necessary hardware and software is ready for you at your workstation.
Will you receive an official certificate after completing an IT course?Yes, upon successful completion of the training course, you will receive an official ICT Pro certificate confirming your participation and acquired technical skills. You can use it to verify your qualifications or add it to your professional profile.
Where can you find our training center in Brno?The premises of the ICT Pro training center are located on the 1st floor of the COMGUARD building at Sochorova 38 in Brno. Positioned on the border of Žabovřesky and Komín, the location is easily accessible by both car and public transport.
Where can you find our training center in Prague?The premises of the ICT Pro training center are located on the 1st floor of the Opatov Park building at Líbalova 1, Prague 11 – Chodov. The location provides a comfortable environment for your education with convenient access.
What facilities and refreshments are available to you during training breaks?Our training centers feature a fully equipped kitchenette for a comfortable break during your courses. The facilities include a coffee machine, microwave, kettle, and a wide selection of drinks and snacks.
What beverage refreshments are available during your course?A beverage station with a coffee machine, teas, syrups, and water is at your disposal throughout the entire training session. You can enjoy a coffee or another drink of your choice anytime during breaks.
What light refreshments are provided for you during the courses?During course breaks, participants can enjoy light sweet snacks, pastries, and fruit syrups to mix their own drinks. Fresh water dispenser and plates are also available for your convenience.
Should I bring my own snacks to ICT Pro training?There is no need to. A wide selection of savory snacks, sweet biscuits, and snack bars is available for you during breaks. Boost your energy for all-day focus right inside the training center premises.
Can you spend training breaks in the fresh air?Yes, an outdoor terrace is available at our training center. During breaks between learning sessions, you can relax in the fresh air in a pleasant green environment.
Where can you relax during course breaks?Our training center features a spacious outdoor terrace with seating options. During breaks between learning sessions, you can step outside to relax and recharge in the fresh air.