L'architecture Unix se caractérise par sa simplicité, son élégance et sa modularité. Il n'existe pas d'architecture unique et rigidement définie, car différents systèmes de type Unix (y compris Linux) ont leurs propres implémentations, mais les principes fondamentaux restent cohérents. Voici les aspects clés :
1. Noyau :
* Noyau monolithique : Le cœur du système Unix. Il gère les ressources du système (CPU, mémoire, périphériques d'E/S), fournit des appels système pour que les programmes de l'espace utilisateur interagissent avec ces ressources et gère les processus. Cela contraste avec les micro-noyaux, où davantage de fonctionnalités résident dans l’espace utilisateur.
* Architecture en couches (dans de nombreuses implémentations) : Bien qu'ils ne soient pas strictement appliqués sur tous les systèmes Unix, beaucoup présentent une architecture en couches dans laquelle différents modules du noyau ont différents niveaux de privilèges et d'accès au matériel.
* Pilotes de périphérique : Modules au sein du noyau qui interagissent avec des périphériques matériels spécifiques, en extrayant leurs complexités des applications de l'espace utilisateur.
2. Coque :
* Interpréteur de ligne de commande : L'interface principale permettant aux utilisateurs d'interagir avec le système. Il prend des commandes en entrée et les exécute, souvent en appelant des programmes dans l'espace utilisateur. Les exemples incluent bash, zsh et ksh.
3. Appels système :
* Interface entre le noyau et l'espace utilisateur : Le seul moyen pour les programmes de l'espace utilisateur d'accéder aux services du noyau et aux ressources système consiste à utiliser des appels système. Cela fournit une interface bien définie et sécurisée.
4. Système de fichiers :
* Système de fichiers hiérarchique : Organise les fichiers et les répertoires dans une structure arborescente. Cela fournit un moyen cohérent d’accéder et de gérer les données. Les principales fonctionnalités incluent :
* Inodes : Structures de données représentant des fichiers et des répertoires, contenant des métadonnées telles que des autorisations et des horodatages.
* Répertoires : Fichiers spéciaux contenant des pointeurs vers d'autres inodes.
* Portabilité : La conception du système de fichiers facilite la portabilité entre différents systèmes Unix.
5. Utilitaires :
* Petits programmes spécialisés : Unix met l'accent sur l'utilisation de nombreux petits utilitaires à usage unique qui peuvent être combinés à l'aide de canaux et de redirection pour créer des fonctionnalités plus complexes. Cela favorise la modularité et la réutilisabilité.
6. Canalisations et redirection :
* Communication inter-processus : Mécanismes permettant aux programmes de communiquer entre eux en connectant leurs flux d'entrée/sortie standards. Cela permet des combinaisons puissantes d’utilitaires simples.
7. Bibliothèques :
* Code réutilisable : Les bibliothèques fournissent des fonctions et des structures de données pré-écrites que les applications peuvent utiliser, réduisant ainsi le temps de développement et favorisant la réutilisation du code.
En résumé : L'architecture Unix est basée sur une philosophie de conception simple mais puissante qui met l'accent sur la modularité, la portabilité et la combinaison de petits programmes spécialisés. Le noyau fournit les services de base, le shell assure l'interaction avec l'utilisateur et les utilitaires fournissent des fonctionnalités spécifiques. Cette conception en couches, associée à un système de fichiers robuste et à des mécanismes de communication inter-processus, s'est avérée très influente dans le développement de systèmes d'exploitation et de logiciels. Cependant, il est crucial de noter que « Unix » est un terme large englobant de nombreuses implémentations différentes et que les détails spécifiques peuvent varier considérablement.
|