我的问题是什么是模式切换的开销? cpu缓存是否无效或tlb条目被刷新或导致开销发生什么?
请注意,我在询问模式切换中涉及的开销,而不是上下文切换.我知道模式切换和上下文切换是两个不同的东西,我完全知道与上下文切换相关的开销,但是我不明白是什么开销是由模式切换引起的?
如果可能,请提供有关特定* nix平台(如Linux,FreeBSD,Solaris等)的一些信息.
问候
拉利
解决方法 在简单模式切换器上应该没有cpu缓存或TLB刷新.一个快速测试告诉我,在我的linux笔记本电脑上,用户空间进程需要大约0.11微秒来完成一个简单的系统调用,除了切换到内核模式并返回之外,这个系统调用也是无关紧要的.我使用的是getuID(),它只能从内存结构中复制一个整数. strace确认系统调用重复MAX次.
#include <unistd.h>#define MAX 100000000int main() { int ii; for (ii=0; ii<MAX; ii++) getuID(); return 0;}
我的笔记本电脑需要约11秒,用时间/秒,11秒除以1亿,给你0.11微秒.
从技术上讲,这是两个模式开关,所以我想你可以声称单模开关需要0.055微秒,但是单向开关并不是很有用,所以我认为这个数字越多越好相关的.
总结以上是内存溢出为你收集整理的linux-kernel – 模式切换所涉及的开销是多少?全部内容,希望文章能够帮你解决linux-kernel – 模式切换所涉及的开销是多少?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)