- More memory — programs keep the familiar OS/2 arena limits, but the old 4 GB system-wide ceiling is gone: every OS/2 process gets its own memory, bounded only by installed RAM.
What does the amount of installed RAM have to do with the address space available to software?
Fair question — my wording was sloppy.
As you may already know, installed RAM has nothing to do with how much address space a program gets. That part doesn't change at all. An OS/2 program is still a 32-bit program with the same arena limits it's always had: same 512MB line, same VIRTUALADDRESSLIMIT, same ~3GB ceiling at best. None of that moves, and none of it was meant to.
What changes is how much RAM the *machine* can use. The old kernel can only see about 4GB of RAM, total. That isn't a per-program limit — it's the kernel's own limit on how much memory it can keep track of. It can't count any higher than that. Put 32GB in the box and OS2KRNL uses 4GB and ignores the rest.
A 64-bit kernel doesn't have that problem. It can use every gigabyte you install. Each OS/2 program still gets exactly the same 32-bit view and limitation it always had — but the kernel is able to address the total physical RAM installed. When a new 32-bit OS/2 process is created, the Linux kernel can back it with physical RAM from anywhere in the machine, including the memory above the 4GB mark that OS2KRNL could never reach on its own (32-bit physical address limitation). The new process still only ever sees its own 32-bit address space — it just no longer matters where in physical RAM that address space actually lives, because mapping it is the kernel's job, not the program's.
If you ran 32-bit Linux or Windows with PAE back in the day, same idea: each program still stuck with its usual couple of GB, but the machine could hold 64GB
and keep a lot of programs running in it at once.
One thing that does NOT improve: the shared area where DLLs and named shared memory live. Still one 512MB region for the whole system, same as always — that's what keeps shared memory behaving the way OS/2 programs expect. Extra RAM buys you nothing there.
Also of note, I'm trying to do a faithful reimplementation of the OS2KRNL's global shared memory right now because I don't know what breaks if it changes. When things are stable, we might be able to remove some of these traditional limitations.
So "bounded only by installed RAM" meant the machine's usable memory, not any one program's reach. I should have said that.