Articles

Mac

Unix, la partie immergée de l'iceberg

Par Mathieu Godart - Publié le

Naissance et vie du dinosaure



Unix est né dans les laboratoires de AT&T, les célèbres Bell Laboratories, en 1969. Il a évolué jusqu'en 1977, date à laquelle il a été scindé en plusieurs versions : Bell Labs Research, Berkeley Software Distribution (BSD, la base de Mac OS X), PWB (qui donna naissance à System V).

Unix, la partie immergée de l'iceberg


Depuis, Unix a donné naissance à de nombreux autres systèmes : Solaris (de Sun), AIX (d'IBM), A/UX (l'ancien Unix d'Apple), FreeBSD, Plan 9, XENIX... Et aujourd'hui, Mac OS X. Mais pour comprendre ce qui a permis son essor, nous devons remonter jusqu'à sa conception.

Une portabilité historique



Dans les années 60, les systèmes d'exploitation étaient écrits en assembleur, le langage le plus proche de la machine. Ils étaient donc fort dépendants du matériel pour lequel ils avaient été conçu. Unix fût lui développé à 90% en langage C et à 10% en assembleur. Le C étant standardisé et des compilateurs C existant pour toute les plate-formes matérielles, le système d'exploitation de Bell à pu être adapté à beaucoup de machines.

Le code source était même distribué avec Unix, chose qui n'existait pas pour les autres systèmes de l'époque. Cette particularité permettait aux clients de corriger ses bogues, de l'adapter à leurs besoins et de lui ajouter des fonctions.

C'est ainsi que diverses versions d'Unix se retrouvèrent sur Mac, PC, Sun Sparc et sur beaucoup d'autres stations de travail. Mais cette formidable portabilité ne fût pas le seul facteur de son "succès" (auprès des informaticiens).

Les fonctions avancées



Vieux mais robuste !


La stabilité d'Unix est désormais légendaire. Il a été développé par des ingénieurs extrêmement qualifiés et il est en constant évolution depuis sa création (grâce à la disponibilité de son code source). De plus, Unix est constitué de deux couches, lui permettant d'avoir une base plus robuste :

- Le kernel (noyau ou micro-noyau) : c'est elle qui contient les fonctions de base comme la gestion du réseau (voir plus bas), de la mémoire, des processus, la gestion des fichiers et des périphériques (gérés sous Unix comme des fichiers)...
- La couche user (utilisateur) : c'est ce que vous allez voir, elle contient l'interface utilisateur, les compilateurs...

Unix, la partie immergée de l'iceberg


Les différentes couches de Mac OS X


Il est primordial de comprendre que si Mac OS X plante quelques fois et manque (encore) de réactivté, cela provient principalement de la couche utilisateur (Quartz, le Finder...), mais rarement de son micro-noyau Mach (sauf lors des kernel panics).

Le multitâche


Le système d'AT&T est depuis toujours multitâche. C'est à dire qu'il sait découper le temps de calcul du processeur en "quanta" pour ensuite les répartir à différents processus. Au final, l'utilisateur a l'impression que plusieurs opérations se déroulent simultanément, et ce, même sur des machines mono-processeur.

Cette gestion du temps CPU est très utile car elle accroit énormément le confort d'utilisation du système. Lorsque vous tapez du texte, par exemple, le processeur est très peu sollicité (moins de 1%). Grâce au multitâche, d'autres opérations peuvent utiliser le temps de calcul disponible (pour lire de la musique, décompacter des fichiers, gérer le réseau...).

Le réseau et TCP/IP


Jusque dans les années 90, les systèmes d'exploitation grand publique (typiquement Mac OS et MS-DOS) n'étaient pas multitâches. Or, pour qu'un serveur soit rentable, il doit être capable d'accueillir plusieurs clients et doit pour cela pouvoir gérer de nombreux processus (au moins un par client). Unix était donc le seul système susceptible de faire tourner un serveur. Le fait que TCP/IP (protocoles réseau) soit au coeur d'Unix a également joué un grand rôle dans son adoption dans le milieu des réseaux.

Pour toutes ces raisons, Unix s'est rapidement imposé chez... les scientifiques, les informaticiens et pour l'administration des réseaux. Mais son champ de domination s'arrêtait bien là ; monsieur tout le monde ignorait jusqu'à l'existance de la "bête".

Un système d'informaticiens



Reconnaissons-le, Unix n'a jamais été un système taillé pour le grand publique. Aucune interface utilisateur aboutie et uniformisée n'a jamais vu le jour. L'utilisation des fonctions d'Unix passaient souvent par des lignes de commandes rebuttantes.

Unix, la partie immergée de l'iceberg


Le slogan d'Apple pour Mac OS X


L'effet du cercle vicieux aidant, les softs développés pour les Unix ne s'adressaient en général qu'aux professionnels de l'informatique ou aux scientifiques (grand consommateurs de temps calculs, ils devaient s'orienter vers des stations de travail sous Unix).

Aucun constructeur n'avait donc réussi à "amener la puissance d'Unix au commun des mortels". Les Linux restaient toujours un peu hermétiques pour les novices, Solaris (le système de Sun) n'était utilisé que par les babasseurs, et Microsoft n'avais jamais tenté l'expérience. Mais si vous avez testé Mac OS X, vous savez certainement qu'Apple est sur la voie de la réussite.

Les licences et le cas Linux...



Mais avant de parler de Mac OS X, voyons ce que Linux vient faire au milieu de tout ça. Unix n'est pas à proprement parlé un système d'exploitation, vous ne trouverez jamais "Unix" dans une boutique. Il s'agit plutôt d'une base pour l'élaboration de systèmes plus complets. Les constructeurs désirant utiliser cette base (le code source Unix de AT&T) doivent payer un droit de licence à USL (Unix System Laboratories, l'organisme chargé de l'évolution d'Unix). Ils y ajoutent ensuite leurs propres technologies, leurs améliorations, leur interface utilisateur...

Pour ne pas avoir à payer les droits d'utilisation du code source d'Unix, il suffisait de... le réécrire ! Si quelqu'un pouvait réécrire un système supportant les mêmes API qu'Unix (en partie les API POSIX), il n'aurait rien à payer à USL. C'est dans cette optique que furent développés le noyaux Mach, Coherent, Whitesmith, CRDS et Chorus.

Unix, la partie immergée de l'iceberg


Mach 3.0 est le noyau Unix de Mac OS X


Linux est un système d'exploitation construit sur un noyau monolithique supportant les interfaces de programmation d'Unix, mais n'utilisant pas une seule ligne de code d'USL. Par conséquent, Linux n'est pas un Unix (Unix est une Registered Trademark d'Unix System Laboratories), mais il en a tous les attributs et tout le monde le considère comme tel, n'en déplaise à USL.

Mac OS X, le cheval de troie "Unixien"



Mac OS X est basé sur le noyau Darwin, lui même fondé sur le micro-noyau Mach 3.0 et l'OS BSD4.4. La mémoire protégée, le multitâche préemptif, la mémoire virtuelle avancée et l'aspect temps réel sont assurés par Mach. Avec lui, on trouve BSD (Berkley Software Distribution), un système supportant les API POSIX et qui est utilisé par Mac OS X pour la gestion du réseau, le format des processus et des threads, etc.

Darwin est Open Source, ce qui signifie que chacun peut participer à son développement. Par ce choix, Apple espère améliorer et stabiliser son système le plus rapidement possible.

Bibliographie :


- Unix, POSIX and Open Systems, Quarterman & Wilhelm, Addison Publishing Company.
- Polycopiés de cours d'architecture des systèmes d'exploitations de la BCI à l'ENST.
- Inside Mac OS X : System Overview, par Apple, présent sur le site de Mac OS X.