Training - LINUX: User Programming (reference 003346A)
 
    Related Trainings
   
           
    Prerequisites
  • C programming experience
  • Basic understanding of operating systems and debugging techniques
   
             
  Course Objectives
  • Understand how to implement a multi-process and multi-thread application in the user space of an embedded Linux kernel
  • The course is divided into lectures and labs. The labs allow to practice and better understand the contents of the lectures.
  • Configure and build Linux kernel image
  • Understand the different types of root filesystems
  • Start an application after kernel boot
  • Use debugging tools to debug user mode application
  • Understand differences between process and threads and schedule functions through both mechanisms
  • Understand Linux user mode memory management
  • Use dynamic memory allocation and shared memory
  • Use timer mechanisms to schedule periodic tasks, timestamp events
  • Understand the different mechanisms of synchronization and mutual exclusion of the user space
  • Use message queue mechanisms for inter-tasks communication
  • Understand Input / Output mechanisms
  • Use sockets for TCP, UDP and IP communications
   
           
    Duration
  • 4-day course
   
           
    Topics

(The full description of this course can be provided on request)

[Day one]

Introduction

  • Linux and Real-Time
  • User Space, Kernel Space
  • System calls
  • Licenses

Installing, Compiling and Booting the Linux kernel

  • Kernel Configuration
  • Kernel Build
  • Kernel Images
  • The Bootline
  • The Root Filesystem
  • Starting an Application after the Kernel Boot

Debugging

  • gdb, remote gdb
  • /proc directory
  • Tracing Tools

Basic shell commands

  • Files commands
  • Process commands

Labs

  • Configuring and compiling the kernel
  • Booting the kernel on the target platform
  • Launching an application at boot
  • Using a root filesystem in RAM and a NFS mounted root filesystem
  • Debugging an application

[Day two]

Process and Thread

  • Process and thread definition
  • Process creation
  • Process scheduling
  • Thread creation
  • Thread scheduling
  • Posix APIs (1003.1b, 1003.1c, 1003.1d)
  • System V API (IPC System V)
  • System calls error management
  • Exception Management

Memory Management

  • Memory map of a process
  • Shared memory, local memory (for process and for threads)
  • System V API for shared memory management
  • Memory lock
  • Mapping of a file descriptor in memory (mmap, ...)
  • Dynamic allocation of memory

Labs

  • Creating a multi-process application
  • Sharing variables between process through shared memory
  • Creating a multi-thread application
  • Writing a reentrant procedure
  • Allocating memory

[Day three]

Signals and Timing Management

  • Posix and BSD signals
  • Asynchronous and synchronous signal
  • Masking signals
  • The BSD Timer
  • Waiting for a Delay
  • Performance measurements
  • Date and Time management

Synchronization and mutual exclusion

  • The synchronization problem
  • The mutual exclusion problem
  • The Posix 1003.1b counting semaphore
  • The Posix 1003.1c mutex
  • The Posix 1003.1c condition variable
  • Priority inversion
  • Deadlock
  • Priority ceiling protocol

Message passing

  • Shared memory
  • The System V message queue
  • The pipes

Labs

  • Writing a periodic process
  • Starting an asynchronous routine in a process with a signal
  • Synchronizing tasks with semaphores
  • Protecting a shared data structure with a Mutex
  • Writing a client server mechanism with a message queue

[Day four]

Input / Output

  • The Posix standard layer
  • The open, read, write, close, ioctl calls
  • Locking files
  • Asynchronous I/O
  • The select call
  • The ANSI stream (stdio) layer

TCP/IP Networking

  • Generalities on TCP/IP
  • UDP sockets
  • TCP sockets
  • IP (RAW) sockets
  • Sockets options

Labs

  • Reading/writing files on the root filesystem
  • Writing point to point communication with TCP
  • Writing broadcast communication with UDP
   
           
    Documentation

Training manuals will be given to participants during training. Precise and easy of use, those notes can be used as a reference afterwards.
   
           
    Other trainings :

If you want to know our other training courses and their contents, you can consult or download our complete training courses list on this page : Training courses - General presentation