Vous êtes ici : 10. SERVICES > 30. Formations et délégation de formateurs > Formation Linux : Drivers Linux
SERVICES
Administration système et réseaux
Audit, conseil en sécurité informatique
Formations et délégation de formateurs

SOLUTIONS
Logiciel de gestion de parc informatique GLPI
Nagios : supervision de réseau
Parefeu iptables
Serveur de messagerie Postfix
Serveur Intranet (Samba, Apache, Messagerie)
Serveur proxy squid

TECHNOLOGIES
Linux
Apache, serveur web
MySQL
PHP
TYPO3
SPIP, Serveur de publication
Perl
SAMBA, serveur de fichiers
Postfix, serveur de messagerie
Sécurité
Windows XP

NOUS CONTACTER

DEMANDE D’INFORMATIONS

Formation Linux : Drivers Linux



Objectifs
-  Maîtriser les outils kernel de développement et de mise au point
-  Programmer les IO, les interruptions, les timers, le DMA
-  Adapter les sources des drivers du marché
-  Installer et intégrer les drivers dans un kernel linux
-  Gérer les interfaces standard synchrones, asynchrones et ioctl
-  Développer les structures des drivers caractères, blocs et réseaux
-  Comprendre les spécificités de la version 2.6
-  Connaître les évolutions qui ont eu lieu jusqu’au noyau 2.6.23

Pré-requis
-  Connaissance de la programmation Linux utilisateur et système (niveau cours D0)

Plan

Présentation & Architecture
-  Historique
-  Licences GPL et open source
-  Distributions et versions de Linux
-  Architecture du noyau Linux

Programmation Linux Noyau
-  Outils de développement
outils de compilation
sources de documentation
makefile
-  Développement des modules noyaux
différences entre applications utilisateur et noyau
écriture d’un module noyau (licence, paramètres, exportation de symboles)
chargement et gestion des versions des modules noyau
-  Présentation des structures objets du noyau Linux
kobject, kset
-  Debug noyau
traces dans le code noyau (printk)
messages Oops !
patchs permettant le debug noyau (kgdb, ikd)

-  Allocation mémoire
algorithme d’allocation mémoire buddy et slab/slob/slub
allocations bloquantes ou "atomiques"
limitations de l’allocation dynamique et intérêt de l’allocation statique au boot
-  Boot des drivers
zones mémoire d’allocations des drivers
allocation dynamique et au boot

Multi-tâches Noyau
-  Gestion des tâches
task struct
pile noyau et détermination de la tâche courante (macro "current")
quotas d’utilisation des ressources (temps CPU, occupation mémoire, fichiers ouverts...)
-  Programmation concurrente
quand et comment masquer la préemption
spinlocks (simples et "lecture/écriture")
seqlocks (nouveaux en 2.6)
sémaphores
RCU (nouveaux en 2.6)
-  Timers
jiffies
timers haute résolution
-  Envoi de signaux

Introduction aux drivers Linux
-  Intégration d’un pilote dans les sources de Linux
fichiers Makefile du noyau
fichiers Kconfig (description de l’interface de configuration du noyau)
-  Concepts des pilotes Linux
Pilote en mode utilisateur/pilote en mode noyau
numéros majeur/mineur et devnums (nouveau en 2.6). Fichiers spéciaux
installation d’un pilote
structures associées aux pilotes (struct inode, struct file, file descriptor)
-  Transferts de mémoire entre espace noyau et espace utilisateur

Pilotes caractère
-  Ouverture/fermeture
Restriction à une seul ouverture/un seul utilisateur
différence entre "close" et "release"
-  Transferts de mémoire entre espace noyau et espace utilisateur
différences entre adresses virtuelles, logiques, physiques et bus
espaces d’adressage des processus. Swap et pagination
fonctions de copie entre espaces
fonctionnement en "zéro copie" grâce au mapping d’adresses utilisateur dans le noyau
-  Lecture et écriture
fonctions de base (read/write)
lecture/écriture combinées (readv/writev)
fonctions asynchrones en mode synchrone (aio_read/aio_write)
-  Contrôle des périphériques
fonction ioctl
choix des codes de commandes

Entrées sorties synchrones et asynchrones
-  Synchronisation des tâches
files d’attente
mise en attente/réveil d’une tâche
attente exclusive
attente sur un bit (nouveau en 2.6)
évènement de complétion
-  Entrées/sorties synchrones
-  Entrées/sorties asynchrones
requêtes non bloquantes
asynchrone multiplexé (select et poll)
asynchrone notifié (signal SIGIO)
asynchrone vrai (totalement parallèle)

Accès au matériel et interruptions
-  Accès aux registres des périphériques
Espace d’IO et espace de mémoire physique
réservation et utilisation des ports d’IO (espace d’IO)
réservation et utilisation des plages d’IO en espace physique
mapping des registres dans un pilote
problèmes d’optimisation (cache, out-of-order, volatile)
-  Direct Memory Access (DMA)
Slave DMA (ISA)
DMA Bus Master (PCI)
mapping d’un buffer noyau dans l’espace du périphérique
intérêts des mappings permanent ("coherent mapping") et temporaire ("streaming DMA")
-  Spécificités des interfaces PCI
énumération
espace de configuration
association dynamique pilote/périphérique (hotplug)
-  Interruptions
cas du SMP
IRQ, ISR, "top half" et "bottom halves" (softirq, tasklet, work_queue)
contexte d’exécution des gestionnaires d’interruption (atomique)
partage d’interruptions
synchronisation entre code noyau, "top half" et "bottom halves"
fonctions atomiques

Pilotes bloc
-  structures
représentation d’un disque (struct gendisk)
file des requêtes (struct request queue)
-  interface
chargement/déchargement (open/release)
gestion des media amovibles
contrôle (ioctl). Ioctl de description de la géométrie du disque
-  routine de stratégie
relation entre lecture/écriture et routine de stratégie
algorithmes d’ordonnancement des requêtes ("elevators")
structures décrivant les requêtes (struct bio et bio_vec)

Pilotes réseaux
-  structures
représentation d’une interface réseau (struct net_device)
paquet réseau (struct sk_buff)
-  Cas du "scatter/gather"
-  interface
réception de paquet
envoi de paquet
gestion des paquets perdus
statistiques de l’interface
-  Nouvelles API réseau (NAPI, nouveau en 2.6)
"interrupt mitigation" (suppression des IRQ inutiles)
"paquet throttling" (désengorgement des couches protocolaires)

Pilotes USB
-  La norme USB
notion de configuration
notion d’interface (rôle d’un périphérique)
notion de terminaison (canal de communication)
types des terminaisons (contrôle, interruption, bloc, isochrone)
-  Drivers USB host
requêtes synchrones (directes)

Durée : 4 jours

Dates : 19-22 janvier 2010, 16-19 février 2010, 23-26 mars, 27-30 avril 2010, 25-28 mai 2010, 22-25 juin 2010, 20-23 juillet 2010

Prix : 1900 Euros HT

Les cours ont lieu chez notre partenaire AC6-Formation, à 5 mn da la Gare de La Défense.

Contactez nous :


5 BIS RUE GAMBETTA
92140 CLAMART
FRANCE

TEL : 33 (0)1 46 38 71 81
FAX : 33 (0)1 46 38 30 70
E-mail : formation@amtdata.com


Dans la même rubrique :
Formation Linux : Drivers Linux
Formation Nagios
Formation Linux : programmation Linux
Formation Linux : parefeu/Proxy Linux
formation Linux : Le shell
Formation Linux : Administration Linux
Formation Linux : Serveur de fichiers SAMBA sur Linux
Formation Linux : Linux embarqué
Formateurs
Formation Linux : linux réseau




Nous contacter | Plan du site | Admin | Accueil