内存换出和缓冲区释放( 五 )


6.总结
普通内存换出:
1.在函数中分别通过检查是否受到访问,并在将其老化 。如果长时间没受到访问,会在后面将其和pte解除映射,存放至 。
2.在内存短缺的时候,会通过将内存写到盘上,并添加至 。
3.如果该zone的较少,会通过将其释放给buddy
注:当page释放给时,因为已经和pte断开,所以在此访问时只能通过中的将page换入 。如果此时page还没释放给buddy,可以在hash中查找;如果已经完全释放,则需要通过(最后调用读)将page从盘上读进来
缓冲区的释放:
1.进程会通过/(内核会通过)增加page.age,并且在中的将其老化;如果彻底老化,后续会将其移至
2.平时会有(或者在发现dirty的bh过多时)去,将缓冲区同步,当内存短缺时,会通过将其移至(如果特别短缺,也会在中做脏缓存的同步)
3.如果该zone的较少,会通过将其释放给buddy,之后要读只能再次从盘上读取 。
【内存换出和缓冲区释放】本文参考《Linux内核源代码情景分析》