Plan du cours
Introduction
- brève histoire de GNU/Linux
- licence
- version du noyau
- cycle de publication
- arbres du noyau
- ligne principale
- Noyau vs. espace utilisateur
- mécanisme vs. politique
- alternatives aux pilotes de noyau
- RTOS vs Linux
Mémoire Management
- Mémoire virtuelle vs. mémoire physique
- allocation de mémoire dans le noyau
- pages
- zones
- API
- dalle
Patch du noyau
- cycle de vie
- git
- source du noyau
- créer un patch
- vérifier le patch
- corriger le correctif
- expédier le correctif
- code audité
Modules du noyau
- obtenir les sources du noyau
- configurer/construire/installer
- pilotes de périphériques (liés statiquement, chargés au moment de l'exécution)
- initialiser/quitter
- octroi de licences
- EXPORTER LES SYMBOLES GPL
- Makefile hors de l'arbre
- module-init-tools
- module dans l'arbre du noyau
- Kconfig
- passage de paramètres
- clairsemé
Pilotes Char
- architecture
- interface utilisateur/noyau
- Sous-système E/S
- VFS
- sysfs (périphériques, bus, pilotes, classes),
- kobject/ktype/kset
- modèle de pilote du noyau linux
- fichiers de périphériques
- pilote char
- initialisation
- enregistrement
- ouvrir, libérer
- cdev, cdev add, cdev del,...
- numéros majeurs/mineurs
- udev, udevmonitor, udevadm
Opérations avancées sur les pilotes de caractères
- ioctl
- ioctl déverrouillé
- compat ioctl
- API de l'espace utilisateur
- API de l'espace noyau
- cycle de vie du processus
- sommeil/blocage
- sommeil/réveil
- file d'attente
- troupeau de tonnerre
- poll/select
Débogage du noyau
- bug
- débogage
- débogage du noyau
- recherche binaire avec git
- support de débogage du noyau
- printk syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
- débogage par interrogation de debugfs
- débogage d'oops, affirmation d'oops
- Clé magique SysRq
- kgdb/kdb
- JTAG
Traçage
- gcov
- lcov
- oprofile
- ftrace
- traceur nop
- traceur de fonctions
- traceur de commutateur d'ordonnancement
- Traceur de graphes de fonctions
- traceur dynamique
- trace-cmd/kernelshark
- perf
- LTTng
Interruptions
- interruptions vs. polling
- interruption
- sections de programme
- réentrance
- événements
- gestionnaire d'interruption
- gestionnaire d'interruptions partagé
- flux d'interruptions
- contrôle des interruptions
Report du travail
- moitiés supérieure et inférieure
- softirqs
- tasklets
- files d'attente
- Interruptions threadées
Concurrence
- région/section critique
- atomique
- condition de course
- synchronisation
- verrouillage
- solutions de verrouillage
- blocage
- contention
- que verrouiller ?
- que peut-on utiliser ?
- opérations atomiques
- verrous de rotation
- verrous de rotation lecteur-écrivain
- sémaphore
- sémaphore binaire
- mutex
- sémaphore lecteur-écrivain
- variables d'achèvement
- verrous séquentiels
- désactiver la préemption
- ordre et barrières
Temps
- HZ
- Jiffies
- grands/petits délais
- minuteries du noyau
E/S matérielles
- Ports d'E/S
- Mémoire E/S
- Comment gérer les effets de bord lors de l'accès aux registres ?
Utilisateur-Noyau Communication
- put(get)_user()
- copy to(from)_user()
- E/S du noyau
- cartographie de la mémoire
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilité
- taille des mots
- types opaques
- caractères signés/non signés
- alignement des données
- promotion intégrale
- réutilisation du code
- endianité
- tique du système
- taille de la page
- ordre des instructions
- SMP/préemption/mémoire élevée
Sauf indication contraire, le contenu et ce plan de cours sont placés sous licence Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Pré requis
- Connaissance de base de l'utilisation d'un système GNU/Linux en tant qu'utilisateur final
- Connaissance de base d'un shell en ligne de commande
- Connaissance de base de l'espace utilisateur et du développement d'applications
- Connaissance intermédiaire de la programmation en C
- Avoir déjà participé à Embedded GNU/Linux Systems Architecture (fortement recommandé !) et/ou avoir une bonne compréhension des sujets abordés.
Nos clients témoignent (5)
Edward est un facilitateur hors pair
Zibusiso Ncube - Agricatural Research Council
Formation - Ionic 4 and Angular for Developers
Traduction automatique
Peut-être que plus d'exercices seraient mieux pour l'apprentissage, mais le temps était trop court.
Gianpiero Arico' - Urmet Spa
Formation - Embedded Linux Systems Architecture
Traduction automatique
Le savoir de Miguel sur le sujet était vaste. Il a rendu la formation facile à comprendre et le déroulement était équilibré ; ajoutant de nouvelles fonctionnalités à chaque section au fur et à mesure des besoins. Il a abordé tout ce qui avait été demandé et a répondu en détail à chacune des questions. C'était une expérience très agréable.
Paul Coaton - SEMPCheck Services
Formation - Flutter Development Bootcamp with Dart
Traduction automatique
J'ai trouvé le contenu (à la fois théorique et pratique) excellent et exactement ce dont nous avions besoin et ce que nous attendions. Les exercices étaient challengants mais réalisables.
Mike Kleinau - iVolve
Formation - Introduction to Embedded Linux (Hands-on training)
Traduction automatique
Le formateur était enthousiaste, gentil et passionné par le sujet
Isaac Murphy - Royal New Zealand Airforce
Formation - Build Native iOS and Android Apps with Flutter
Traduction automatique