Soporte de 64 bits con kernel de 32 bits en OS X Snow Leopard

Sé que muchas computadoras portátiles de Apple, como mi Macbook 6,1, ejecutan un kernel de 32 bits en OS X Snow Leopard. El kernel según Apple también puede ejecutar o "soportar" aplicaciones de 64 bits. Mi pregunta es ¿cómo hace eso el sistema?

Un sistema operativo de 64 bits puede ejecutar aplicaciones de 32 bits de manera predeterminada porque el sistema operativo tiene emuladores que capturan todas las llamadas de 32 bits y las traducen a llamadas nativas de 64 bits.

Pero, ¿cómo hace eso el kernel de 32 bits en OS X con 64 bits?

  1. ¿Virtualización de arquitectura de hardware? (Si es así, ¿no sería esto lento ya que la conversión de llamadas de 32 bits y direcciones de memoria a 64 bits es mucho más intensiva?)
  2. Diseño de arquitectura híbrida (es decir, ¿el kernel está diseñado con algunos elementos de 64 bits mezclados con el diseño en su mayoría de 32 bits?)

Los documentos y el soporte de Apple no parecen tener nada específico sobre esto. ¡Tengo curiosidad!

Respuestas (2)

Tenga en cuenta que parte de la información en esta respuesta fue copiada de aquí :

Mac OS X 10.6 Snow Leopard fue el último sistema operativo compatible con arquitecturas de CPU de 32 bits, como los procesadores Core Solo y Core Duo (no Core 2 Duo). Tenga en cuenta que es totalmente posible tener un procesador de 64 bits como el Core 2 Duo y aún tener un firmware EFI de 32 bits, por lo que la CPU por sí sola no es el único indicador de las capacidades de su sistema a este respecto.

Así es como termina la situación de tener un kernel de 32 bits, que está retenido por EFI, ejecutándose en una CPU de 64 bits, que es capaz de ejecutar una pila de aplicaciones de 64 bits siempre que no esté cargando dinámicamente ningún módulo de kernel etc. La aplicación no está completamente ligada al núcleo y es capaz de ejecutarse de forma independiente en un estado diferente al del núcleo si es necesario. De la misma manera que una aplicación puede ejecutar 32 bits en un kernel de 64 bits...

Para ser honesto, la cantidad de personas con un Core 2 Duo o superior pero con un EFI de 32 bits es relativamente limitada, y tienes mala suerte si eres una de esas personas que tiene, digamos, una Macbook de 2007/8 cuando esto era común. El EFI de 64 bits se introdujo de forma escalonada en toda la gama, por lo que no es fácil determinar qué fecha era común en todos los formatos.

Puede verificar el EFI de su máquina ingresando el siguiente comando en la Terminal:

ioreg -l -p IODeviceTree | grep firmware-abi

Devolverá "EFI32" o "EFI64".

Además, algunas máquinas perfectamente capaces solo arrancan en kernels de modo de 32 bits, incluso cuando son capaces, aunque puede forzar un kernel de 64 bits manteniendo presionadas las teclas 6 y 4 en el arranque.

OS News señala que solo las Mac con EFI de 64 bits pueden iniciar el kernel y kexts de Snow Leopard de 64 bits; una limitación artificial impuesta por Apple, a pesar de que un EFI de 32 bits puede arrancar un kernel de 64 bits "bien".

Lo que es peor es que incluso si su MacBook (no Pro) tiene un EFI de 64 bits, solo podrá iniciar la versión de 32 bits de Snow Leopard debido a una limitación que Apple impone a las MacBooks. El mayor accidente en la ruta 64 es el Mac Pro original (que se suspendió el 8 de enero de 2008), tampoco podrá arrancar el kernel de 64 bits ni los controladores. ingrese la descripción del enlace aquí

Los 32 bits frente a los 64 bits probablemente sean más una pregunta para el fabricante del microprocesador:

http://search.intel.com/default.aspx?q=64+bit&c=en_US&method=text&input-submit=Search