You are confusing addressing space with physical memory space. Linux, Windows and various other OSes use the HD to expand physical memory by using virtual memory. All modern x86 CPUs do the virtual to physical translation using page tables and TLBs as caches to speed that up.
In my experience well running systems don't allocate more
than about twice as much virtual memory as there physical
memory to back it up lest system performance drop off from
excessive page faulting (aka thrashing).
On Yonah, you can only allocate 4GB of memory space to the various applications, kernel, drivers and devices. It is not uncommon for 128MB of graphics memory to be allocated 256-384MB of address space. The kernel takes about another 64-256MB deending on what it is needed to do and the various loaded drivers.
Yeah, on a laptop you really want to toss around large
amounts of virtual memory. After all the incredibly fast
disk drive you find on laptops makes excellent backing
store. Plus whatever real memory you have on a laptop
should be used for large page tables instead of app
code and data.