Real vs. Virtual vs. Physical (Was: Designing around a 6502

From: Sean 'Captain Napalm' Conner <spc_at_conman.org>
Date: Wed Feb 12 18:57:00 2003

It was thus said that the Great Hans Franke once stated:
>
> > > (*1) Often the term real memory is used, but that's
> > > not correct. Physical memory is the memory installed
> > > in a machine, while real address space is the addressable
> > > amount of RAM by a CPU without using virtual addressing.
> > > Virtual address space can never excede real address space
> > > (After all, it's the maximum address range generated by
> > > the (logical) CPU), while physical memory can go beyond
> > > real or virual address space.
>
> > Virtual address space *can* exceed physical address space---the 80386 (and
> > therefore, on topic) is a good example.
>
> Err... rereading my paragraph, I can't see anything wrong.
> I didn't say Virtual can not exceede Physical. Of course it
> can. Just to make it clear:
>
> Physical is the amount of memory installed, or installable.
> Real is the address space addressable by a CPU.
> Virtual is the address space addressable before translateing.

  So is "real" the amount of memory directly addressable by the address pins
on the CPU? If so, virtual can still exceed real. In OS class, the term
"real" was never used, and "virtual" was rarely used; the terms "physical"
and "logical" were the terms used most often, where a "logical address" was,
through the MMU, translated to a "physical address."

> In fact, the 286 would have been the right example here. it
> could address 16M physical, while real and virtual addressing
> was still limited to 64K or 1 MB.

  Um, I don't quite follow this. While at any given moment you could only
see 256K (64K code space (CS), 64K data space (DS), 64K stack (SS) and 64K
of other (ES)) you could still gain access to all 16M of memory (using a
loop that cycled through all of memory).

  I'm still not following your definition of "real."

> > -spc (And attempting to use all 64TB would probably cosume huge amounts
> > of physical RAM just for the lookup tables ... )
>
> Nop. you always have only a maximum of 2^13 descriptors.
> no mater how big the segments are. So if you use all
> 8192 Entries, the table is just 64K ... Nice value :)
> IIRC a entry has 8 bytes, containing base, limit, type, privs.
>
> So nom matter if you used a physical memory of 1 MB, or
> 4 GB, each descriptor table could only grow up to 64k.
> Hmm... oh, yes, there have been more tables: Local,
> Global, Task... Still, it comes up to a maximum of 256K.

  Ah, but then you don't have a fully usable 4G segment, just a 3.75G
segment. I want a full 4G per segment, which then means you need to use
paging, which is a second layer of address mapping the 386 can do and that's
where you start getting these huge page tables ...

  -spc (So you have a logical address going to a linear address going to a
        physical address ... )
Received on Wed Feb 12 2003 - 18:57:00 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:35:54 BST