而更新页表项的原因有两种:1.)进程迁移,2.)地址空间共享
对于进程迁移的状况,由于任何时刻只有一个线程在执行。
因此操作系统在维护TLB一致性时,不会有其他的线程来访问当前正在修改的TLB表项,以及TLB表项中所指向的物理内存。
在多个线程共享地址空间时,多个处理器可以同时对同一个物理页桢发起访问。
如果,此时一个处理核A在更新TLB,而处理器核B正在对该表项所指的物理内存发起访问,是不是会出现错误?
那么应当如何避免,从操作系统的角度来解决,还是在编写多线程应用是就应该避免多个线程同时对同一物理页桢的访问?
--
--
Best wishes to you !
Zhong Qi
**************************************************
* Microprocessor R&D Center, Peking University
* Beijing, P.R.China, 100871
* Tel: 8610-62765828 ext. 852
* Fax: 8610-62756231
* Email: zho...@mprc.pku.edu.cn
* zhongq...@gmail.com
**************************************************
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org
会发生什么错误?
我的理解,最坏的可能就是制造出一个访问已然释放的地址空间的错误,不过,这
个是用户态应用程序的编写问题,不会影响到系统的整体运行。
> 那么应当如何避免,从操作系统的角度来解决,还是在编写多线程应用是就应该避免多个线程同时对同一物理页桢的访问?
这不是用户态应用程序要考虑的,用户态应用程序也不可能控制这种情况的发生于否。
Thanks
Xiao
--
Regards
zhenzhong