We currently migrate to MediaWiki from our old installation, but not all content has been migrated yet. Take a look at the Wiki Team page for instructions how to help or browse through our new wiki at wiki.linux-vserver.org to find the information already migrated.
When folks talk about Memory, they usually mean the expensive modules they buy and plug into the (typically x86) based machines. The operating system, in our case Linux, handles that physical memory according to the mechanisms of the architecture (in this case x86). Most architectures used nowadays have the concept of virtual memory which basically is linear address space, in units of pages, which can be real pages in memory or just not there. The operating system now knows about several types of such pages, for example, there is the file system based page, which can be a file or an executable (of course, such a file will usually require several such pages) and, an important detail here is, the pages do not necessarily have to be in RAM. Then there are anonymous pages, which are used by some application (those are usually read-write) and if there is swapping enabled, those pages can also be written to some swap area. In addition to those types, there are a bunch of special pages and methods to handle those pages: for example, the so called zero page, which is (at least) a page just containing read-only zeros. It will usually be used if you request some memory area from the [memory management system (mm)]. The read-only property causes a trap (page fault) once you write to that page, which then will be replaced by actual memory. A similar thing happens with shared memory pages, which are basically marked read-only and copied on write. Pages which get swapped out (to swap space) will not be freed immediately, they are kept as swap cache; similar happens to file caches (inode cache): they are marked as 'unused' but will not be freed until somebody requires a page.
Now, on x86, the total addressable space is 4GB and this is also the maximum of virtual address space an application (or the kernel) can see. To simplify the transition of memory from userspace to kernelspace, the address space is divided between kernel and userspace.
So, as you can see, the relation between processes and physical RAM is not straight and simple :)
Q. this may be stupid, but why isn't the virtual memory size equivalent to the available physical memory and swap space? It seems it is larger than the hardware can handle (unless you have 4gigs of physical memory). but I guess when you say 3GB of virtual memory, its more of a page of pointers or something, rather than actual memory.
yes, that is right, but let me answer that with another question: why is an int 32bit and not just ld(N) ? i.e. to represent the value 20 you need just 5 bits, so why 'waste' 32 bits for that?
IMHO the answer is simple and straight forward: the hardware has to have certain limits, for the int this is 32bit; for the address space that is 4GB on x86
Q. is that due to the instruction set on the CPU itself?
well, actually the 32bit address space and the MMU:
2^32 = 4294967296 = 4GB
the x86_64 has a much larger address space (as it is 64bit based) and the MMU there usually has 48bits at least
Q. if there's more than 4 gigs, does that mean it is or isn't used?
as I said before, a mapping is required between virtual adresses and phyiscal ram. without 'dirty' tricks (read PAE) 4GB is the maximum on x86
Beyond that, it is the dreaded HIGHMEM support (which is a special case below the 4GB). to access those >4gigs you do so at a cost, so its slower [but perhaps this is getting ahead of things?...] even with 4GB RAM, the kernel can only address 1GB (in the default split) directly. the thing here is, changing the mapping from virtual to physical memory is expensive and a kernel which can address 1GB will have to reserve a certain area for mapping in and out the remaining 3GB (on a 4GB system). this mapping window, where the 'high' memory pages are mapped in and out is called high mem so with the default 3/1 split, you can get roughly 970MB of memory. even with 2GB RAM this will not change, only enabling the dynamic mapping (highmem) will give you access to that
Q. you said the virtual memory isn't backed by RAM, but is it backed by anything?