Thread (5 messages) 5 messages, 3 authors, 2011-02-19

Page table queries

From: Rajat Sharma <hidden>
Date: 2011-02-19 09:14:44

So, in the start, the page might have kernel mode address, but in the
end it has user mode address. But kernel is still the one that tracks
all the page...be it anonymous or non anonymous ones.
Not really. In this particular case of .nopage (page fault handler) of
vma, we already have a user space virtual address for the faulty page,
we just need it to map it with a physical page frame (RAM or device
memory). Just allocate a physical page frame without any address,
caller for .nopage will take care of properly setting its user space
virtual address (page->va). So, no association with kernel space
virtual address is required, e.g. it can be high memory page too
without any kernel mapping.

Rajat

On Sat, Feb 19, 2011 at 2:10 PM, Mulyadi Santosa
[off-list ref] wrote:
Hi :)

I'll try to help...

On Sat, Feb 19, 2011 at 13:10, anish singh [off-list ref] wrote:
quoted
As i understood?whenver a user space program is run it is represented in
kernel using VMA which is managed by struct mm_struct
and whenever the program is trying to read/write to a memory location in
user space it will be directed to physical address using PAGE TABLE
translation done by struct mm_struct(done in kernel space).Am i right?
i think not "done" but mm_struct points to PGD that represent's the
whole process address space. Using information provided there, MMU
does translation.
quoted
Suppose?a simple driver wants?the?user to directly access its device memory
then?we use mmap.This mmap?associates a set of user space virtual address
with?device driver memory and it is done by creating kernel page tables for
the user space virtual addresses.Is the page table translation done
everytime whenever user space?does read/write to the device memory??
if it's recently translated, quite likely it is already cached in TLB
(translation look aside buffer)
quoted
In .nopage function?call we return the page associated?with the physical
address which the user wants to associate with user space?virtual address.Is
the page?address?returned by the nopage function same as?seen by the user or
will it be converted to user space virtual address(range between 0-2 GB)?
AFAIK, nopage is one of the functions that handle minor page fault, no?

Anyway, memory allocation, usually start by kernel allocates a page.
Then it is "handed" to user space memory allocator.

So, in the start, the page might have kernel mode address, but in the
end it has user mode address. But kernel is still the one that tracks
all the page...be it anonymous or non anonymous ones.

Does it help? :)



--
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help