Answers:
在乔恩·西拉库萨(Jon Siracusa)的《雪豹评论》中,他讨论了64位转换。
简短的版本是:因为没有“混合模式”,所以64位内核需要64位内核扩展和驱动程序。
由于尚未广泛使用,因此苹果选择默认为32位以避免破坏很多功能。
文章中的说明:
对于所有支持K64的Mac,同时按住“ 6”和“ 4”键启动以选择64位内核。要获得更永久的解决方案,请使用nvram命令添加
arch=x86_64
到您的boot-args
字符串,或者编辑文件/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
并添加arch=x86_64
到“内核标志”字符串:
...
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>arch=x86_64</string>
...
要切换回32位内核,请在引导过程中按住“ 3”和“ 2”键,或使用上述技术之一,将“ x86_64”替换为“ i386”。
与大多数其他操作系统不同,在Snow Leopard中运行64位内核没有太大好处。在Windows和Linux中,您需要64位内核才能运行64位应用程序。在OS X上,您可以使用32位内核运行64位应用程序。
大多数人似乎担心在OS X中运行32位内核会限制其计算机的性能或功能,但实际上这不会产生重大的物质影响。32位内核支持运行的64位应用程序,这些应用程序具有虚拟的64位地址空间,内核将其映射到36位PAE地址空间,因此它们的行为与在64位应用程序上相同位内核,只是内存使用受到更多限制,并且内存映射的I / O达到了可用范围。Apple在32位内核中处理此地址空间的方式导致物理内存限制为32 GB,使用PAE打破了4 GB的32位限制。在性能方面,如果使用32位或更少内存的64位内核完全可以衡量,那么没有什么好处。如果你想,6和4启动时的键。我怀疑您会看到性能上的显着差异。
另一个问题是与设备驱动程序,内核扩展和设备固件的兼容性。对于设备驱动程序和内核扩展,它们需要匹配位大小,重新编译或重写(尤其是如果它们具有任何汇编件,则这些部分在这些类型的代码中都很常见)。Apple的EFI最初仅提供32位,最近一些型号配备了64位固件。为了使操作系统与固件进行通讯,内核的位数和EFI必须匹配。与EFI通话涉及的事情包括选择启动磁盘或某些电源管理控件(例如,如果您安装了多个OS X,并且在电池用尽后需要从睡眠中唤醒)。
那么64位内核会带来好处吗?在性能上并不是真正的实践,而且我可以看到Apple在大多数运行Snow Leopard的计算机上使用32位内核的智慧,以实现更好的兼容性。
根据泄露给MacRumors的信息(由于官方文档在NDA下)(源),仅以下计算机支持运行64位内核:
默认情况下,只有XServes使用64位内核。
如果使用6和4键启动计算机,则将启动64位内核,或者根据另一个破坏NDA的消息源,您可以编辑/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
添加内核标志或在nvram中进行操作。
杰森不幸的是混淆了链接,隐藏了一条非常有用的信息:
ioreg -l -p IODeviceTree | grep firmware-abi
64位EFI Mac将报告
| | "firmware-abi" = <"EFI64">
没关系,这是为什么:
32位SL将运行64位应用程序;SL兼容64位,无论您启动哪个内核版本
即使使用32位内核启动,SL仍将能够运行64位应用程序并寻址超过4GB的RAM
您需要64位内核的原因是,如果内核需要处理超过32 GB的RAM(因此Xserve是默认的),或者您只有64位的kext(开发人员)
64位内核无法使您的计算机神奇地更快。除非您需要超过32 GB的RAM(无论如何,IOW仅Xserve都可以),否则出于寻址原因也不需要它
通过在消费者系统上设置32位默认值并为专业人士和开发人员提供64位内核选项,Apple保留了最大的兼容性和最大的灵活性
64位主要是开发人员选项;他们可以使用它来测试新的64位驱动程序/扩展,以确保它们可以与64位内核一起使用
默认情况下,Snow Leopard引用和引用的内容加载32位内核