为什么我的Mac OS X 10.6内核以32位模式运行?


10

我有一台运行4A内存的MacBook Pro(5,1),运行10A432-但它运行的是32位内核。

有什么想法为什么它不能在64位模式下运行?我如何才能做到这一点?


我了解10.6的真正目的是重写核心组件以最大程度地使用64bit。因此,您是说它大多数时候将在32位上运行优化的代码?...
OscarRyz

dunno,大多数代码显然都是64位的,但无论如何对我来说内核似乎都不是
Chopper3

Answers:


12

在乔恩·西拉库萨(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”。


感谢Gareth的编辑(重新托管的图像链接到arstechnica的imgur,并引用了本文的相关说明)。

7

与大多数其他操作系统不同,在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位内核完全可以衡量,那么没有什么好处。如果你想,64启动时的键。我怀疑您会看到性能上的显着差异。

另一个问题是与设备驱动程序,内核扩展和设备固件的兼容性。对于设备驱动程序和内核扩展,它们需要匹配位大小,重新编译或重写(尤其是如果它们具有任何汇编件,则这些部分在这些类型的代码中都很常见)。Apple的EFI最初仅提供32位,最近一些型号配备了64位固件。为了使操作系统与固件进行通讯,内核的位数和EFI必须匹配。与EFI通话涉及的事情包括选择启动磁盘或某些电源管理控件(例如,如果您安装了多个OS X,并且在电池用尽后需要从睡眠中唤醒)。

那么64位内核会带来好处吗?在性能上并不是真正的实践,而且我可以看到Apple在大多数运行Snow Leopard的计算机上使用32位内核的智慧,以实现更好的兼容性。


7

根据泄露给MacRumors的信息(由于官方文档在NDA下)(),仅以下计算机支持运行64位内核:

  • 2008年初的Mac Pro(MacPro 3,1)
  • 2008年初的Xserve(Xserve 2,1)
  • MacBook Pro(15英寸/ 17英寸)(MacBookPro 4,1)
  • 2008 iMac(iMac 8,1)
  • 一体式MacBook Pro(MacBookPro 5,1和5,2)
  • 2009年初的Mac Pro(MacPro 4,1)
  • 2009 iMac(iMac 9,1)
  • 2009年初的Xserve(Xserve 3,1)。

默认情况下,只有XServes使用64位内核。

如果使用64键启动计算机,则将启动64位内核,或者根据另一个破坏NDA的消息源,您可以编辑/Library/Preferences/SystemConfiguration/com.apple.Boot.plist添加内核标志或在nvram中进行操作。


我也发现了这一点,这就是为什么要放置模型代码。
斩波器

从[6] [4]开始就可以了,但是,让内核运行在64位上有什么好处呢?...
OscarRyz

@Oscar Reyes:然后可以使用64位驱动程序,并且进程可以访问超过4GB的内存。所以现在呢?除非您正在运行的服务器端应用程序可以使用超过4GB的内存,否则为None-因此Xserves上的默认值为64位。
Chealion


1

在Snow Leopard发布之前,我们将不知道哪些系统将支持64/32位模式...但是所有迹象表明Snow Leopard在内核支持下将是透明的...

但是,可惜,如果您是Appleseed的注册会员,对不起,您是一个“失败者”,Appleseed论坛讨论了如何将内核强制为64位模式。否则,如果您在其他地方收到过雪豹,请不要担心。

雪豹的发布就在眼前...


0

没关系,这是为什么:

  • 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位内核

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.