Architecture et Technologies de Mac Os X

Architecture de Mac OS X

 

Problématiques et Besoins

A l'origine, Apple a conçu MacOs dit “Classic”, celui-ci fut été utilisé de 1984 à 2003 (version 9.2). Bien qu'à l'origine, il fut le précurseur des systèmes d'exploitation à posséder une interface graphique conviviale, il a été progressivement devancé par les technologies concurrentes. En particulier, sa gestion de la mémoire et ses capacités multitâches ne parvenaient plus à supporter les besoins croissants de l'informatique en milieu professionnels et les besoins multimédias réclammés par les utilisateurs.

De plus, ses origines anciennes l'on rendu difficilement évolutif et peu portable sur de nouvelles architectures. En effet, pour optimiser les performances du système afin qu'il fonctionne sur des machines dotées de très peu de RAM et des processeurs cadensés à quelques MegaHertzs, Apple fut dans l'obligation de l'écrire majoritairement en asseubleur.

Il leurs fallait donc trouver une solution de remplacement pour ce système afin de combler les lacunes qui pesaient sur son image. Cependant, Apple devait conserver la philosophie de MacOs Classic dans son nouveau système. En particulier, Il lui faut réécrire un "Finder". en effet, celui-ci est le cœur de l'interface utilisateur et représente à la fois le bureau et le gestionnaire de fichiers. De plus, il faut conserver la simplicité d'utilisation qui a rendu célèbre MacOs auprès des utilisateurs grand public. L'ergonomie doit par conséquent être soignée tout comme le design général du nouveau système.

L'objectif de l'interface étant de minimiser le nombre d'opérations pour effectuer différentes actions lors de l'utilisation de l'ordinateur en laissant apparaître uniquement ce qui est indispensable et en cachant la complexité interne du fonctionnement de l’OS.
Enfin, il faut bien entendu que le nouveau système repose sur des bases solides afin de former un système "Moderne" technologiquement parlant. Cela implique qu'il doit inclure les technologies suivantes : mutitâches préemptif, gestion la mémoire protégée, capacités réseaux avancées, gestion mutiprocesseur, prise en compte de la sécurité, modularité, portabilité, etc.

Il fallait donc qu'Apple trouve une solution radicale pour reconstruire son avenir. Or, à l'issu de nombreuses tentatives de réecriture de MacOs entre 1990 et 1995 (Pink, Copland, Talos, Raptor...), et n'est ressorti des développements que des fragments de code inutilisables ainsi qu'une épouvantable situation financière pour la multinationnale.

En 1996, Apple, au bord de la faillite, s'est donc résignée à racheter un système d'exploitation existant. Ses recherches l'on ammené à discuter avec plusieurs sociétés :

- Sun à propos de Solaris,

- Be pour le système BeOs, bien que cette option fut très séduisant pour Apple : système rapide, fiable et proche de la phylosophie de MacOs, elle ne fut pas retenue à cause de désaccords sur le montant du rachat de l'entreprise,

- Next pour son système NextStep. Cette option fut finalement retenue, bien que coûteux, Next à permis à Apple de réintégré une personne d'importance pour sa survie : Steve Jobs, le fondateur de la firme à la pomme (Aussi CEO et créateur de Next). De plus, bien que peu vendu, NextStep est un système commercialement viable et reconnu par les professionnels.

Merge

 

Héritage(s) de Mac OS X

NextStep fut développé à partir de 1987. Celui-ci été à l'origine destiné au marché des professionnels (Vidéo, Audio, Press). Il repose sur des bases Unix et sur un noyau hybride basé sur le micro-kernel "Mach" (anciennement RIG) dont le developpement a debuté au milieu des années 70. NextStep s’appuie sur tous les fondamentaux Unix dont il reprend aussi la plupart de ses technologies : Phylosophies systèmes, APIs, sécurité, gestion des tâches, gestion de la mémoire...

De plus, NextStep était un système Orienté Graphique + Console et sa programmation est orientée objet et graphique via des APIs riches. NextStep dispose donc des fondamentaux nécessaires au renouveau d'Apple. Cependant, son orientation Unix ne correspond pas aux exigences ergonomiques voulues pour le nouveau MacOs. Il manque aussi au système un ensemble de fonctionnalités pour le rendre aussi complet que Mac OS classic au niveau applicatif et pour lui permettre de se démarquer de la concurrence. Il fallait aussi trouver un moyen de le rendre compatible - au moins temporairement - avec les anciennes applications de MacOS Classic.

Il faut donc que les développeurs d'Apple se mettent à l'ouvrage afin d'adapter ce système. Malheursement ce processus qui initialement devait durer 3 ans (1997 -1999), dura finalement 5 ans (1997 - 2001) afin d'atteindre la qualité de réalisation suffisante pour que NextStep devienne Mac OS X et qu'il puisse enfin prétendre à sa commercialisation.

Historique du Developpement de Next :

Historique de NestStep

 

Historique du développement de la transition de NextStep vers Mac OS X :

Pour résumer, NextStep en quelques mots...

- Mach pour le Kernel
- 4.3 BSD pour le Sous-système Unix
- API’s de Haut niveau
- Orientées Objet
- Graphique 2D : Postscript
- Système orienté professionnels
- Orienté Réseau
- Closed-source
- “Moderne” : mutitâche, mémoire protégée...

MacOS X ajoute les caractéristiques suivantes :

- XNU pour le Kernel “X is Not Unix”
- Un environement FreeBSD pour le Sous-système Unix
- Un Sous-Système fondamental Open-Source (Darwin)
- Des APIs spécialisées par activités (graphique, son, image, video, animation...)
- Serveur graphique PDF + OpenGL
- Interface uniforme proche de MacOS classic
- Certifié UNIX03 par l’openGroup (Leopard) : 1742 interfaces de programmation standardisées
- Un environnement d'émulation de MacOs Classic

Le Kernel Xnu

Le Kernel de MacOs X est une Extension de celui de NextStep. Comme ce dernier, il utilise le micro-kernel Mach (version 3) comme noyau de base pour la gestion des opérations en forte relations avec le matériel (Threads, mémoire...) et inclus de plus des services issus du système FreeBSD pour les opérations de plus haut niveau telles que la gestion réseau, de la sécurité Unix ou encore les processus Unix.

Ce Kernel de type hybride est appelé XNU. L’ensemble est connu par le système comme formant une unique tâche et chacune de ses composantes s’exécute dans un groupe de Thread. L’intérêt d’intégrer certains services BSD directement au niveau de Kernel est un choix technique de la part d’Apple qui permet d’optimiser les temps d’accès à ces services. En effet, les opérations effectuées en espace Kernel sont prioritaires et nécessites moins de transactions que les opérations effectuées en espace utilisateur.

Le Kernel XNU inclus aussi « Platform expert » celui-ci permet d’isolé le code du système de la plupart des spécificités relatives aux différentes architectures matérielles. Cela permet au système d’être fortement portable. Par ailleurs signalons que MacOS X fonctionne actuellement sous PowerPC, Intel, et ARM (MacOS X mobile).

XNU dispose d’une architecture de gestion de drivers systèmes avancée. Celle-ci porte le nom de IOKit. Le développement des drivers est orienté objet. Ceux-ci, appelés Kext (Kernel Extention) sont chargeables à chaud quelque soit leur type ce qui permet d’éviter des redémarrages dans de nombreux cas de figure.

Schématisation de structure du kernel (simplifiée) :

Le Kernel XNU

Le Sous-Système BSD

Au dessus du Kernel, nous trouvons la couche des services systèmes secondaires (dont les accès sont moins fréquents que pour ceux inclus dans le noyau) et les librairies systèmes. Ces éléments composent le sous-système BSD. L’ensemble du sous-système et du Kernel est appelé Dawin. Il est développé par Apple et est mis à la disposition de la communauté sous la forme d’un projet open-source (http://www.apple.com/opensource).

Le sous-système est basé sur FreeBSD mais est augmenté d’un ensemble de services spécifiques développés par Apple.

Les services BSD forment essentiellement des eléments de ce que l’on appelle les "Core Services", c’est à dire, les services essentielles au fonctionnement d’un OS moderne, comme par exemple :

- Dynamic_pager qui permet d’allouer l’espace disque nécessaire à la mémoire virtuelle,

- SystemStarter qui permet de charger des démons systèmes.

On notera également que la plupart des outils en ligne de commande systèmes proviennent aussi du monde BSD.

Les Applications Services, sont quant à eux intégralement développés par Apple pour son système. Ceux-ci agissent à un plus haut niveau, ils sont souvent en rapport avec l’interface graphique ou avec l’interaction au niveau des utilisateurs. Elles sont par conséquent situées au dessus du sous-système BSD et ne sont pas toujours Open-Source.

Le sous-système inclus également l’ensemble des APIs du système de base. Apple a depuis la version 10.5 de MacOS X apporté de nombreuses modifications à ces dernières afin d’être ratifiées « UNIX03 » par l’Opengroup. Cette norme permet de standardiser entre autre le comportement de plus de 1700 interfaces de programmation. Mac OS X entre par conséquent dans le club très restreint des quatres OS à être certifié "UNIX03".

Schématisation de Darwin :

Darwin

 

Schémation globale simplifiée de l'initialisation de Mac OS X :

Initialisation du système