Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。 下面是struct vm_area_struct结构体的定义: /** This struct defines a memory VMM memory area. There is color
首先我们基于平坦型物理内存,单个node,下面是基于64位ARMv8架构得到,其他架构也有类似结论:首先我们知道在我们成功编译好kernel后会生成一个system.map文件,其给出了内核整个虚拟地址空间情况,比如:ARM64:整个内核空间起始地址:ffffffc000080000 T _text代码段起始地址:ffffffc000080160 T stext异常向量表地址:fffff
1 逻辑地址 逻辑地址是最为模糊的概念。 《understanding the linux kernel》上的解释是与虚拟地址相关,基于硬件MMU与软件内存管理的一个概念,具体可以看UTLK的第二章内存寻址,有很详细的解释。 但是工作中之前用到的MIPS架构的处理器的解释却有出入,在《MIPS体系架构透视》一书中,逻辑地址是跟MMU无关的,MIPS地址空间划分中,Kseg0 Kseg1地址空
这篇仍然是深入理解计算机系统的学习笔记,结合自己理解体会所写。程序是运行在内存中的,而程序的运行时候不是直接操作物理内存的,为什么不直接操作物理内存那,有几个原因:首先容易想到的是,计算机中运行的程序不可能只是一个,如果大家都直接操作物理内存,有安全问题,即 A 程序有可能会破坏 B 程序的内容;其次,如果直接操作物理内存,那么每个程序使用的空间都不是一样的,这也带来了不方便。所以前辈们给出的方