login
Header Space

 
 

temporary mapping

May 12, 2008 - 9:29am
Submitted by Anonymous on May 12, 2008 - 9:29am.
Linux

The reason why kernel maps HIGH MEMORY to zone_normal because of kernel's limited addressing capability.
so the question is in what all situations kernel maps high memory to ZONE_NORMAL ?
is it when process requests more memory ? or kernel wans more memory ? or what else ?

What does "mapping HIGH

May 12, 2008 - 1:42pm
Giuseppe Calderaro (not verified)

What does "mapping HIGH MEMORY to ZONE_NORMAL" mean ? In 32 bit architecture ZONE_NORMAL is from 16Mb to 896Mb.

As you said What does

May 12, 2008 - 11:52pm
Anonymous (not verified)

As you said What does "mapping HIGH MEMORY to ZONE_NORMAL" mean ? In 32 bit architecture ZONE_NORMAL is from 16Mb to 896Mb.

my question is : how does kernel access the HIGH_MEMORY (if more than 1 GB of RAM is installed) ???
of course it has to map it to the ZONE_NORMAL.

Of course NOT. The kernel

May 13, 2008 - 3:35am
Giuseppe Calderaro (not verified)

Of course NOT. The kernel uses some of the 128Mb left (1Gb - 896Mb) to map RAM above 896Mb.
ZONE_NORMAL linearly maps RAM from 0 to 896Mb (-1 :-)). Page tables about ZONE_NORMAL are never modified. See kmap_high in /mm/highmem.c

yeah, you are right, now

May 13, 2008 - 9:23am
Anonymous (not verified)

yeah, you are right, now coming back to origional question...
in what all situtations kernel maps high_memory to low (128) memory ?
when process in user mode wants more space ?
when kernel wants more space ?
or something else ?

Let me explain this way,

May 29, 2008 - 8:02am
Anonymous (not verified)

Let me explain this way, assume that you are using default split of 3:1 on 32bit machine, where 4GB of address space is divided to 3Gb of process address space and 1GB of kernel address space. This 1Gb of kernel address space is mapped to your RAM.

Case 1: If your RAM is 1GB it maps 896MB and leaves out the top 128 MB for noncontiguous memory allocation and fix-mapped linear addresses.
Case 2: If your RAM Is 2GB, you have only 1GB of kernel address space left out(3:1 split) so using this you can map only 1GB of physical RAM and could not use the remainining RAM. so only that 128MB is reserved. Using it you can now map all the rest of RAM to your kernel address space as you use it. Thats what we call it as high memory. And all this wont hold good on 64 bit machines. Where you have lots of address space.

All the above things will change when you use different CONFIG_VMSPLIT options.

Thanks
Akash.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
speck-geostationary