¿Por qué mi kernel Mac OS X 10.6 se ejecuta en modo de 32 bits?


10

Tengo un MacBook Pro (5,1) con 4 GB de memoria con 10A432, pero ejecuta el núcleo de 32 bits.

¿Alguna idea de por qué no se estaría ejecutando en modo de 64 bits y cómo puedo lograr que lo haga?


Comprendí que el propósito de 10.6 era reescribir el componente central para maximizar el uso de 64 bits. Entonces, con esto, ¿estás diciendo que ejecutará código optimizado en 32 bits la mayoría de las veces? ...
OscarRyz el

No sé, la mayoría del código es claramente no parece de 64 bits, pero kernel para ser, al menos para mí
Chopper3

Respuestas:


12

En la revisión de Jon Siracusa de Snow Leopard, analiza la transición de 64 bits .

Tigre Leopardo Leopardo de nieve

La versión corta es: porque no hay 'modo mixto', un núcleo de 64 bits requiere extensiones y controladores de núcleo de 64 bits .

Como todavía no están ampliamente disponibles, Apple eligió el valor predeterminado de 32 bits para evitar romper muchas cosas.

Instrucciones del artículo:

Para todos los Mac compatibles con K64, inicie mientras mantiene presionadas las teclas "6" y "4" simultáneamente para seleccionar el núcleo de 64 bits. Para una solución más permanente, use el comando nvram para agregar arch=x86_64a su boot-argscadena, o edite el archivo /Library/Preferences/SystemConfiguration/com.apple.Boot.plisty agréguelo arch=x86_64a la cadena Banderas de kernel:

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

Para volver al kernel de 32 bits, mantenga presionadas las teclas "3" y "2" durante el arranque, o use una de las técnicas anteriores, reemplazando "x86_64" con "i386".


Gracias a Gareth por la edición (enlaces de imágenes rehospedados a imgur de arstechnica y citas de instrucciones relevantes del artículo).
Lago

7

No hay muchos beneficios al ejecutar un núcleo de 64 bits en Snow Leopard, a diferencia de la mayoría de los otros sistemas operativos. En Windows y Linux, necesita un núcleo de 64 bits para ejecutar aplicaciones de 64 bits. En OS X, puede ejecutar aplicaciones de 64 bits con el núcleo de 32 bits.

La mayoría de las personas parecen estar preocupadas de que ejecutar el kernel de 32 bits en OS X limite el rendimiento o las capacidades de sus máquinas, pero en la práctica esto no tiene un impacto material significativo. El núcleo de 32 bits admite la ejecución de aplicaciones de 64 bits, y esas aplicaciones tienen un espacio de direcciones virtual de 64 bits que el núcleo asigna a un espacio de direcciones PAE de 36 bits, por lo que se comportan igual que en un 64- bit kernel, solo con un uso de memoria más restringido y E / S mapeadas en memoria al rango utilizable. La forma en que Apple maneja este espacio de direcciones en el núcleo de 32 bits da como resultado un límite de 32 GB para la memoria física, rompiendo el límite de 4 GB de 32 bits con PAE. En cuanto al rendimiento, no hay mucho beneficio, si es que se puede medir con el uso de un kernel de 64 bits con 32 GB de memoria o menos. Si quieres,6y 4claves al inicio. Dudo que vea una diferencia significativa en el rendimiento.

El otro problema es la compatibilidad con los controladores del dispositivo, las extensiones del kernel y el firmware del dispositivo. Para los controladores de dispositivo y las extensiones de kernel, deben coincidir con el bit-ness, volver a compilarse o reescribirse (especialmente si tienen algún ensamblado, qué partes son comunes en esos tipos de código). El EFI de Apple originalmente vino solo en 32 bits, y más recientemente algunos modelos tienen firmware de 64 bits. Para que el sistema operativo hable con el firmware, el bit del kernel y el EFI tienen que coincidir. Las cosas que implican hablar con EFI son cosas como elegir un disco de inicio o algunos controles de administración de energía (como si tiene más de una instalación de OS X y necesita despertarse después de que la batería se haya agotado).

Entonces, ¿sería un kernel de 64 bits un beneficio? En cuanto al rendimiento, no realmente en la práctica, y puedo ver la sabiduría con Apple usando núcleos de 32 bits para la mayoría de las máquinas que ejecutan Snow Leopard para una mejor compatibilidad.


7

De acuerdo con lo que se ha filtrado a MacRumors (ya que los documentos oficiales están bajo NDA) ( Fuente ), solo las siguientes computadoras admiten la ejecución del núcleo de 64 bits:

  • Principios de 2008 Mac Pro (MacPro 3,1)
  • Principios de 2008 Xserve (Xserve 2,1)
  • MacBook Pros (15 "/ 17") (MacBookPro 4,1)
  • IMacs 2008 (iMac 8,1)
  • Unibody MacBook Pros (MacBookPro 5,1 y 5,2)
  • Principios de 2009 Mac Pro (MacPro 4,1)
  • IMacs 2009 (iMac 9,1)
  • Principios de 2009 Xserve (Xserve 3,1).

Solo los XServe usan el kernel de 64 bits por defecto.

Si inicia la computadora con las teclas 6y 4, iniciará el kernel de 64 bits, o de acuerdo con otra fuente que rompa su NDA, puede editar /Library/Preferences/SystemConfiguration/com.apple.Boot.plistagregando un indicador de kernel o hacerlo en el nvram.


También lo vi, por eso puse mi código de modelo.
Chopper3

Comenzando con [6] [4] hace el trabajo, pero, ¿cuál es el beneficio de tener el kernel ejecutándose en 64 bits? ...
OscarRyz

@Oscar Reyes: puede utilizar controladores de 64 bits y los procesos pueden acceder a más de 4 GB de memoria. Entonces ahora? Ninguno, a menos que esté ejecutando una aplicación del lado del servidor que pueda utilizar más de 4 GB de memoria, de ahí el valor predeterminado de 64 bits en Xserves.
Chealion

5

El enlace ofuscado desafortunadamente de Jason ocultó una información muy útil:

ioreg -l -p IODeviceTree | grep firmware-abi

Los Macs EFI de 64 bits informarán

| | "firmware-abi" = <"EFI64">

1

Hasta que se lance Snow Leopard, no sabremos qué sistemas admitirán el modo de 64/32 bits ... Pero todo indica que Snow Leopard será transparente con el soporte del kernel ...

Pero, por desgracia, lamento ser un "decayente", si usted es un miembro registrado de Appleseed, el foro de Appleseed discute cómo forzar el núcleo al modo de 64 bits. De lo contrario, si ha recibido Snow Leopard en otro lugar, no se preocupe.

El lanzamiento de Snow Leopard está a la vuelta de la esquina ...


0

Está bien, he aquí por qué:

  • SL de 32 bits ejecutará aplicaciones de 64 bits; SL es compatible con 64 bits independientemente de la versión de kernel que arranque

  • SL, incluso si se arranca con el kernel de 32 bits, aún podrá ejecutar aplicaciones de 64 bits y abordar más de 4 GB de RAM

  • la razón por la que necesitaría el kernel de 64 bits es si el kernel necesitaba direccionar más de 32 GB de RAM (por lo tanto, es el predeterminado en el Xserve) o si tiene un kext de solo 64 bits (desarrolladores)

  • Los núcleos de 64 bits no hacen que su computadora sea mágicamente más rápida; a menos que necesite más de 32 GB de RAM (IOW solo Xserves de todos modos) tampoco lo necesita para abordar razones

  • Al establecer un valor predeterminado de 32 bits en los sistemas de consumo y dar a los profesionales y desarrolladores la opción de kernel de 64 bits, Apple conserva la máxima compatibilidad Y la máxima flexibilidad

  • 64 bits es principalmente una opción de desarrollador; pueden usarlo para probar sus nuevos controladores / kexts de 64 bits para asegurarse de que funcionan con el núcleo de 64 bits

Parafraseado y citado de Snow Leopard, carga el kernel de 32 bits por defecto

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.