Computer architecture is fascinating ..
Let's look at the XT since you bring it up.
The 8088 has 20 address lines, allowing you to connect 1MB of RAM to it. There is no virtual memory support in the processor, so addressability is limited - it can address up to 1MB total.
The memory map and how that memory is used is an entirely different issue. Some of the areas are reserved for I/O expansion or ROM chips instead of RAM memory. But that does not change the fact that the processor only has 1024*1024 bytes that it can address. That just means that some of the bytes are RAM, some or ROM, and some are on I/O cards. There will be 'holes' in the memory map where no RAM, ROM or I/O cards exist.
Now lets look at a LIMS board. With one of those you could have many megabytes of RAM on the system - let's say 10. But only 16K or 64K (or some arbitrarily small amount) of that memory is 'visible' to the 8088 at any one point in time. That hardware and software works by mapping a chunk of it's memory into the memory map of the 8088. You might have 2 or 4 chunks available even - that's not an important detail. The important thing to remember is that even though you have 10MB on a card somewhere, the 8088 can only see a small portion of it at any one point in time. That's a classic bank switching setup. If effectively gives you access to a lot more RAM, but it is not all addressable at the same time.
Virtual memory goes the other way - it gives you the illusion of having a tremendous address space. The pages of memory that you are actively working with have to appear in physical memory where they can be addressed by the CPU. Pages that are not in use are stored out on disk, or some form of other storage. The CPU and operating system work to bring referenced pages into memory 'on demand', and hide it from the application.
You are basically 'over committing' the physical memory. This works well because most applications don't need access to all of their address space at the same time. When you take it too far you feel it - the operating system starts 'paging', which is swapping pages in and out from main memory to disk, and that's slow when you are waiting for something to happen.
Chuck is absolutely right to bring up address space, because that is how the programmer sees the machine. Most machines have far more address space available in a single process than can be physically connected to the machine, especially when you take into account that each process can run in a different address space. On a 286 this is done using a nasty system of segment registers, which to my knowledge only OS/2 ever used. (Maybe a Unix clone tried it too?) On a 386 or better the nasty 286 system of segment descriptors is available, but a much nicer 'flat' address space model is also available. All of the modern OSes use the flat address space.