jess: RISC OS has no support for memory mapping in terms of mmap() at all. Chris Williams has done some work on this, though. As did one of Dave Thomas's friends, but this was many years ago.
RISC OS's virtual memory is the most limited you can manage: in the basic sense, all it means is that logical memory addresses aren't used. For example, all WIMP programs appear at 0x8000, and they are swapped in and out by the WIMP/kernel on Wimp_Poll. With a good virtual memory system, applications can share code and data for almost free, leading to massive gains in memory efficiency. For example, look at all the programs that link to UnixLib: each program has its own copy. GCCSDK4 hopefully will help solve this problem with shared libraries. I don't know if the library gets loaded multiple times, once for each program using it, however. If this is the case, your only saving is disc space. In UNIX, the library is only loaded into memory once, but it is "mapped" into each program, so it looks like they've got their own copy, but they're actually sharing a single copy. This gives memory usage improvements, as well as improving performance as there's only one copy of the code that can go through the CPU's cache.
In summary: Virtual memory is good. Often, swap is good. The two aren't the same, and don't judge swap entirely on experiences from Windows. On UNIX, for example, the VM system will swap out data that's not been used in ages to disc, and then use the freed up memory for caching data from disc that you use often, thus actually increasing performance, not reducing it.