Architecture et Technologies de Mac Os X
Les spécificités de MacOS X
L'Aspect Multi-Architectures
Nous avons évoqué le fait que Mac OS X a été conçu pour être portable. Il dispose d’une couche d’abstraction pour le matériel (Platform expert) permettant de diminuer les différences qui existent entre les architectures des processeurs. De plus le code de Mac OS X est essentiellement générique. Le système peut par conséquent être porté vers de multiples architectures avec un minimum d’effort.
Cependant, Mac OS X va plus loin, en effet, lors de la transition du PowerPc vers l’architecture Intel en 2005, Apple a utilisée une technologie de la société Transitive (depuis rachetée par Sun) pour permettre l’exécution des binaires PowerPc sous Mac OS X Intel. Cette Technologie appelée « Rosetta » permet de traduire à la volée les instructions d’une architecture à une autre. Ce procédé réduit les performances originales d’environs 50% mais permet d’effectuer des transitions d’architecture d’une manière transparente pour les utilisateurs.
Enfin, l’héritage de NextStep permet à Mac OS X d’exploiter des Fat-binaries ou Universal-binaries. Celles-ci permettent de créer un unique fichier exécutable contenant plusieurs architectures. Les binaires des différentes architectures sont simplement concaténées et un header et renseigné avec le nombre d’architectures contenues, leurs tailles et leurs adresses de début dans le fichier, cela est possible grâce au compilateur GCC modifié par Apple. L’environnement d’exécution natif (Mach-O) sait lire cette entête et charge simplement la bonne architecture en mémoire puis l’exécute comme un exécutable standard. Ce principe simple permet à Mac OS X de pouvoir évoluer sans se soucié des évolutions matériels puissequ'il existe une stratégie de transition bien rodé.
64-bit
Depuis Mac OS X 10.5 « Léopard » le système sait exécuter nativement des binaires 64-bit console ou graphique. Cela est possible grâce à une modification substantielle du Kernel, de son environnement d’exécution et d’une double compilation des librairies du système en 32 et 64 bit. Cela permet aux développeurs de fournir une version 64-bit de son application s’il le désir afin de tirer parti des possibilités des calculs supplémentaires apportées par la largeur de bus 64-bit :
- Un seul cycle de calculs sur de nombre de 64 bits,
- Doublement du nombre de registres disponibles sur les processeurs Intel,
- Plus de mémoire adressable : 16 To (et beaucoup en théorie).
L’élégance vient du fait que dans ce cas aussi, les Universal-Binaries peuvent être mis à contribution. L’accès à la technologie 64-bit peut donc être transparente : Un seul système et un seul binaire pour l’exécution 32 et 64-bit, l'utilisateur lambda n'a pas à ce soucié de ce qu'il exécute, le système fait lui même le choix. Cela permettra une transition plus douce et plus simple que celle entamée par Ms Windows ou Linux.
La prochaine version de Mac OS X (10.6) prévue pour mi-2009 sera développée en 64 bits mais conservera la capacité d’exécuter les binaires 32-bit, cependant les drivers devront être réécrit en 64-bit car le système ne peut exécuter, pour des raisons d’adressage, des drivers 32-bit sur un Kernel 64-bit.
Le schéma ci-après présente les évolutions des enviromenent d'éxecution 32/64bit au sein des versions de Mac OS X :
Source : AppleInsider
Le Système de Fichier HFS+
Mac OS X travaille avec VFS (Virtual File System) ce qui lui permet de pourvoir éventuellement utiliser m’importe quel système de fichier au sein du système. Cependant le système de fichier par défaut est HFS+ depuis 1998. Bien que vieillissant, celui-ci dispose néanmoins de toutes les fonctionnalités modernes (il est par ailleurs comparable à NTFS).
Les fonctionnalités les plus notables sont :
- La Journalisation,
- Gestion des Forks de données : plusieurs zones de données pour un même fichier,
- Suivi des liens : si un fichier est déplacé, les éléments qui le référence concervent le lien,- Défragmentation à la volée des fichiers de moins de 20 mo : les performances de disque sont plus durables.
Les défauts que l’on peut souligner pour HFS+ sont l’absence de cryptage (Mais FileVault un CoreService compense ce manque) et de de compression native.
Mac OS X sait tirer avantage de ses fonctionnalités, par exemple, les métadonnées qui sont exploitées pleinement au sein du système sont possibles grâce à l’utilisation des Forks de données. Cette utilisation de métadonnées permet par exemple de stocker les ressources pour les applications comme leurs icônes sans que le fichier utilisé ne soit visible sur le disque.