物理页(PP, Physical Page),物理内存中的页; 磁盘页(DP, Disk Page),磁盘中的页。 linux中的分页 (linux 2.6.11) 页全局目录(PGD, Page Global Directory ) 页上级目录(PUD, Page Upper Directory) 页中间目录(PMD, Page Middle Directory) 页表(Page Table) 常规的32bit分页(常规使用4k分页,最开始使用三...
每个进程有它自己的PGD( Page Global Directory),它是一个物理页,并包含一个pgd_t数组。 关键字: PTE: 页表项(page table entry) PGD(Page Global Directory) PUD(Page Upper Directory) PMD(Page Middle Directory) PT(Page Table) PGD中包含若干PUD的地址,PUD中包含若干PMD的地址,PMD中又包含若干PT的地址。
[转帖]Linux:页表中PGD、PUD、PMD、TLB等概念介绍 1、PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相...
Linux:页表中PGD、PUD、PMD等概念介绍 1、PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相应位置,具体...
虚拟页(VP, Virtual Page),虚拟空间中的页; 物理页(PP, Physical Page),物理内存中的页; 磁盘页(DP, Disk Page),磁盘中的页。 linux中的分页 (linux 2.6.11) 页全局目录(PGD, Page Global Directory ) 页上级目录(PUD, Page Upper Directory) 页中间目录(PMD, Page Middle Directory) 页表(Page Table)...
.prot_l1 = PMD_TYPE_TABLE, .domain = DOMAIN_KERNEL, }, } create_mapping的参数是struct map_desc类型,用于描述一个虚拟地址区域线性映射到物理区域。基于这块区域创建PGD/PTE,下面我们就进入map_lowmem。 static void __init map_lowmem(void)
1、PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。...--> copy_mm() --> mm_init() --> pgd_alloc() --> set_pgd_fast() --> get_pgd_slow()...
Linux内核针为使用原来的3级列表(PGD->PMD->PTE),做了折衷。即采用一个唯一的,共享的顶级层次,叫PML4[2]。这个PML4没有编码在地址中,这样就能套用原来的3级列表方案了。不过代价就是,由于只有唯一的PML4, 寻址空间被局限在(239=)512G, 而本来PML4段有9位, 可以支持512个PML4表项的。现在为了使用3级列表...
如果选择4级页表,那么使用PGD,PUD,PMD,PT;如果使用3级页表,那么使用PGD,PMD,PT;如果选择2级页表,那么使用PGD和PT。如果不使用页中间目录,那么内核模拟页中间目录,调用函数pmd_offset根据页上层目录表项和虚拟地址获取页中间目录表项时,直接把页上层目录表项指针强制转换成页中间目录表项。
在上面这个图中,顶级页表是页全局目录(PGD),二级页表是中间页目录(PMD).最后一级是页表(PTE),该页表结构指向物理页。上图中的页表对应的结构体定义在文件asm/page.h中。为了加快查找速度,在linux中实现了快表(TLB),其本质是一个缓冲器,作为一个将虚拟地址映射到物理地址的硬件缓存,当请求访问一个虚拟地址时,...