> I see the problem. You have the definition of virtual memory wrong.
> Virtual memory is strictly a software concept, and has nothing to
> do with physical memory, which generally consists of RAM + swap.
I belive that YOU have the definition of virtual memory wrong.
> To quote from Tanenbaum, "Modern Operating Systems":
> The basic idea behind virtual memory is that the
> combined size of the program, data and stack may exceed
> the amount of physical memory available for it.
In this case, Tanenbaum uses the term "physical memory" to refer to
RAM, not RAM+swap. This is obvious, because no process can have the
combined sizes of it's program, data, and stack exceed RAM+swap. In
fact, the combined sizes of ALL RUNNING PROCESSES must be less than
RAM+swap.
Tanenbaum's sentence does not define virtual memory, but only gives
"the basic idea behind" it. Now, the 5th edition of Doctor Linux,
Part XIII, 7.1 Making Virtual Memory, says: "To create an additional 8
megs of virtual memory..." and then shows how to make a swap file.
The 8 megs of swap space is the virtual memory. Virtual memory is NOT
the 4 gigs of "addressable memory."
One can fragment the 4 gigs of addressable memory, but that would take
a lot of work. The OS will move data in RAM and swap (a.k.a. "virtual
memory"), as needed. So if two megs of RAM+swap are available, but
only in 512k blocks, and a process tries to allocate another meg, the
OS can move the data around in RAM+swap to make a contiguous 1 meg
block.
That is why we programmers don't have to worry about fragmenting
memory, until we reach the 4 gig limit. The OS writers have already
solved the problem.
> If you still disagree, I suggest we take the discussion off-line.
Only if _I_ get the last word _online_. :-)
-jack
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|