Pourquoi mon noyau Mac OS X 10.6 s'exécute-t-il en mode 32 bits?

9

J'ai un MacBook Pro (5,1) avec 4 Go de mémoire sous 10A432, mais il utilise le noyau 32 bits.

Des idées sur la raison pour laquelle il ne fonctionnerait pas en mode 64 bits, et comment le faire?

Chopper3
la source
J'ai compris que l'objectif même de 10.6 était de réécrire le composant principal afin de maximiser l'utilisation de la version 64 bits. Donc, avec cela, vous dites que le code optimisé sera exécuté en 32 bits la plupart du temps? ...
OscarRyz
dunno, la plupart du code est clairement 64 bit mais le noyau ne semble pas l'être, pour moi en tout cas
Chopper3

Réponses:

11

Dans la revue de Jon Siracusa sur Snow Leopard, il discute de la transition 64 bits .

Tiger Leopard Snow Leopard

La version courte est: parce qu'il n'y a pas de «mode mixte», un noyau 64 bits nécessite des extensions et des pilotes de noyau 64 bits .

Comme ceux-ci ne sont pas encore largement disponibles, Apple a choisi le mode 32 bits par défaut pour éviter de casser beaucoup de choses.

Instructions de l'article:

Pour tous les Mac compatibles K64, démarrez en maintenant les touches "6" et "4" enfoncées simultanément pour sélectionner le noyau 64 bits. Pour une solution plus permanente, utilisez la commande nvram pour ajouter arch=x86_64 à ton boot-args chaîne ou éditer le fichier /Library/Preferences/SystemConfiguration/com.apple.Boot.plist et ajouter arch=x86_64 à la chaîne Kernel Flags:

...
    <key>Kernel</key>
    <string>mach_kernel</string>
    <key>Kernel Flags</key>
    <string>arch=x86_64</string>
...

Pour revenir au noyau 32 bits, maintenez les touches "3" et "2" pendant le démarrage ou utilisez l'une des techniques ci-dessus, en remplaçant "x86_64" par "i386".

Lake
la source
Merci à Gareth pour la modification (liens d’image réhébergés à imgur de arstechnica et citations des instructions pertinentes de l’article).
Lake
7

Selon ce qui a été divulgué à MacRumors (puisque les documents officiels sont sous NDA) ( La source ) seuls les ordinateurs suivants prennent en charge l’exécution du noyau 64 bits:

  • Début 2008 Mac Pro (MacPro 3,1)
  • Début 2008 Xserve (Xserve 2,1)
  • MacBook Pros (15 "/ 17") (MacBookPro 4,1)
  • IMac 2008 (iMac 8,1)
  • Unibody MacBook Pros (MacBookPro 5.1 et 5.2)
  • Début 2009 Mac Pro (MacPro 4.1)
  • IMac 2009 (iMac 9,1)
  • Début 2009, Xserve (Xserve 3,1).

Seuls les XServe utilisent le noyau 64 bits par défaut.

Si vous démarrez l’ordinateur en tenant le 6 et 4 clés vous allez démarrer le noyau 64 bits, ou selon un autre la source briser leur NDA, vous pouvez modifier /Library/Preferences/SystemConfiguration/com.apple.Boot.plist ajouter un drapeau du noyau ou le faire dans le nvram.

Chealion
la source
J'ai aussi remarqué cela, c'est pourquoi j'ai mis mon code de modèle.
Chopper3
Le travail commence à partir de [6] [4], mais quel est l'avantage de faire tourner le noyau sur 64 bits? ...
OscarRyz
@ Oscar Reyes: Vous pouvez ensuite utiliser des pilotes 64 bits et les processus peuvent accéder à plus de 4 Go de mémoire. Alors maintenant? Aucune sauf si vous exécutez une application côté serveur pouvant utiliser plus de 4 Go de mémoire, d'où le format 64 bits par défaut sur Xserves.
Chealion
6

L'exécution d'un noyau 64 bits dans Snow Leopard ne présente pas grand avantage, contrairement à la plupart des autres systèmes d'exploitation. Sous Windows et Linux, vous avez besoin d’un noyau 64 bits pour exécuter des applications 64 bits. Sous OS X, vous pouvez exécuter des applications 64 bits avec le noyau 32 bits.

La plupart des gens semblent préoccupés par le fait que l’exécution du noyau 32 bits sous OS X limite les performances ou les capacités de leurs machines, mais en pratique, cela n’a pas d’impact matériel significatif. Le noyau 32 bits prend en charge les applications 64 bits en cours d'exécution. Ces applications disposent d'un espace d'adressage virtuel 64 bits qui est mappé sur un espace d'adressage PAE 36 bits par le noyau, de sorte qu'elles se comportent de la même manière que sur un serveur 64 bits. noyau binaire, avec une utilisation de la mémoire plus contrainte et des E / S mappées en mémoire sur la plage utilisable. La manière dont Apple gère cet espace d'adressage dans le noyau 32 bits entraîne une limite de 32 Go pour la mémoire physique, dépassant ainsi la limite de 4 Go en 32 bits avec PAE. En termes de performances, il n’ya aucun avantage, s’il en existe un mesurable, à utiliser un noyau 64 bits avec 32 Go de mémoire ou moins. Si vous le souhaitez, vous pouvez tester vous-même certains tests de performance lorsque vous démarrez de force le noyau 64 bits en maintenant la commande 6 et 4 clés au démarrage. Je doute que vous verriez et une différence significative dans la performance.

L'autre problème est la compatibilité avec les pilotes de périphérique, les extensions de noyau et le micrologiciel du périphérique. Pour les pilotes de périphérique et les extensions de noyau, ils doivent correspondre au bit, être recompilés ou réécrits (en particulier s'ils ont un assemblage, quelles parties sont communes dans ces types de code). À l'origine, l'EFI d'Apple n'était disponible qu'en version 32 bits et, plus récemment, certains modèles ont un micrologiciel 64 bits. Pour que le système d’exploitation puisse communiquer avec le microprogramme, il faut que le bit-ness du noyau et le EFI correspondent. Les choses qui impliquent de parler à EFI sont, par exemple, le choix d'un disque de démarrage ou de certaines commandes de gestion de l'alimentation (par exemple, si vous avez plusieurs installations OS X et que vous devez sortir du mode veille une fois la batterie épuisée).

Alors, un noyau 64 bits serait-il un avantage? Sur le plan des performances, pas vraiment dans la pratique, et je vois bien qu’Apple utilise des noyaux 32 bits pour la plupart des machines exécutant Snow Leopard pour une meilleure compatibilité.

Lara Dougan
la source
5

Jason est malheureusement brouillé lien a caché une information très utile:

ioreg -l -p IODeviceTree | grep firmware-abi

Les Macs EFI 64 bits indiqueront

| | "firmware-abi" = <"EFI64">
Justin Love
la source
1

Jusqu'à la sortie de Snow Leopard, nous ne saurons pas quels systèmes prendront en charge le mode 64/32 bits ... Mais tout indique que Snow Leopard sera transparent avec le support du noyau ...

Mais hélas, désolé d'être un "downer", si vous êtes un membre Appleseed inscrit, le forum Appleseed explique comment forcer le noyau en mode 64 bits. Sinon, si vous avez reçu Snow Leopard ailleurs, ne vous en faites pas.

La sortie de Snow Leopard est imminente ...

Benjamin Schollnick
la source
0

C'est bon, voici pourquoi:

  • SL 32 bits exécutera des applications 64 bits; SL est compatible 64 bits quelle que soit la version du noyau que vous démarrez

  • SL, même s'il est démarré avec le noyau 32 bits, pourra toujours exécuter des applications 64 bits et traiter plus de 4 Go de RAM.

  • La raison pour laquelle vous auriez besoin du noyau 64 bits est si le noyau doit traiter plus de 32 Go de RAM (par conséquent, il est par défaut sur Xserve) ou si vous avez un kext 64 bits uniquement

  • Les noyaux 64 bits ne rendent pas votre ordinateur magiquement plus rapide; sauf si vous avez besoin de plus de 32 Go de RAM (IOW uniquement Xserve de toute façon), vous n'en avez pas non plus besoin pour des raisons d'adressage

  • en faisant 32 bits par défaut sur les systèmes grand public et en offrant aux professionnels et aux développeurs l'option du noyau 64 bits, Apple conserve une compatibilité ET une flexibilité maximales

  • 64 bits est principalement une option pour les développeurs; ils peuvent l'utiliser pour tester leurs nouveaux pilotes / kexts 64 bits afin de s'assurer qu'ils fonctionnent avec le noyau 64 bits

Paraphrasé et cité de Snow Leopard charge le noyau 32 bits par défaut

random
la source