+ -
当前位置:首页 → 问答吧 → 请教关于smp系统中tlb刷新的一个问题

请教关于smp系统中tlb刷新的一个问题

时间:2010-08-23

来源:互联网

看情景分析第9章smp系统,其中说到内核线程一般是不需要冲刷tlb的,因为内核代码不会被换出,而且内核线程一般不会访问用户空间,因此如果一个内核线程接收到tlb冲刷的中断只会进入lazy tlb模式,从而忽略以后所有的tlb冲刷指令。
但是书中也提到,如果有以下几种情况,内核线程的页面映射也是会改变的:1.vmalloc, 2.kmap, 3.外设总线有关的映射。那么这三种情况发生的话是如何通知内核线程冲刷tlb的呢?我好像没有找到相关代码。
望知情者告知!

作者: peimichael   发布时间: 2010-08-23

自己想到了,似乎是这样的。因为内核空间使用的页表是一样的,因此在vmalloc等操作的时候只操作init_mm的页表,当内核线程访问虚拟地址发生缺页才会把init_mm的页表复制给当前内核线程,而冲刷tlb也是这个时候完成的。

作者: peimichael   发布时间: 2010-08-23