Virtual memory is a way to cut down on the constant memory swapping that's always going on inside your system. When you want to run a program, your computer has to load up the values and instructions into RAM. But what happens when you're running a program that needs more memory than you have?
This is where memory swapping comes into play. With memory swapping, the portions of the data you want is broken down into pieces. When the program needs to access a particular piece of this chunk of data, it swaps it into memory in exchange for some code that you aren't using at the moment.
The problem with this is that your HDD access speed is pretty slow when compared to the rate your RAM and CPU are working at. Virtual memory helps cut down on the problem.
Now, as I mentioned earlier, when you are setting virtual memory in Win95 or Win3.1 (DOS doesn't support virtual memory), you have to choose what HDD you want, assuming you have more than one like me. Well, this is because virtual memory is still on your HDD.
Isn't that confusing? Basically, what your CPU does is take a part of your HDD as make it into RAM. It uses the HDD to store memory addresses, and although this isn't as fast as your physical RAM, it does go much faster than having to take it from your HDD when it isn't in the virtual memory form.
This maybe why when your HDD is almost to its capacity you noticed your system performance take a hit. Your computer didn't have as much virtual memory.