- 论坛徽章:
- 0
|
回复 #1 奇门遁甲-lu 的帖子
调度开销在一定程度上还是会减小的吧~
如果使用进程, mm一般是不会共享的, 在切换的时候, mm需要切换, 页表就被重置了...
而如果是线程, 一组线程总是使用相同的mm, 当调度发生在这一组线程之间时, mm就不需要切换, 页表就不需要变.
我不知道具体页表切换会造成多大的时间上的开销. 但是可以这样想一想(以下是个人理解啦~), 内存分页机制为什么能成立? 其中一个原因就是有TLB的存在. 如果没有TLB, 那么一次内存访问, 在分页机制下, 实际上将造成若干次内存访问(因为每查一级页表就要访问一次内存). 这样的话, 使用分页和不使用分页相比, 性能相差就太大了(页表有n级, 内存访问次数就增加n倍). 这样的情况下, 分页机制没有什么优势可言. 而有了TLB(TLB的访问速度应该是要比内存高一个数量级吧), 页表放在TLB中, 使用分页与不使用分页相比, 性能也差不太多, 于是其他方面的优势才得以体现...
所以说, 在分页机制下, TLB很重要. 而进程切换将导致TLB失效. 所以... 用线程还是很好的吧
当然, 上面说的这些在没有MMU的情况下不成立. |
|