Course : Unix/Linux system developer

Unix/Linux system developer

Download in PDF format Share this course by email 2


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.


Inter
In-house
Custom

Practical course in person or remote class

Ref. LIS
Price : 2550 € E.T.
  4d - 28h00




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.

Prerequisites
Good knowledge of UNIX/Linux system and C programming language.

Course schedule

Development method and tools

  • The linux distributions, open source software, licenses.
  • Compilers and associated tools, profilers and debuggers.
Hands-on work
Use of GDB, cscope and profiling with a simple application.

Processes

  • 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.
Hands-on work
Creation of a simple multi-process application. Tests of some security issues like process running wild and handling with setrlimit(2).

Posix Threads

  • 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.
Hands-on work
A simple multi-thread application using mutexes and condition variables.

Files and filesystems

  • File handling.
  • Filesystems. Accessing metadata. Accessing directories.
  • I/O Multiplexing. Using poll and select.
  • Signals and events with multiplexed I/O
Hands-on work
A small program using fcntl(2) for file locking and accessing a directory.

Inter Process Communication

  • Message queues.
  • Shared memory.
  • Semaphores. Handling multiple semaphore sets.
  • Pipes. Standard I/O redirections.
  • Signals. UNIX signals implementation.
Hands-on work
Implementation of a client/server use case with the help of various technologies: message queues, shared memory and semaphores, pipes and signals.

Network

  • Socket Interface.
  • Address and protocol management. TCP/IP interface.
  • Network daemons.
  • mplementation of network servers and super servers.
Hands-on work
Implementation of our client/server use case with the network interface.

Memory management and Time

  • Virtual memory.
  • Memory allocation.
  • Advanced use
  • Date and time. Timers and timeout.
  • Latencies and determinism.
Hands-on work
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.

Advanced linker control

  • Security, real-time and multithreading.
  • Shared libraries.
Hands-on work
A multi-thread real-time application with a time share thread. Implementation of a memory allocation tracer with dlopen.


Practical details
Hands-on work
Progressive practicals and case studies will enable you to fully understand the presentation of the UNIX/Linux system programming interface.

Customer reviews
4,6 / 5
Customer reviews are based on end-of-course evaluations. The score is calculated from all evaluations within the past year. Only reviews with a textual comment are displayed.


Dates and locations
Select your location or opt for the remote class then choose your date.
Remote class