Programmation noyau Linux et Écriture de drivers

Ce cours pratique se concentre sur la programmation interne du noyau Linux, y compris les pilotes (drivers) de périphérique



Référence de la formation

KLI002

Niveau

Intermédiaire

Nombre de jours

40 heures (4 heures/jour)

Prix

2.526,00 € HT

Lieu de la formation

V: v-learning, classe virtuelle



Pre-requis

Les participants doivent disposer d'une bonne expérience de Linux et
d'une bonne maîtrise de la programmation en ANSI C, avec les
bibliothèques standard, y compris la programmation de sockets est
essentielle. Connaissance de Linux (utilisateur).

Un niveau d'anglais business moyen est requise car la formation sera
dispensé en anglais.

Public

Architectes logiciels, concepteurs, développeurs et analystes ayant une expérience Linux qui ont besoin d'apprendre et de programmer dans l'environnement du noyau, y compris les pilotes de périphériques.

Objectifs de la formation

Ce cours pratique se concentre sur la programmation interne du noyau
Linux, y compris les pilotes de périphérique. Les participants
découvriront l'architecture du noyau Linux, la programmation dans
l'environnement du noyau, les considérations d'espace, les pilotes de
périphériques réseau et les mécanismes de débogage. À l'issue de ce
cours, les participants pourront développer des modules de noyau Linux
et des pilotes de périphériques.
Des exemples sont en C.
Les exercices du cours comprennent l'implémentation d'un pilote de
périphérique de caractère fonctionnel et d'un pilote de périphérique de
réseau squelettique, utilisant le noyau 3.10 (RHEL 7.X).

Contenu du cours

Table 1: KLI002 - Course Contents
Chapter Description
Introduction • The Linux Kernel
Kernel Architecture • Linux kernel general properties
• System calls
• Task Scheduler – Details and evolution
• I/O Schedulers
− Elevators
− CFQ
− No op
• Kernel Preemption
• Threads NPTL
The Kernel Perspective • Files and FileSystems
• Devices
− SysFS
• Processes
• Floating Point
Module Programming
(+Exercises)
• Implementing Kernel modules
• Module writing guidelines
• Kernel structures
• Printk
Character Device Drivers
(+Exercises)
• Device numbers
• Essential kernel structures
− inode
− file
− file_operations
− cdev
• Registering a character device
Character Device Drivers
(Continued)
• Device System Calls
• open, close Working with User Space memory
• Implementing read, write and ioctl
• Virtual Memory Management – overview
• mmap
• devtmpfs
• udev
Kernel Space Considerations
(+Exercises)
• Timing issues and kernel timers
• Synchronicity
− semaphores
− spinlocks
− wait queues
• read and write with support of both blocking and non blocking i/o
• poll
• Handling Interrupts
• Bottom Halves
• SoftIRQs, Work Queues, TaskLets and threaded irq’s
Network Device Drivers
(+Exercises)
• The Linux Protocol Stack
• Packet flow – from the interface to the application and back
• Socket buffer operations
• PF_PACKET
• Hooking with NetFilter
• Overriding network system calls
Debugging mechanisms • Kernel debugging techniques in Linux
− strace
− standard /proc and /sys entries
• Implementing entries in /proc
• Handling Oops and Panics
• debugfs
• KProbes
• Magic SYSRQ
• KDB
The End • Summary
• Q&A
• Evaluation

Dates


16 Nov 2020 au 27 Nov 2020


01 Déc 2020 au 11 Déc 2020


NOTE :
ATTENTION CETTE FORMATION EST SUR MESURE
CE COURS EST REALISABLE TOUTE L'ANNEE AVEC UN MINIMUM DE 5 PARTICIPANTS


Des questions ?

+33 (0) 950 20 91 64


Inscription ou Demande de devis