Consult our trainings :
Unix/Linux system developer Training
- Participants / Prerequisite
This training session will teach you how to make use of the wide and precise UNIX system interface to develop performant applications. You will learn to manage processes and threads, file systems, and memory allocation. At the end of this session, you will be familiar with network communication, signals, Posix and System V IPC.
- The linux distributions, open source software, licenses.
- Compilers and associated tools, profilers and debuggers.
Use of GDB, cscope and profiling with a simple application.
- The UNIX processes, scheduling processes, priorities and processor affinity.
- Live and death of a process. Fork, exec, exit and wait.
- Security issues. Root and standard user, user ids.
- Namespaces and application mobility.
Creation of a simple multi-process application. Tests of some security issues like process running wild and handling with setrlimit(2).
- Programing with threads. Overview of Posix 1c threads.
- Thread creation and termination. Thread scheduling.
- Synchronizing Threads. Mutex and data protection, priority inversion.
- Condition variable and flow control. Using signals and threads.
A simple multi-thread application using mutexes and condition variables.
- File handling.
- Filesystems. Accessing metadata. Accessing directories.
- I/O Multiplexing. Using poll and select.
- Signals and events with multiplexed I/O
A small program using fcntl(2) for file locking and accessing a directory.
- Message queues.
- Shared memory.
- Semaphores. Handling multiple semaphore sets.
- Pipes. Standard I/O redirections.
- Signals. UNIX signals implementation.
Implementation of a client/server use case with the help of various technologies: message queues, shared memory and semaphores, pipes and signals.
- Socket Interface.
- Address and protocol management. TCP/IP interface.
- Network daemons.
- mplementation of network servers and super servers.
Implementation of our client/server use case with the network interface.
- Virtual memory.
- Memory allocation.
- Advanced use
- Date and time. Timers and timeout.
- Latencies and determinism.
Test of various allocations schemes using malloc(3), brk(2) or mmap(2). Implementing good practice for real-time applications. Using the UNIX time interface to measure scheduling latency.