赞
踩
在Linux内核中,每一个进程都有一个独立的虚拟地址空间,而进程本身感知不到真正的物理内存的存在(比如某进程感知到的内存是连续的,但是实际上它被分配的内存是物理内存中分散的空间)。MMU(内存管理单元)负责完成对于这种虚拟地址-物理内存地址的转换工作。Linux为每一个进程维护了一张页表,用于记录虚拟地址和物理内存地址之间的关系,并在进程运行时实时进行地址转换从而使得进程访问到真正的物理内存。
图1 内存管理单元MMU
而我们要提到的page fault便是在这种场景下产生的,page fault大致可以分为三类:
major page fault:进程要访问的页面不在真正的物理内存中,可能需要从磁盘中载入(比如Linux开启了swap机制,内核通过LRU页面置换算法将页面置换到了磁盘中暂存),这个时候将会产生一个major page fault。
图2 swap页面置换机制
minor page fault:进程要访问的页面在物理内存中,但是MMU还没有建立进程的虚拟地址和相应物理地址的映射关系,这个时候就会触发soft page fault
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。