Contents of CR3 register when a kernel thread is executed

Mulyadi Santosa mulyadi.santosa at
Mon Apr 18 15:36:10 EDT 2011

On 18/04/2011, limp <johnkyr83 at> wrote:
> Hi all,
> I am trying to understand in what extend the PGD (page global directory)
> value stored in the CR3 register indicate the running process/thread by the
> Linux scheduler.
> I know that each process has its own PGD value but what I am confused about
> is the value of CR3 register when kernel threads are scheduled.

kernel thread(s) simply borrow latest scheduled process's PGD ( that
means, the entire address space)....this is done to save unneccessary
TLB flush since kernel thread operates in kernel space and that's the
same to all processes


Mulyadi Santosa
Freelance Linux trainer and consultant


More information about the Kernelnewbies mailing list