Files
abonnel-www/51dc3827-ad16-4494-9f16-b279f8fd2a09/index.md
T
2026-05-16 09:07:26 +02:00

93 lines
10 KiB
Markdown

# Le noyau Unix
## Origines et contexte historique
**Unix** est un système d'exploitation multi-utilisateur et multi-tâche développé à partir de 1969 aux **Bell Labs** par **Ken Thompson**, **Dennis Ritchie**, et plusieurs autres chercheurs (notamment Douglas McIlroy, Joe Ossanna et Brian Kernighan). Il est né en réaction au projet Multics, jugé trop ambitieux et trop lourd, dont les Bell Labs s'étaient retirés en 1969. Thompson et ses collègues souhaitaient un système plus simple, plus élégant, exploitable sur des machines modestes — le premier prototype tourna d'ailleurs sur un PDP-7 quasiment hors d'usage.
Une décision capitale fut prise en 1973 : la réécriture quasi intégrale d'Unix en **langage C**, lui-même créé par Ritchie quelques années plus tôt. Cette rupture avec l'assembleur rendit Unix *portable* — une propriété quasi inédite pour un système d'exploitation à l'époque, où chaque OS était traditionnellement lié à une architecture matérielle. C'est en grande partie cette portabilité qui explique l'extraordinaire diffusion d'Unix dans les décennies suivantes, des *mainframes* aux serveurs, aux stations de travail, puis aux ordinateurs personnels et aux smartphones.
## Qu'est-ce qu'un noyau ?
Le **noyau** (*kernel*) est le composant central d'un système d'exploitation. C'est lui qui s'exécute en mode privilégié (*kernel mode*) et qui dispose d'un accès direct au matériel. Ses responsabilités principales sont :
- **La gestion des processus** : création, ordonnancement, terminaison, communication inter-processus (IPC).
- **La gestion de la mémoire** : allocation, pagination, mémoire virtuelle, protection des espaces d'adressage.
- **Le système de fichiers** : organisation, lecture et écriture sur les supports de stockage.
- **Les entrées/sorties** : gestion des pilotes de périphériques (disques, clavier, écran, carte réseau…).
- **La pile réseau** : implémentation des protocoles (TCP/IP, etc.).
- **La sécurité et les permissions** : isolation des processus, contrôle d'accès, séparation utilisateur/superutilisateur.
Les applications utilisateurs n'accèdent jamais directement au matériel : elles communiquent avec le noyau par des **appels système** (*syscalls*), qui constituent l'interface entre l'espace utilisateur et l'espace noyau.
## Caractéristiques du noyau Unix
Contrairement à ce qu'on lit parfois, le noyau Unix n'a jamais été « monothread » ni limité à un seul processeur. Dès l'origine, Unix était conçu pour faire tourner plusieurs processus en parallèle (multi-tâche préemptif) et pour servir plusieurs utilisateurs simultanément. Le support du **multiprocesseur symétrique (SMP)**, c'est-à-dire de plusieurs processeurs partageant la même mémoire, est apparu dans les Unix commerciaux dès les années 1980 (Sequent DYNIX, puis Solaris, AIX, etc.). Le multi-cœurs moderne n'est qu'une extension matérielle naturelle du SMP, déjà parfaitement géré par les noyaux Unix bien avant l'apparition des processeurs multi-cœurs grand public.
Le noyau Unix originel est qualifié de **monolithique** : tous ses services (gestion des processus, mémoire, fichiers, réseau, pilotes) s'exécutent dans le même espace d'adressage noyau. Cette architecture s'oppose à celle des **micro-noyaux** (comme Mach ou MINIX), où la majorité des services tournent en espace utilisateur et communiquent par messages. Les noyaux monolithiques sont généralement plus performants (moins de changements de contexte), mais réputés moins robustes en théorie, car une erreur dans un pilote peut faire tomber tout le système.
## Les trois grandes familles d'architecture
Il est utile de distinguer les trois architectures de noyaux que l'on rencontre dans la famille Unix :
- **Monolithique** : tout dans le noyau (Unix historique, BSD, Linux — ce dernier étant *monolithique modulaire* car il peut charger et décharger des modules dynamiquement).
- **Micro-noyau** : seulement les fonctions essentielles dans le noyau, le reste en espace utilisateur (Mach, MINIX, GNU Hurd).
- **Hybride** : compromis combinant un cœur de type micro-noyau avec des services intégrés à la manière monolithique (XNU de macOS/iOS, Windows NT).
## La famille Unix et ses ramifications
Au cours des années 1970 et 1980, Unix a essaimé en deux grandes branches :
- La branche **AT&T System V**, commerciale, à l'origine de la plupart des Unix propriétaires (Solaris, AIX, HP-UX…).
- La branche **BSD** (Berkeley Software Distribution), née à l'université de Californie à Berkeley, qui a donné naissance à FreeBSD, OpenBSD, NetBSD, mais aussi indirectement à macOS via NeXTSTEP.
Une distinction importante doit être faite entre les systèmes **certifiés UNIX** (au sens de la *Single UNIX Specification* gérée par The Open Group) et les systèmes **Unix-like**. macOS, AIX, HP-UX et Solaris sont des UNIX certifiés. Linux, malgré son omniprésence, est un Unix-like : il respecte largement la norme **POSIX** mais n'a jamais été soumis à certification. Cette norme POSIX, justement, est ce qui permet aujourd'hui à un programme écrit pour un Unix de fonctionner avec peu ou pas de modifications sur les autres.
## Panorama des principaux noyaux Unix et Unix-like
### Linux
Le **noyau Linux** a été créé en 1991 par **Linus Torvalds**, alors étudiant à l'université d'Helsinki. Contrairement à une idée répandue, Linux n'est pas dérivé du code d'Unix : il a été écrit *from scratch*, inspiré par MINIX et par les concepts d'Unix, mais sans en partager le code source. Distribué sous licence GPL, il est aujourd'hui développé par une vaste communauté coordonnée par la *Linux Foundation*.
Architecturalement, Linux est un **noyau monolithique modulaire** : il peut charger et décharger des modules à chaud (pilotes, systèmes de fichiers, protocoles réseau). Il alimente une diversité impressionnante de systèmes : distributions GNU/Linux (Debian, Ubuntu, Fedora, Arch…), Android (qui utilise le noyau Linux avec une couche utilisateur entièrement spécifique), Chrome OS, la quasi-totalité des serveurs d'Internet, la grande majorité des supercalculateurs, et d'innombrables systèmes embarqués.
### BSD et ses descendants
Les systèmes **BSD** (Berkeley Software Distribution) sont issus des travaux de l'université de Berkeley sur Unix dans les années 1970-1980. Après le procès AT&T contre Berkeley, qui s'est soldé au début des années 1990 par la confirmation que la majeure partie du code BSD était libre, plusieurs projets se sont développés indépendamment :
- **FreeBSD** : orienté performance et large compatibilité matérielle, utilisé notamment par Netflix pour son infrastructure de streaming.
- **OpenBSD** : focalisé sur la sécurité et l'audit de code, à l'origine d'outils largement adoptés comme OpenSSH.
- **NetBSD** : conçu pour la portabilité, fonctionnant sur des dizaines d'architectures matérielles.
- **DragonFly BSD** : fork de FreeBSD axé sur de nouvelles approches en matière de concurrence et de systèmes de fichiers.
Tous utilisent des noyaux monolithiques dérivés de la lignée BSD historique.
### XNU (macOS et iOS)
**XNU** (*X is Not Unix*) est le noyau utilisé par macOS, iOS, iPadOS, watchOS et tvOS. Son histoire remonte à **NeXTSTEP**, le système d'exploitation développé par NeXT à partir de la fin des années 1980 sous la direction de Steve Jobs après son départ d'Apple. Quand Apple a racheté NeXT en 1996, NeXTSTEP est devenu la base de ce qui allait devenir Mac OS X, sorti en version 10.0 en 2001.
XNU est un **noyau hybride** : son cœur dérive du micro-noyau **Mach** (développé à l'université Carnegie Mellon dans les années 1980), auquel sont intégrés des composants issus de **FreeBSD** (notamment pour la pile réseau, le système de fichiers et l'interface POSIX), plus des pilotes et services spécifiques à Apple. Contrairement à Linux, macOS est officiellement certifié UNIX.
### Solaris
Développé à l'origine par **Sun Microsystems** dans les années 1990 (succédant à SunOS, lui-même dérivé de BSD), **Solaris** a été repris par **Oracle** lors du rachat de Sun en 2010. C'est un Unix System V doté de fonctionnalités avancées comme **ZFS** (système de fichiers révolutionnaire), **DTrace** (instrumentation dynamique du noyau) et **les zones** (forme précoce de conteneurisation). Il tourne principalement sur les architectures SPARC et x86-64. Un fork open source, **illumos**, est apparu en 2010 et continue d'être maintenu (OpenIndiana, SmartOS).
### AIX
**AIX** (*Advanced Interactive eXecutive*) est l'Unix d'**IBM**, lancé en 1986. Basé sur System V avec des apports BSD, il équipe les serveurs IBM Power Systems et reste très présent dans les environnements d'entreprise, notamment bancaires.
### HP-UX
Développé par **Hewlett-Packard** (aujourd'hui Hewlett Packard Enterprise), **HP-UX** est également un dérivé de System V. Il fonctionne sur les serveurs HP 9000 (PA-RISC) et HP Integrity (Itanium). Son avenir est incertain depuis l'abandon progressif d'Itanium.
### IRIX
**IRIX** était l'Unix de **Silicon Graphics (SGI)**, célèbre dans les années 1990 pour ses stations de travail graphiques utilisées dans le cinéma et la 3D professionnelle. Basé sur System V et tournant sur l'architecture MIPS, il n'est plus maintenu depuis 2006.
### Autres noyaux notables
- **GNU Hurd** : tentative ancienne et toujours en développement (depuis 1990 !) d'un noyau de type micro-noyau pour le projet GNU.
- **MINIX** : système éducatif créé par Andrew Tanenbaum, qui a inspiré Linus Torvalds. La version 3 est un véritable micro-noyau utilisé notamment, de manière discrète, dans le *Management Engine* des processeurs Intel.
## Conclusion
Cinquante-cinq ans après sa création, Unix demeure le socle conceptuel d'une part écrasante de l'informatique mondiale : serveurs, smartphones (Android et iOS sont tous deux Unix-like), supercalculateurs, équipements réseau, systèmes embarqués. La philosophie originelle — petits outils composables, tout est fichier, interfaces textuelles uniformes — continue d'influencer la conception logicielle bien au-delà des systèmes qui s'en réclament directement. Le noyau Unix n'est plus une entité unique mais une famille de noyaux apparentés, fruit d'une histoire technique et juridique riche, et toujours en évolution.