Li
ux26ARM学习笔记
一、存储管理1、Li
ux的内存映射机制设计成三层,页目录表,中间目录表、页面表:PGD、PMD、PT2、三层映射机制将线性地址分成四个位段,其中:最高位段作为下标在PGD中找到包含PMD地址的表项;第二个位段作为下标在PMD中找到包含PTE地址的表项;第三个位段作为下标在PTE中找到包含所需页面根据ARM手册,大页:64K小页4K极小页1K物理地址的表项;第四个位段(页内地址偏移(16BIT12BIT10BIT))作为下标在物理页面中找到最终的物理地址;思考:根据ARM手册,ARM的页保护包含多种方式,其中由粗、细粒度之分,大、小、极小页之分,以及段映射共六种,Li
ux中使用的是粗粒度小页映射方式,程序和硬件如何对应呢?ARM页式映射解释:关键名词:页目录表也叫一级页表PDG,页目录也叫页目录、二级页表PTE,页面也叫页page最小的存储单元;一级页表(PGD)在ARM中固定为1M即使用线性地址的最高位段31:20来定位,所以PGD占地4KB,共1024的表项,每项4字节。粒度决定的是PTE的占地大小,粗粒度表示PTE占地1K,也即PTE的地址是1KB对齐的,而PTE的地址是由PGD表项内容决定,所以粗粒度情况下,PGD表项的31:10(包括一些不用的位)表示PTE的地址,9:0表示PTE属性,所以PTE占地1KB,包含256个表项,每个表项当然也是四个字节。、细粒度则表示PTE占地4KB,包含1024个表项(分得更细了),每个表项4字节。PTE中的项是使用线性地址的第二位段来决定其在PTE中的偏移位置的,第二位段的位数由线性地址的第三位段来决定:如果页面为大页即16KB,15:0,第二位段则使用剩下的19:16位共8项来确定PTE中的表项;如果页面为小页即4KB,11:0,第二位段则使用剩下的19:12位共256项来确定PTE中的表项;如果页面为极小页1KB,9:0,第二位位段则使用剩下的19:10位共1024项来确定PTE中的表项;所以页面的大小页决定了PTE中表项内容中有多稍微用来表示页面地址。也最终确定了ARM页映射的组合方式粗粒度(大、小页),细粒度(大、小、极小)。粗粒度和极小页不能配合,为什么呢,理解上面说的就知道了,因为极小页要求PTE有1024项,而粗粒度一共才只有256项。所以:ARM在Li
ux中使用的是粗粒度小页的映射方式,则在Li
ux中,线性地址分为三个位段,31:20用于PGD中定位PTE,19:12用于PTE中定位页面,11:0用于页面中地位最终物理地址。考虑到Li
ux采用三层映射方式,所以将上面的叙述修正:线性地址分为四个位段,31:20用于PGD中定位PMD,第二r