Such techniques are still used in some operating system you know very well ;-)
I was expecting someone to make a snarky comment like this...
Yes, Extended Memory Objects bear a strong resemblance to segmented memory/memory banks, and it is a compromise.
However, unlike memory banks, mapping in an ExtMem object does
not redirect the entire address space to the newly mapped memory. So accesses to all 2GiB of "normal" RAM go unimpeded; no bank switching necessary. That does make it less problematic, although developers should still heed Hans-Joerg's advice to treat it more like a file that's accessed by offset rather than as RAM.
Alas, on C64 you had to use memory banks to access all 64K RAM but for some reason 6502 and its descendants are not considered as "bad designs" like 8088/8086. Certainly 8088 was not too nice to program for but when I did some coding on 486 in Turbo Pascal it was not bad at all.
Possibly because the "C64 was cool." Or maybe because the 6502 & decendants didn't go on to become the core of mainstream computers.
Yes, a compiler can take care of the bank switching for you. Plus, the 80486 also had a mode allowing full 32-bit RAM access without switching.
Hans