Page Tables (mm_mapping.c)
Page Tables Overview
We use two level pagetables of two types:
-
Pagetables for threads. These pagetables provide virtual to physical address
mapping for lower two gigabytes of virtual memory and one top
level table is allocated for each thread. Top level pagetable has 512
entries.
-
Pagetables for shared kernel memory, i.e. for the last gigabyte of virtual
address space. This needs one top level pagetable of 256 entries for
entire system.
Every pagetable at second level has 1024 entries of size 32 bits, so its size
is 4KB. Every entry at second level maps also 4KB page. Entries in topl level
pagetable can either point to second level pagetable or they can map whole 4MB
of memory. In that case no second level pagetable is present.
Page Table Entries