On 10/17/05, suresh pedamallu <suresh.iitr@xxxxxxxxx> wrote: > Hi, > In linux each process has seperate page table which represents 4GB of > virtual memory. In this page table 3GB is for user space memory and > 1GB is for kernel space memory. As all processes run on same kernel, > the page table entries for 1GB (corresponding kernel virtual memory) > will be same for all processes. > The page table for the currently running process is pointed by the cpu > register cr3 and whenever another process is scheduled in the page > table of corresponding process is pointed by cr3. > AFAIK the page_tables remains same for each process as kernel has the page_tables for all the physical RAM upto 896MB direct mapping and above 896MB temporary mappings in VMALLOC_RESERVE virtual address range ...... And the CR3 register is actually pointing to one of the PGD entries which actually points to the PMD and PTE entries for that process which is scheduled and those PGD/PMD/PTE entries are selected after decoding the linear address to get the entries offset in PGD/PMD/PTE tables and then make up the physical address by adding last 12-bits (PAGE_SHIFT) of linear address into the 24bits taken from the PTE Entry got from the traversing thorugh PGD/PMD tables ..... So the physical memory used by the scheduled process is accessed ..... (CMIIW) -- Fawad Lateef -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/