High Tech

Qu’est-ce qu’un noyau et pourquoi est-il important ?

Qu'est-ce qu'un noyau ?  Android est un exemple de système d'exploitation qui utilise un noyau

C. Scott Brown / Autorité Android

Passer assez de temps autour Android, ou même des PC, et vous finirez par rencontrer le terme « le noyau Linux ». Android utilise également le noyau Linux. En fait, cela fait partie intégrante du fonctionnement de votre téléphone, mais qu’est-ce que c’est ?

La partie « Linux » est assez facile à comprendre – c’est un jeu de mots entre Linus et Unix, comme dans Linus Torvalds, le créateur original du système d’exploitation de type Unix que nous appelons Linux. Mais noyau? Qu’est-ce qu’un noyau dans les ordinateurs et autres appareils ? Qu’entendons-nous par noyau Linux ? Découvrons-le!

En un mot, un noyau est le programme principal qui gère les ressources CPU de votre téléphone, la mémoire système et les périphériques système (y compris les systèmes de fichiers et la mise en réseau). Il est également chargé de gérer tous les processus ou tâches qui s’exécutent sur votre smartphone. Cela signifie que lorsque vous démarrez une application, c’est le noyau qui charge l’application en mémoire, crée les processus nécessaires et démarre l’exécution de l’application. Lorsqu’une application a besoin de mémoire, c’est le noyau qui l’alloue. Lorsque l’application veut la mise en réseau, c’est le noyau qui effectue tout le traitement de bas niveau.

Un noyau est le programme principal qui gère les ressources CPU, la mémoire et les périphériques système de votre téléphone.

Le pilote pour des périphériques comme Bluetooth est également dans le noyau. Lorsque l’application souhaite effectuer une tâche en arrière-plan, c’est le noyau qui gère les threads d’arrière-plan. Lorsque l’application se ferme, c’est le noyau qui nettoie toute la mémoire et les autres ressources utilisées par l’application. Comme vous pouvez le voir, un noyau est un élément fondamental qui garantit que votre téléphone Android fait réellement ce que vous attendez.

Qu’est-ce qu’un noyau : un examen plus approfondi

Tous les systèmes d’exploitation multitâches ont un noyau d’une forme ou d’une autre. Windows a un noyau, OS X a un noyau, iOS a un noyau, et bien sûr Android a un noyau. Mais parmi ceux-ci, seul Android utilise le noyau Linux. Windows a son noyau, souvent appelé noyau NT, tandis que OS X et iOS utilisent un noyau appelé Darwin.

Il existe d’autres noyaux, y compris des noyaux de type Unix des projets FreeBSD, OpenBSD et NetBSD ; noyaux en temps réel de projets comme FreeRTOS ; noyaux intégrés de projets comme Zephyr ; et même des noyaux à faible consommation comme le noyau mbed OS d’Arm. Cela signifie que tout appareil informatique, d’un objet IoT ou portable jusqu’à un superordinateur, utilise un noyau.

Tous les systèmes d’exploitation multitâches ont un noyau d’une forme ou d’une autre.

Le noyau Linux est un logiciel complexe. Il contient des millions de lignes de code source. Cela inclut tous les pilotes (la majorité du code) ainsi que le support des différentes architectures système (ARM, x86, RISC-V, PowerPC, etc.). Lorsque le noyau est construit pour un appareil particulier, disons un smartphone, tout ce code source n’est pas utilisé, mais même lorsque vous supprimez ce qui n’est pas nécessaire pour une construction particulière, cela reste complexe.

En rapport: Arm vs x86 – Ensembles d’instructions, architecture et toutes les différences clés expliquées

Monolithique vs micronoyau

balance équilibrée avec performance d'un côté et batterie de l'autre

Comme pour tous les systèmes complexes, différentes approches peuvent être utilisées pour concevoir un noyau. Le noyau Linux est ce qu’on appelle un noyau monolithique. Cela signifie que le noyau est un programme utilisant un espace mémoire. La principale alternative est l’approche micronoyau. Avec les micronoyaux, les éléments essentiels du noyau sont placés dans le plus petit programme possible et ils interagissent avec d’autres programmes au niveau du noyau qui s’exécutent en tant que serveurs ou services séparés.

En 1992, lorsque Linux en était à ses débuts, Linus Torvalds et le professeur Andrew Tanenbaum (qui est célèbre pour ses livres sur la conception de systèmes d’exploitation et les réseaux) ont eu une discussion en ligne (certains disent une guerre des flammes) sur les différents mérites des conceptions de noyaux monolithiques par rapport aux micronoyaux. Tanenbaum préférait les micronoyaux et Linus écrivait un noyau monolithique. C’est maintenant de l’histoire ancienne car Linux est resté un noyau monolithique, tout comme le noyau utilisé dans Android. Si vous êtes intéressé par un système d’exploitation à micronoyau de type Unix, vous devriez vérifier Minix 3.

Structure monolithique vs micronoyau OS

Étant donné que Linux est un noyau monolithique, il doit y avoir un moyen d’activer et de désactiver certaines parties du noyau en fonction de vos besoins. Cela se fait au moment de la compilation à l’aide d’un système qui permet au noyau d’être réglé, coupé et configuré selon les besoins. Certaines configurations font plus que simplement activer ou désactiver certaines fonctions – elles modifient en fait le comportement du noyau. Ceci est utile lorsqu’il s’agit de créer et de modifier les fonctionnalités matérielles du smartphone.

Comme Linux est open-source, et parce que le cœur d’Android est lui-même open-source grâce au Projet Open Source Android (AOSP), il existe une communauté de développeurs et de passionnés qui proposent des noyaux alternatifs pour les smartphones Android. Cependant, leur popularité et leur disponibilité dépendent de la marque et du modèle exacts de votre appareil.

Comment Android utilise Linux

Écran d'aperçu du développeur Android 12 affichant la version S d'Android

Jimmy Westenberg / Autorité Android

En apparence, Android est un bon lanceur, certaines applications comme le navigateur Web Chrome ou vos applications de médias sociaux, et peut-être certains jeux. Mais il se passe plus qu’il n’y paraît. Sous l’interface utilisateur, il existe de nombreux sous-systèmes, bibliothèques et frameworks.

Pour que les applications s’exécutent (en mode natif ou dans une machine virtuelle Java), Android fournit de nombreuses bibliothèques et cadres pour des éléments tels que les notifications, les services de localisation, les polices, le rendu Web, SSL, la gestion des fenêtres, etc. Il existe également un service spécial appelé SurfaceFlinger, qui est chargé de composer toutes les différentes choses qui doivent être dessinées dans un seul tampon qui est ensuite affiché à l’écran.

Architecture du système Android, y compris les services système du framework d'applications, le noyau Linux

Sous les bibliothèques et frameworks spécifiques à Android se trouve le noyau Linux. En plus de gérer les processus, la mémoire et la gestion de l’alimentation, le noyau Linux contient du code pour toutes les architectures de puces et les pilotes matériels qu’il prend en charge. Ces pilotes incluent les caméras, Bluetooth, Wi-Fi, mémoire flash, USB et pilotes audio.

Voir également: Toutes les fonctionnalités d’Android 12 que vous devez connaître

Android ajoute également des fonctionnalités spéciales au noyau Linux pour le rendre plus adapté aux smartphones. Ceux-ci incluent le Low Memory Killer, un processus qui surveille l’état de la mémoire et réagit aux demandes de mémoire élevées en supprimant les processus les moins essentiels et maintient ainsi le système en marche, et les wakelocks, un moyen pour les applications de dire au noyau que l’appareil doit rester dessus.

Android ajoute des fonctionnalités spéciales au noyau Linux pour le rendre plus adapté aux smartphones.

Android 8.0 introduit Projet Aigus, une réarchitecture d’Android qui a créé une interface bien définie entre le cadre du système d’exploitation et le logiciel de bas niveau spécifique à l’appareil. À l’aide des modules du noyau Linux, le SoC et les pilotes spécifiques à la carte ont été séparés du noyau principal, ce qui signifie que les fabricants de smartphones pouvaient travailler sur des fonctionnalités spécifiques d’un appareil sans avoir besoin de modifier le noyau principal. Treble a été conçu pour permettre aux fabricants de mettre à jour plus facilement leurs smartphones sans se soucier du code de bas niveau.

Perf du noyau Linux 4.19.110 du smartphone OnePlus Android 11

Gary Sims / Autorité Android

Comment les fabricants de smartphones modifient-ils le noyau ?

En raison de la grande diversité des appareils Android, le noyau exécuté sur chaque marque et modèle sera légèrement différent. Il y aura des pilotes spécifiques pour le SoC, ainsi que pour d’autres modules comme le GPS, l’audio, etc. Chaque fabricant de smartphone travaillera avec le fournisseur de SoC (Qualcomm, MediaTek, etc.) pour configurer le noyau de la manière la plus optimale pour tout modèle particulier. Cela signifie que les fabricants de smartphones travailleront souvent sur des fonctionnalités spécifiques à l’appareil, remplaceront les configurations de noyau communes et ajouteront de nouveaux pilotes au noyau Linux.

Un bon exemple d’un tweak commun est le planificateur CPU. Lorsque le noyau doit décider quelle tâche doit s’exécuter ensuite et sur quel cœur de processeur, il utilise un planificateur. La plupart des smartphones Android sont des systèmes multiprocesseurs hétérogènes (HMP). Cela signifie que tous les cœurs du processeur ne sont pas égaux. Certains sont performants, tandis que d’autres offrent une plus grande efficacité énergétique. En utilisant l’Energy-Aware Scheduler (EAS), le noyau peut prédire l’impact de ses décisions sur l’énergie consommée par les CPU, ainsi que le niveau de performance disponible.

Chaque smartphone a un noyau légèrement différent qui s’adapte à son matériel unique.

Les paramètres de l’EAS peuvent être modifiés par les fabricants de smartphones pour favoriser de meilleures performances tout en utilisant plus d’énergie, ou des performances inférieures tout en économisant la batterie. Les fabricants de smartphones ont également la possibilité de remplacer le planificateur par l’un de leurs propres concepteurs.

Cela dit, les fabricants de smartphones ne sont pas au-delà de faire des erreurs ou de prendre de mauvaises décisions sur la façon dont ils configurent le noyau Linux. Les OEM sont connus pour utiliser des configurations trop agressives dans la poursuite d’une bonne autonomie de la batterie. Par exemple, OnePlus a été pris étrangler les performances du OnePlus 9 Pro pour préserver la durée de vie de la batterie, tandis que d’autres sont connus pour tricher et augmenter artificiellement les performances du processeur lorsqu’un benchmark est en cours d’exécution.

L’avenir de la façon dont Android utilise le noyau Linux

L’un des aspects négatifs du succès de Linux est qu’il change rapidement. Pour fournir un niveau de stabilité, il existe des versions de support à long terme (LTS) du noyau qui sont prises en charge pendant plusieurs années. Les Android Common Kernels (ACK) sont extraits du noyau Linux principal et incluent des correctifs spécifiques à Android.

À partir d’Android 11, les ACK sont utilisés pour créer des images de noyau génériques (GKI). Ce sont des noyaux Arm 64 bits qui peuvent être utilisés sur n’importe quel appareil, si le SoC et la prise en charge des pilotes sont implémentés dans les modules du fournisseur. L’idée est de résoudre le problème de la fragmentation du noyau en unifiant le noyau central et en déplaçant les parties spécifiques au SoC hors du noyau et dans des modules chargeables. Cela réduira à son tour la charge de maintenance du noyau pour les OEM, tout en séparant les composants spécifiques au matériel du noyau central.

L’un des aspects négatifs du succès de Linux est qu’il change rapidement.

Android 12 a vu la première version de certains appareils avec des noyaux GKI. Google s’est engagé à publier régulièrement des images de démarrage signées avec des corrections de bogues critiques. En raison de la stabilité binaire offerte par les GKI, ces images peuvent être installées sans modification des images des fournisseurs.

Le résultat sera une amélioration de la façon dont Google peut publier de nouveaux noyaux Linux pour une utilisation générale, ce qui à son tour contribuera à améliorer la sécurité et a le potentiel d’augmenter le nombre d’années pendant lesquelles un appareil reçoit des mises à jour et des correctifs. Doigts croisés.

Suivant: Que sont les mises à jour de sécurité Android et pourquoi sont-elles importantes ?


Source link

Articles similaires

Bouton retour en haut de la page