linux内核的每一样技术,都是为了解决某个问题的. vma结构体的提出是为了管理"虚拟内存空间"这个资源. 像brk(),mmap()分配给用户空间的都是虚拟地址(当然),那内核就要知道哪一部分虚拟地址还是空闲的. 一个vma描述一段已经占用的虚拟地址空间,这些vma以数组或红黑树的方式组织起来.整个虚拟地址空间就是一个个的vma和之间的空洞. 除了brk(),mmap()需要找空闲地址空间,有时候页错误也需要知道"为什么错". 内核重度的依赖page fault这个硬件中断,page fau…