Windows 64

Mark Waddingham mark at livecode.com
Sat May 25 15:56:43 EDT 2019


On 2019-05-24 17:21, Bob Sneidar via use-livecode wrote:
> A 32 bit OS can only address around the first 2 gigs of memory. Not
> very good for running multiple apps.

This was the case before OSes started to use virtual addressing and 
paging, but no longer.

The bitness of the OS determines the maximum amount of memory any one 
application can access certainly, but they don't *share* this space.

Specifically:

   - iOS/macOS 32-bit: every application has its own 4Gb (32-bit) address 
space
   - iOS/macOS 64-bit: every application has its own 256Tb (48-bit) 
address space*
   - windows 32-bit (older): every application has its own 2Gb address 
space
   - windows 32-bit (newer): every application has its own 3Gb address 
space
   - linux/android - I believe these have the same as iOS/macOS

The key difference to be noticed here is between windows 32-bit and all 
others...

UNIXy 32-bit OSes completely separate user and kernel space - a context 
switch between these two modes is required to invoke a system call.

Windowsy 32-bit OSes have some kernel stuff in the user space address 
space (but protected). The difference between older and newer 32-bit 
OSes started in XP I believe - there is a flag you can set in the boot 
params for XP which means the kernel is only given 1Gb of user space. (I 
believe this was always on for post-XP OSes).

In 64-bit, all OSes work similarly - the very very very very large 
address space available to any one context is split into zones. Some 
zones are kernel, some are user space (for applications). The kernel 
ones are only accessible when running in the kernel protection mode.

Of course, the amount of memory you can actually have in total allocated 
in the system is limited by physical RAM and disk space (i.e. the paging 
file) - in 32-bit OSes the amount of this any one app could use was 
limited; in 64-bit it is still limited, but the limit is so high that it 
is much less likely to be hit.

For most apps the 32-bit vs 64-bit address space differences probably 
don't make any difference - but for apps which process large amounts of 
data which would be more performant if they could hold all that data in 
RAM, 64-bit is a huge boon.

Warmest Regards,

Mark.

* Both ARM64 (AArch64) and x86-64 processors currently only use the 
lower 48-bits of the 64-bit pointers. However, there is scope in both 
for this to be expanded in the future to the full 64-bit capability. Of 
course it might be that it ends up getting used for something else - for 
example, recent ARM architectures have added an interesting feature 
which makes use of the 'empty space' in 64-bit addresses - certain 
critical pointers can use those extra 16-bits to hold a piece of 
encrypted information which allows the processor to validate use and 
access within the processor itself.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps




More information about the use-livecode mailing list