• We should now be fully online following an overnight outage. Apologies for any inconvenience, we do not expect there to be any further issues.

OSX vs Vista in reguard to memory and 64bit

CU

Platinum Member
Aug 14, 2000
2,415
51
91
I know in Vista64 a 32 bit app can only use 2gigs or 4gigs if it is large address aware. How does it work in OSX? Which is more 64bit Vista64 or OSX, or are they both 64bit all the way through.
 

Aberforth

Golden Member
Oct 12, 2006
1,707
1
0
Does it matter if a MAC app is large address aware? The question arises, which mac app :)?
 

CU

Platinum Member
Aug 14, 2000
2,415
51
91
No particular mac app, just wondering how it works in OSX.
 

CU

Platinum Member
Aug 14, 2000
2,415
51
91
The OS is what splits the address space into kernel and user though, so OSX may do it differently.
 

kylef

Golden Member
Jan 25, 2000
1,430
0
0
Originally posted by: CU
I know in Vista64 a 32 bit app can only use 2gigs or 4gigs if it is large address aware. How does it work in OSX? Which is more 64bit Vista64 or OSX, or are they both 64bit all the way through.

Despite Apple's advertising claims that the Power Mac G5 was the "world's first 64-bit personal computer" back in June 2003, the dirty secret was that its latest operating system, OS X 10.2 "Jaguar", could not run 64-bit user programs. Apple users expected to see this support in 10.3 "Panther" in October 2003 but were disappointed. It wasn't until 10.4 ("Tiger") in April, 2005 that 64-bit programs were supported, but even then they were limited to text-based or "console" programs, because Apple had not ported its GUI libraries to 64-bit.

It wasn't until October 2007 with 10.5 "Leopard" that Apple finally released full support for 64-bit GUI programs using the "Cocoa" framework.

By contrast, Microsoft has been releasing full 64-bit versions of Windows with full support for 64-bit user-mode GUI programs since March 2003, more than 4 years ahead of Apple. However back in 2003, 64-bit XP ran only on Itanium chips, which had a significant limitation in that they were not backwards-compatible. So Microsoft had to emulate x86 support for backwards-compatibility with existing programs. Therefore on these early 64-bit PCs, legacy 32-bit apps were too slow for most consumers. The performance degradation due to the emulation layer for existing software is one of the primary reasons that Itanium architecture never really took off, and Intel considered it "a server chip".

AMD changed that perception in 2003 with the "hammer" series of chips, using an architecture recommended by Microsoft's Dave Cutler, the NT kernel architect, that supported both x86 and x86-64 instructions. Consumer-level Athlon 64 chips became available in late 2003, but sales didn't take off until 2004.

In April 2005 (simultaneous with XP SP2) Microsoft publicly released "Windows XP Professional x64 Edition" to support the AMD64 chips (re-named "x64" later to sound more vendor-agnostic). Because these chips could run 64-bit or 32-bit programs natively, no emulation layer was required like on Itaniums, so older software ran fast, making the jump to 64-bit computing "transparent" to the masses.

Vista of course went public in January 2007, and was available in either 32-bit or 64-bit versions from the start.

Microsoft has much more experience and time invested in 64-bit computing than Apple. Furthermore, Microsoft's close relationship with AMD in 2003 really spawned the birth of consumer 64-bit processors. Lots of 64-bit processors existed first. But the key really was the ability to execute x86 instructions natively, making them backwards-compatible with 90% of the world's software. Intel resisted this design until they were basically forced to follow AMD's lead in 2004.

Microsoft really has done quite a bit to help bring 64-bit computing to the masses. Apple, despite all of their reputation of being on the forefront of technology, really seems just to want to use it as a marketing tool.
 

nerp

Diamond Member
Dec 31, 2005
9,865
105
106
Good read. That definatley provides a clear explanation.
 

soonerproud

Golden Member
Jun 30, 2007
1,874
0
0
One big difference between OSX and Vista is that OSX uses a 32 bit kernel and drivers. Vista 64 bit is all 64 bit and uses the Windows on Windows layer for backwards 32 bit compatibility. OSX would be more comparable to Windows 95 which used a similar approach using a hybrid 16bit/32bit approach.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
However back in 2003, 64-bit XP ran only on Itanium chips, which had a significant limitation in that they were not backwards-compatible. So Microsoft had to emulate x86 support for backwards-compatibility with existing programs. Therefore on these early 64-bit PCs, legacy 32-bit apps were too slow for most consumers. The performance degradation due to the emulation layer for existing software is one of the primary reasons that Itanium architecture never really took off, and Intel considered it "a server chip".

I think you mean Win2K and Win2K3 (maybe, not sure about that one) because AFAIK XP never ran on Itanic. And Itanic does have x86 compatibility hardware but it's too slow to be useful.

One big difference between OSX and Vista is that OSX uses a 32 bit kernel and drivers.

I think you're confused. It's impossible for a 32-bit kernel to run a 64-bit binary so in order for OS X to support 64-bit apps the kernel has to be 64-bit.
 

CU

Platinum Member
Aug 14, 2000
2,415
51
91
Yeah that is what I read last night Kylef. I also read that when running a 32bit app that you could only really address alittle more than 2gig just like in 32bit windows. Although I didn't run across a flag like windows large address aware flag to address more memory.

Its interesting how much of Apple's marketing is lies or stretching of the truth, but nothing usually happens to them. Although I do remember them getting in trouble when the G5 came out and they advertised it as the worlds fastest 64bit computer, and more recently the millions of colors thing with their monitors. And MS gets in trouble for Vista capable stickers, and the computers really can run Vista just not Aero. OK, sorry about the Apple rant.
 

stash

Diamond Member
Jun 22, 2000
5,468
0
0
Originally posted by: Nothinman
However back in 2003, 64-bit XP ran only on Itanium chips, which had a significant limitation in that they were not backwards-compatible. So Microsoft had to emulate x86 support for backwards-compatibility with existing programs. Therefore on these early 64-bit PCs, legacy 32-bit apps were too slow for most consumers. The performance degradation due to the emulation layer for existing software is one of the primary reasons that Itanium architecture never really took off, and Intel considered it "a server chip".

I think you mean Win2K and Win2K3 (maybe, not sure about that one) because AFAIK XP never ran on Itanic. And Itanic does have x86 compatibility hardware but it's too slow to be useful.

One big difference between OSX and Vista is that OSX uses a 32 bit kernel and drivers.

I think you're confused. It's impossible for a 32-bit kernel to run a 64-bit binary so in order for OS X to support 64-bit apps the kernel has to be 64-bit.

No, he's correct on both counts. The OS X kernel is very confusing to me, but it is definitely 32 bit. http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/6

The first 64 bit version of XP ran exclusively on Itanium (I like your name for it better :) ). There was a slight difference in the naming that distinguishes the Itanium version from the x86-64 verion. The former was called XP 64-bit Edition while the latter was/is called Windows XP Professional x64 Edition.

 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
No, he's correct on both counts. The OS X kernel is very confusing to me, but it is definitely 32 bit.

I don't have it handy, but I looked in the dmesg output from a Mini here last night and it definitely said something to the effect of "64-bit mode enabled" at the beginning of the boot process.

The first 64 bit version of XP ran exclusively on Itanium (I like your name for it better ). There was a slight difference in the naming that distinguishes the Itanium version from the x86-64 verion. The former was called XP 64-bit Edition while the latter was/is called Windows XP Professional x64 Edition.

Porting XP to Itanic is pretty retarded since I'd be surprised if HP ever sold a single IA64 workstation. But I guess if they were also doing Win2K3 at the same time the amount of work to build XP from that code would be pretty small.
 

soonerproud

Golden Member
Jun 30, 2007
1,874
0
0
Originally posted by: Nothinman
I think you're confused. It's impossible for a 32-bit kernel to run a 64-bit binary so in order for OS X to support 64-bit apps the kernel has to be 64-bit.

Apple managed to make it happen so it is possible. Microsoft did something similar in Windows 95 so this is nothing new.

There was a big uproar over this in the OSX community in October. Some OSX users felt they were cheated by not having a 100% 64 bit operating system.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Apple managed to make it happen so it is possible. Microsoft did something similar in Windows 95 so this is nothing new.

No, you have it backwards. 64-bit can run 32-bit, 32-bit can run 16-bit, etc but not vice-versa. Win95 did nothing even close to what you're suggesting.

There was a big uproar over this in the OSX community in October. Some OSX users felt they were cheated by not having a 100% 64 bit operating system.

And they were. It took Apple 3 or 4 releases to get the whole thing 64-bit even though they had been claiming it to be true for years before. Having a 64-bit kernel is a minor feat and if you ask Apple all you need to consider yourself running a 64-bit OS even if none of the userland on your system is 64-bit.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Just to clarify: 64bit cannot run 32 but it can emulate 32bit with a wrapper.

Not at all, the 32-bit binary support in AMD64 ports of Linux and Windows is 100% native. I'm going to guess that OS X is the same.
 

Aberforth

Golden Member
Oct 12, 2006
1,707
1
0
Originally posted by: Nothinman
Just to clarify: 64bit cannot run 32 but it can emulate 32bit with a wrapper.

Not at all, the 32-bit binary support in AMD64 ports of Linux and Windows is 100% native. I'm going to guess that OS X is the same.

If that was possible anyone could run 64bit apps in a 32bit OS because the *processor* supports it. You always need a subsystem-dependig upon the processor architecuture to virtualize a process. A kernel written running 64bit code cannot execute a 32bit process natively.

http://en.wikipedia.org/wiki/WOW64
 

CU

Platinum Member
Aug 14, 2000
2,415
51
91
Originally posted by: stash
Originally posted by: Nothinman
However back in 2003, 64-bit XP ran only on Itanium chips, which had a significant limitation in that they were not backwards-compatible. So Microsoft had to emulate x86 support for backwards-compatibility with existing programs. Therefore on these early 64-bit PCs, legacy 32-bit apps were too slow for most consumers. The performance degradation due to the emulation layer for existing software is one of the primary reasons that Itanium architecture never really took off, and Intel considered it "a server chip".

I think you mean Win2K and Win2K3 (maybe, not sure about that one) because AFAIK XP never ran on Itanic. And Itanic does have x86 compatibility hardware but it's too slow to be useful.

One big difference between OSX and Vista is that OSX uses a 32 bit kernel and drivers.

I think you're confused. It's impossible for a 32-bit kernel to run a 64-bit binary so in order for OS X to support 64-bit apps the kernel has to be 64-bit.

No, he's correct on both counts. The OS X kernel is very confusing to me, but it is definitely 32 bit. http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/6

The first 64 bit version of XP ran exclusively on Itanium (I like your name for it better :) ). There was a slight difference in the naming that distinguishes the Itanium version from the x86-64 verion. The former was called XP 64-bit Edition while the latter was/is called Windows XP Professional x64 Edition.

Yeah that link does say it has a 32 bit kernal for drivers. Maybe they split it somehow, 32 bit for device drivers and 64 bit for the rest. That way there is only one translation from 32 bit to 64 bit inside the kernel(s) instead of every driver having to be translated to 64 bit.

Also of interest on that page they mention killing off carbon and only having cocoa be 64 bit. Adobe just announced that the next CS would only be 64 bit on windows because of this. OSX will not see a 64 bit CS until around 2011 two full version from now.

It seems OSX is having some 64 bit growing pains.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
If that was possible anyone could run 64bit apps in a 32bit OS because the *processor* supports it. You always need a subsystem-dependig upon the processor architecuture to virtualize a process. A kernel written running 64bit code cannot execute a 32bit process natively.

There's a little fixup work that needs to be done with syscalls, shared libraries, etc but the processor most definitely supports executing 32-bit x86 code just fine.
 

Continuity28

Golden Member
Jul 2, 2005
1,653
0
76
Originally posted by: CU
I know in Vista64 a 32 bit app can only use 2gigs or 4gigs if it is large address aware. How does it work in OSX? Which is more 64bit Vista64 or OSX, or are they both 64bit all the way through.

I believe in OSX, 32-bit applications can have up to 4GB of address space by default, there is no need for a flag like "Large Address Aware".

The only reason Windows x64 by default allows 2GB for non-Large Address Aware applications is backward compatibility, something OSX doesn't need to worry about.

Still, I'm not sure what that has to do with "how 64-bit" an operating system is, as we're discussing 32-bit applications.
 

CU

Platinum Member
Aug 14, 2000
2,415
51
91
Originally posted by: Continuity28
Originally posted by: CU
I know in Vista64 a 32 bit app can only use 2gigs or 4gigs if it is large address aware. How does it work in OSX? Which is more 64bit Vista64 or OSX, or are they both 64bit all the way through.

I believe in OSX, 32-bit applications can have up to 4GB of address space by default, there is no need for a flag like "Large Address Aware".

The only reason Windows x64 by default allows 2GB for non-Large Address Aware applications is backward compatibility, something OSX doesn't need to worry about.

Still, I'm not sure what that has to do with "how 64-bit" an operating system is, as we're discussing 32-bit applications.

I did read somewhere that that they cannot get a continuous amount of memory past around 2gigs or so. They have to use some probleming tricks to use more memory. It is not as simple as a flag.

My post was really about two things how much memory can a 32bit app address and how 64bit was OSX and did that allow a 32bit app to address more memory.