Julius:
“Isn’t there a difference between physical memory and virtual memory? Can’t the x86 architecture handle enormous amounts of virtual memory?”
Yes and yes (depending on your definition of enormous, I suppose).
Physical memory is just that, the ‘sticks’ you physically plug into slots inside your computer. Virtual memory, in a nutshell, refers to the method of an OS presenting non-contiguous memory as if it were contiguous. It’s an abstraction layer. Often times this means that some of the non-contiguous memory is actually a file on the hard disk, ‘swapped’ into and out of RAM as it’s needed.
“What I’m being taught in college…”
Sounds like they’re telling you the truth. During boot-time, some peripherals are assigned memory locations that the CPU reads from/writes to. This happens dynamically now (Plug-And-Play) but in the past, folks used to have to set the memory address themselves via DIP switches. That sucked. Reassigning these memory locations during runtime isn’t normally done (never, as far as I know).
“But then I heard that there is virtual memory, but that’s where those pagefiles come into play, I guess.”
Pages (pagefiles) may be files on disk or regions of memory or even something else (Vista lets users plug in a USB thumb drive to increase system memory). They don’t have to be files on disk.
See http://en.wikipedia.org/wiki/Virtual_memory for more info.
See my above link for some background math.