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
Que le formateur s'adapte à nos besoins
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Formation - The Yocto Project - An Overview - hands-on
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