Course intended for:

The training is intended for programmers developing applications in the Linux system, who would like to get familiar with and use the characteristic system mechanisms of this family of operating systems.

Course objective:

The participants will be able to use properly various system mechanisms of Linux environment, in particular, those associated with multithreading, synchronization, inter-process communication and network services. The trainers will discuss individual areas of application of system mechanisms. For each of the mechanisms listed, the mode of its use will be discussed with practical examples realized by the users in form of short programming tasks. Among other things, the participants will prepare daemon applications and client-server application software.

In particular, the participants will perform practical exercises to get familiar with the issues of design and implementation of applications using the available system mechanisms in Linux.


The training participants are required to have the C language programming ability and basic knowledge on the Linux system management (logging in, work using the console, compiling and launching of the application).

Course parameters:

5*8 hours (5*7 net hours)

The training consists of lectures and workshops.

Course curriculum

  1. Introduction to Linux system

    • The system architecture

    • Features of an operating system: kernel, virtual memory, multitasking, multithreading, sharing of resources, synchronization, concurrence

    • Working with the shell, gcc compiler, gdb debugger, make

    • Development and use of static and shared libraries

    • System structures

    • The /proc and /sys files subsystem

    • Tracking of system requests

    • Obtaining of system information

    • POSIX programming interface

  2. Processes and threads

    • Development of processes and threads, child processes

    • User space and kernel space

    • Process states

    • Process management, process groups

    • Daemon processes

    • Process statistics, timers

    • Blocking and non-blocking operations

    • Process suspending, time management

    • Aspects of security: process rights

  3. Signals

    • Signal types

    • Signal management

  4. Synchronization

    • Active awaiting

    • The concept of race

    • Critical sections, deadlock

    • Mutex

    • semaphores

  5. memory

    • memory access rights

    • memory locking

    • shared memory

    • memory mapping

  6. Operations on files

    • File system management

    • File system in user space (FUSE)

    • Write/read buffers

    • Symbolic and hard links

    • Aspects of security: file access rights

  7. Inter-process communication

    • Named and unnamed streams

    • Message queues

  8. Network services

    • Client-service architecture

    • TCP socket programming

    • UDP socket programming

    • IPv4 and IPv6 protocol management

    • Raw sockets

  9. Device management

    • File /dev subsystem

    • Types (sign, block, special) and techniques of access to devices

  10. Security

    • Authentication – PAM modules

    • Typical programming errors

    • Static and dynamic analysis tools

  11. System expansion

    • New system calls

    • Kernel modules

Any questions?

* Required.

Phone +48 22 2035600
Fax +48 22 2035601