Détails internes
Nous voilà maintenant au début de la section habituelle sur les détails techniques internes. Léopard des neiges est plein de changements internes, et ça se reflète dans le contenu de ce compte-rendu. Si vous êtes seulement intéressé(e) par les modifications que l'utilisateur peut voir, vous pouvez passer plus loin, mais vous allez manquer la viande du repas, et le cœur du nouvel OS d'Apple.
Mac OS X a commencé sa conversion à 64 bits en 2003 avec la livraison de Panther, qui comprenait le support minimal le plus élémentaire du nouveau processeur Power PC G5 64 bits. En 2005, Tiger a apporté la possibilité de créer de vrais processus 64 bits - tant qu'ils ne se liaient pas aux bibliothèques GUI (celles de l'interface Utilisateur Graphique). Finalement, Léopard en 2007 a incorporé le support 64 bits pour les applications GUI. Mais il y avait encore des limitations : le support 64 bits concernait les applications Cocoa seulement. Dans les faits, c'était la fin de la route pour Carbon.
En dépit des promesses apparemment impressionnantes de Léopard, il faut encore quelques étapes supplémentaires pour que Mac OS X puisse atteindre le nirvana 64 bits. Le diagramme ci-dessous le montre :
Comme nous le verrons, tout ce qui est jaune dans le diagramme de Léopard des neiges représente les possibilités, pas nécessairement le mode de fonctionnement par défaut.
Léopard des neiges est la première version de Mac OS X à délivrer un noyau 64 bits ("K64" dans la terminologie Apple), mais il n'est pas validé par défaut sur la plupart des systèmes. La raison en est simple. Rappelez-vous qu'il n'y a pas de mode mixte sous Mac OS X. A l'exécution, un processus est soit 32 bits, soit 64 bits, et ne peut charger d'autre code -bibliothèques, greffons- que du même type.
Une catégorie importante de greffons chargés par le noyau est constituée pas les pilotes de périphériques. Si Léopard des neiges avait par défaut un noyau 64 bits, seuls les pilotes 64 bits pourraient se charger. Et quand on se représente que Léopard des neiges est la première version de Mac OS X à inclure un noyau 64 bits, il y aurait eu très peu de ces pilotes précieux sur les systèmes des utilisateurs le jour du lancement.
Si bien que, par défaut, Léopard des neiges ne démarre avec un noyau 64 bits que sur les XServe de 2008 ou plus récents. Je suppose que le raisonnement est que tous les périphériques couramment rattachés à un Xserve seront fournis par Apple avec des pilotes 64 bits pour Léopard des neiges.
D'une façon peut-être surprenante, tous les Macs avec des processeurs 64 bits ne sont même pas aptes à démarrer dans un noyau 64 bits. Bien que cela puisse changer dans les prochaines versions intermédiaires de Léopard des neiges, le tableau ci-contre donne une liste de tous les Macs qui sont capables de démarrer K64, ou démarrent ainsi par défaut. (Pour trouver le nom de modèle de votre Mac, choisissez "A propos de ce mac" dans le menu Apple, puis cliquez "Plus d'infos...", et lisez l'"Identifiant du modèle" à la deuxième ligne de la rubrique Matériel).
Pour tous les Macs capables K64, démarrez en maintenant simultanément les touches 6 et 4, pour sélectionner le noyau 64 bits. Pour une solution plus permanente, utilisez la commande nvram et ajoutez arch=x86_64 à la chaîne des boot-args, ou bien éditez le fichier /Library/Preferences/SystemConfiguration/com.apple.Boot.plist, et ajoutez arch=x86_64 à la chaîne des drapeaux de noyau :
Pour revenir au noyau 32 bits, maintenez les touches 3 et 2 pendant le démarrage, ou utilisez une des techniques ci-dessus pour remplacer "x86_64" par "i386".
Nous avons déjà dit pourquoi, au moins initialement, vous n'aurez sans doute pas envie de démarrer en K64. Mais à mesure que l'adoption de Léopard des neiges va monter, et que des mises à jour à 64 bits des extensions existantes du noyau vont apparaître, pourquoi pourriez-vous avoir envie d'utiliser effectivement le noyau 64 bits ?
La première raison concerne la RAM, et pas de la façon dont vous vous pourriez l'imaginer. Bien que Léopard utilise un noyau 32 bits, les Macs qui utilisent Léopard peuvent contenir et utiliser beaucoup plus de RAM que la limite de 4 Go que le qualificatif de 32 bits semble impliquer. Mais, à mesure que les tailles de RAM augmentent, il y a une autre raison : le manque d'espace d'adressage, non pour les applications, mais pour le noyau lui-même.
En tant que processus 32 bits, le noyau est limité à un espace d'adressage de 32 bits (soit 4 Go). Cela ne semble pas être un problème ; après tout, le noyau a-t-il réellement besoin de plus de 4 Go pour faire son travail ? Mais rappelez-vous qu'une partie du travail du noyau est de chercher et de gérer la mémoire du système. Il utilise une structure de 64 octets pour contrôler l'état de chaque page de 4 Ko de Ram utilisée par le système.
C'est 64 octets, pas des kilo-octets. Cela n'est pas beaucoup. Mais considérez maintenant un Mac qui, dans un futur pas très lointain, contiendra 96 Go de RAM. (Si cela vous semble ridicule, imaginez à quel point ridicules les 8 Go du Mac sur lequel je tape ce texte maintenant auraient paru il y a cinq ans). Contrôler 96 Go de RAM nécessite 1,5 Go d'espace d'adressage pour le noyau. Utiliser plus d'un tiers de l'espace d'adressage du noyau juste pour le contrôle de la mémoire est une situation plutôt inconfortable.
A l'inverse, un noyau 64 bits a un espace d'adressage à peu près illimité (16 exaOctets). K64 est une nécessité inévitable, étant donnée l'augmentation rapide de la taille de la mémoire système. Bien que vous n'en ayez pas nécessairement besoin maintenant sur votre ordinateur de bureau, c'est déjà courant de voir installé sur les serveurs un espace de RAM à deux chiffres.
Une autre chose que K64 a en sa faveur, est la vitesse. L'architecture de l'ensemble d'instructions du x86, a eu une histoire un peu tortueuse. Quand il a conçu x86-64, l'extension à 64 bits du x86, AMD a saisi l'occasion pour laisser de côté un peu des laideurs du passé, et incorporer plus de possibilités modernes : des registres plus nombreux, des nouveaux modes d'adressage, des possibilités de virgule flottante ne reposant pas sur une pile, etc... K64 profite de ces bénéfices. Apple déclare les performances suivantes :
• 250 % plus rapide pour les points d'entrée des appels système
• 70 % plus rapide pour la copie en mémoire (utilisateur/noyau)
Des tests ciblés confirmeraient cela, j'en suis sûr. Mais dans la pratique quotidienne, vous avez peu de chances de pouvoir attribuer au noyau un quelconque gain de performance. Pensez plutôt à K64 comme moyen de supprimer les goulots d'étranglement dans un petit nombre d'applications (généralement basées sur des serveurs), qui exploitent le noyau effectivement et intensément.
Si vous vous sentez mieux de savoir que votre noyau est plus efficace, et que si vous aviez 96 Go de RAM installés, le noyau ne manquerait pas d'espace d'adressage, et si vous n'avez aucun pilote 32 bits indispensable, alors, en tout état de cause, démarrez en mode 64 bits.
Pour tous les autres, je pense qu'il faut se réjouir que K64 soit prêt, et attende qu'on en ait réellement besoin, et de grâce, faites savoir à tous les vendeurs qui écrivent des extensions du noyau que vous comptez installer le support 64 bits aussi vite que possible.
Finalement, il est bon de le répéter : gardez à l'esprit que vous n'avez pas besoin d'un noyau 64 bits pour faire tourner des applications 64 bits ou pour installer plus de 4 Go de RAM dans votre Mac. Les applications tournent très bien en mode 64 bits sur un noyau 32 bits, et même dans des versions précédentes de Mac OS X, on peut tirer parti de beaucoup plus que 4 Go de RAM.
Bien que Léopard ait apporté le support pour des applications GUI 64 bits, il n'en incorporait réellement que très peu. En fait, selon mes comptes, seules deux applications GUI ont été livrées avec Léopard : Xcode (dont l'installation est optionnelle), et Chess. Et bien que Léopard ait rendu possible pour les développeurs extérieurs à Apple la production d'applications graphiques (GUI) 64 bits, très peu en ont profité, parfois pour des circonstances malheureuses, mais le plus souvent parce qu'il n'y avait pas de bonnes raisons de le faire, et d'abandonner dans la course les utilisateurs de Mac OS X 10.4 ou de versions plus anciennes.
Apple pousse maintenant la transition vers 64 bits plus vigoureusement. Et commence en montrant l'exemple. Léopard des neiges est fourni avec 4 applications GUI pour l'utilisateur final qui ne sont pas 64 bits : iTunes, Grapher, Front Row, et DVD Player. Toutes les autres sont en 64 bits. Le Finder, le Dock, Mail, TextEdit, Safari, iChat, Address Book, Dashboard, Help Viewer, Installer, Terminal, Calculator, quoi que vous en pensiez, c'est du 64 bits.
La seconde grosse carotte, (ou bâton, selon la manière dont vous voyez les choses), est le manque de support 32 bits pour les nouvelles APIs et technologies. Léopard a lancé la tendance délaissant les APIs démodées, en ne portant que les nouvelles sous 64 bits. L'exécutif amélioré Objective C 2.0 introduit avec Léopard était aussi en 64 bits seulement.
Léopard des neiges continue dans la foulée. Dans l'exécutif Objective-C 2.1, les variables d'instance non-fragile, le modèle unifié d'exceptions avec C++, et la répartition vtable rapide ne restent disponibles que pour les applications 64 bits. Mais la nouvelle API uniquement 64 bits la plus significative est QuickTime X -assez significative pour être traitée séparément, alors, restez branché.
Tout cela fait partie de la façon pas très subtile qu'a Apple de dire aux développeurs qu'il est temps de passer maintenant au 64 bits, et que ce doit être le mode par défaut pour toutes les applications, que le développeur estime que c'est un besoin ou non. Dans la plupart des cas, ces nouvelles APIs n'ont pas de rapport intrinsèque avec le 64 bits. Apple a simplement choisi de les utiliser comme une forme supplémentaire de persuasion.
En dépit de tout ce qui précède, je qualifierais encore Léopard des neiges comme l'avant-dernière étape dans la course au 64 bits, du début à la fin. J'espère vraiment que Mac OS X 10.7 démarrera par défaut avec le noyau 64 bits, qu'il sera livré avec des versions 64 bits de toutes les applications, greffons (plug-ins), et extensions du noyau, et laissera encore plus d'APIs dépassées et démodées se dissoudre dans l'espace 32 bits.