整体目录
一 linux虚拟内存、MMU、分页的基本原理
二 OOM打分因子、oom_adj以及oom_score
三 页的alloc与free、Buddy算法以及CMA
四 page_fault、内存IO交互、VSS、LRU
五 DMA及Cache一致性
=================================================================================
page_fault缺页中断的处理
进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:
1、检查要访问的虚拟地址是否合法
2、查找/分配一个物理页
3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)
4、建立映射关系(虚拟地址到物理地址)
重新执行发生缺页中断的那条指令
如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。
- 具体细节可以查看该博客详解缺页中断-----缺页中断处理(内核、用户)
- 缺页中断分为内核态和用户态