Re: Totally confused about kmap, highmem, and VM in general

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

 



Never mind, I just noticed the other high memory thread which goes
into greater detail than this one, sorry!


On 8/8/06, Chris Littell <chris.littell@xxxxxxxxx> wrote:
I have a very basic question along the same lines.  The kernel uses
the upper 1GB of a 3GB/1GB split, but I dont understand why it cant
map memory into the lower 3 GB of its address space?  Is this just a
logical restriction, or a 'feature' of the x86 architecture?


- Chris

P.S. I am a relatively new lurker to this list, I'll introduce myself
one of these days...


On 8/5/06, borasahin@xxxxxxxxxxx <borasahin@xxxxxxxxxxx> wrote:
>
> > > If so, why does the kernel need these areas of memory mapped into its
> > > virtual address space? It seems like the kernel could keep a list of
> > > all page frames that are available and then use this to map in page
> > > frames for userspace memory without ever having it mapped into kernel
> > > memory space.
> >
> > Besides the "kernel's own data structures" argument, there are
> > security reasons why the kernel has to clear out a page's data
> > before mapping the page into user space.
> >
> > This is more efficiently done if the page is already mapped into
> > kernel address space, and does not have to be mapped in especially
> > for the purpose.
> >
> > The kernel will leave the memory mapped into kernel address space
> > after it has been given to a user process.  This makes it easier
> > to process the page in the future, eg. after the process has stopped
> > using the page.
> >
> > > Then, lets say we have a machine with 1.5GB of memory.  The kernel
> > > linearly maps 896MB of space into kernel space and the leaves teh
> > > remaning 128MB for temporary mappings.  When are these temporary
> > > mappings done, and for what purpose.  Would these temporary mappings
> > > take place when user processes require space?
> >
> > The temporary mappings are done when the kernel needs to access
> > memory above the 896MB boundary.  The kernel needs to do accesses
> > when it has to clear out the data in a page before it is given to
> > userspace, or when userspace calls sendfile(2) and the kernel has
> > to copy data into or out of the page.  There probably are other
> > occasions too.
>
> So after the light of infos above, is my general summary correct: a useful
> idea, one-to-one mapping, had some troubles when physical memory past the
> 896MB/1GB barrier but then resolved by highmem even if not exactly(Full
> solution is 64 bit)?
>
> --
> Bora SAHIN
>
> --
> Kernelnewbies: Help each other learn about the Linux kernel.
> Archive:       http://mail.nl.linux.org/kernelnewbies/
> FAQ:           http://kernelnewbies.org/faq/
>
>


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux