Linux MM : virtual memory address space

pramod gurav pramod.gurav.etc at gmail.com
Thu Mar 6 03:56:22 EST 2014


On Wed, Mar 5, 2014 at 12:39 AM, Jeff Haran <Jeff.Haran at citrix.com> wrote:
>
>
>
>
> From: kernelnewbies-bounces at kernelnewbies.org
> [mailto:kernelnewbies-bounces at kernelnewbies.org] On Behalf Of pramod gurav
> Sent: Monday, March 03, 2014 11:33 PM
> To: priyaranjan
> Cc: kernelnewbies
> Subject: Re: Linux MM : virtual memory address space
>
>
>
>
>
>
>
> On Mon, Mar 3, 2014 at 11:52 PM, priyaranjan <priyaranjan45678 at gmail.com>
> wrote:
>
> I was going through http://linux-mm.org/HighMemory
>
>
> "Currently the 32 bit x86 architecture is the most popular type of computer.
> In this architecture, traditionally the Linux kernel has split the 4GB of
> virtual memory address space into 3GB for user programs and 1GB for the
> kernel"
>
>
>
> What about 64-bit system? Where does the code lie in linux kernel for the
> check?
>
> Is there any latest and updated memory management documentation for Linux
> kernel?
>
>
>
> Regards,
>
> Priyaranjan
>
>
>
>
>
> Priyaranjan,
>
>
>
> As below link suggests:
>
> http://users.nccs.gov/~fwang2/linux/lk_addressing.txt
>
>
>
> Also read this blog written in chinese:
>
>
>
> http://adam8157.info/blog/2012/07/linux-x86-64-vm/
>
>
>
> on 64 bit arch the virtual address space is huge (2 to thr power of 64). So
> the overhead of translating the virtual addresses will be high. TO avoid
> this only lower 48 bits are used to form virtual addresses.
>
>
>
> I believe this statement about only the lower 48 bits being used it not
> correct. That would imply that the upper 16 bits of all virtual addresses on
> x86_64 would be the same, which is clearly not the case since the upper 16
> bits of user space vas are all 0s yet the upper 16 bits of kernel space vas
> are all 1s.
>
>
>
> Jeff Haran
>
>
Hi Jeff,
Just noticed a line in /proc/cpuinfo on my 64 bit linux Machine which is:

--> address sizes : 36 bits physical, 48 bits virtual

This should confirm the statement that, only lower 48 bits are used
for virtual address space on a 64 it arch.
And about upper 16 bits in kernel being 1s in the address range shown
in the link, I think they are not correct. The writer of the blog has
done some wrong manipulations. The user space addresses are correct.
Kernel Space address raneg has to be: 0x0000800000000000 to
0x0000ffffffffffff.

>
>
>
> This virtual space will still be very large (256 TB) and hence the
> user/kernel split is 1:1 (128TB:128TB). And as suggested in link it is very
> unlikely that you will have such a huge RAM(more than 128TB) installed on
> any machine there is no concept of HIGHMEM.
>
>
>
> Hope this clears the air a bit.
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
>
>
>
> --
> Thanks and Regards
> Pramod



-- 
Thanks and Regards
Pramod



More information about the Kernelnewbies mailing list