NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Install i386 or amd64?



On Wed, Jan 29, 2014 at 03:19:23PM -0600, Dave Huang wrote:
> 
> On Jan 29, 2014, at 15:07, jmitchel%bigjar.com@localhost wrote:
> 
> >> On Tue, Jan 28, 2014 at 06:26:13AM -0500, Jason Mitchell wrote:
> >>> 
> >>> Not to advocate i386 over amd64, but doesn't NetBSD/i386 support PAE and
> >>> thus can access >2GB of RAM?
> >>> 
> >> 
> >> You are still limited to a 32bit address space in the process so you
> >> still can't go over the 4Gb memory limit and that is divided between
> >> kernel and user space hence why a process gets 2(ish)Gb.  These
> >> limitations don't apply to a true 64bit system.
> >> 
> >> --
> >> Brett Lymn
> >> Staple Guns: because duct tape doesn't make that KerCHUNK sound - xkcd.com
> >> 
> > Please don't post about things that you don't understand. Here's the
> > information from Wikipedia:
> > 
> > http://en.wikipedia.org/wiki/Physical_Address_Extension
> > 
> > And here's the first four lines:
> 
> Did you even read the whole thing? Because you should... the first four 
> lines don't tell all there is to know about it. Read further and be 
> educated: "The 32-bit size of the virtual address is not changed, so 
> regular application software continues to use instructions with 32-bit 
> addresses and (in a flat memory model) is limited to 4 gigabytes of 
> virtual address space."
> 
> Just as Brett said: "You are still limited to a 32bit address space in 
> the process so you still can't go over the 4Gb memory limit"

Not only that, but unless you want really expensive system calls all
of the kernel virtual address space has to be within the 4G.
Most x86 unix system give the process 3G, windows only gives it 2G.

IIRC someone saying that the sparc mmu 'shoe-horned' the kernel into 'only'
0.5G - a long time ago when we first fell foul of not having enough KVA
for all phyical memory. So that system might have left 3.5G for each user
process - but most of it would have been paged out.

If you run an i386 process on an amd64 kernel I think you get all 4G
of address space for the process.

It is also possible to compile programs that run with 32bit pointers
that run on amd64 in 'long' mode.  In this case it might be possible
to have special 64bit pointers and access above 4G.
I think modern gcc supports such a format, but netbsd can't run the
processes.

        David

-- 
David Laight: david%l8s.co.uk@localhost


Home | Main Index | Thread Index | Old Index