By John Siracusa

Original Article : http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/5

Warning: internals ahead

We've arrived at the start of the customary "internals" section. Snow Leopard is all about internal changes, and this is reflected in the content of this review. If you're only interested in the user-visible changes, you canskip ahead, but you'll be missing out on the meat of this review and the heart of Apple's new OS.

64-bit: the road leads ever on

Mac OS X started its journey to 64-bit back in 2003 with the release of Panther, which included the bare minimum support for the then-new PowerPC G5 64-bit CPU. In 2005, Tiger brought with it the ability to create true 64-bit processes—as long as they didn't link with any of the GUI libraries. Finally, Leopard in 2007 included support for 64-bit GUI applications. But again, there was a caveat: 64-bit support extended to Cocoaapplications only. It was, effectively, the end of the road for Carbon.

Despite Leopard's seemingly impressive 64-bit bona fides, there are a few more steps before Mac OS X can reach complete 64-bit nirvana. The diagrams below illustrate.

64-bit in Mac OS X 10.4 Tiger 64-bit in Mac OS X 10.5 Leopard 64-bit in Mac OS X 10.6 Snow Leopard

As we'll see, all that yellow in the Snow Leopard diagram represents its capability, not necessarily its default mode of operation.

K64

Snow Leopard is the first version of Mac OS X to ship with a 64-bit kernel ("K64" in Apple's parlance), but it's not enabled by default on most systems. The reason for this this is simple. Recall that there's no "mixed mode" in Mac OS X. At runtime, a process is either 32-bit or 64-bit, and can only load other code—libraries, plug-ins, etc.—of the same kind.

An important class of plug-ins loaded by the kernel is device drivers. Were Snow Leopard to default to the 64-bit kernel, only 64-bit device drivers would load. And seeing as Snow Leopard is the first version of Mac OS X to include a 64-bit kernel, there'd be precious few of those on customers' systems on launch day.

And so, by default, Snow Leopard boots with a 64-bit kernel only on Xserves from 2008 or later. I guess the assumption is that all of the devices commonly attached to an Xserve will be supported by 64-bit drivers supplied by Apple in Snow Leopard itself.

Perhaps surprisingly, not all Macs with 64-bit processors are even able to boot into the 64-bit kernel. Though this may change in subsequent point releases of Snow Leopard, the table below lists all the Macs that are either capable of or default to booting K64. (To find the "Model name" of your Mac, select "About This Mac" from the Apple menu, then click the "More info…" button and read the "Model Identifier" line in the window that appears.)

Product Model name K64 status
Early 2008 Mac Pro MacPro3,1 Capable
Early 2008 Xserve Xserve2,1 Default
MacBook Pro 15"/17" MacBookPro4,1 Capable
iMac iMac8,1 Capable
UniBody MacBook Pro 15" MacBookPro5,1 Capable
UniBody MacBook Pro 17" MacBookPro5,2 Capable
Mac Pro MacPro4,1 Capable
iMac iMac9,1 Capable
Early 2009 Xserve Xserve3,1 Default

For all K64-capable Macs, boot while holding down "6" and "4" keys simultaneously to select the 64-bit kernel. For a more permanent solution, use the nvram command to add arch=x86_64 to your boot-args string, or edit the file /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and addarch=x86_64 to the Kernel Flags string:

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

To switch back to the 32-bit kernel, hold down the "3" and "2" keys during boot, or use one of the techniques above, replacing "x86_64" with "i386".