请教一个关于线程调度的问题。
大家好,请教个问题, 就是 时钟中断的粒度会随着运行的线程总数的改变而改变吗? 一个线程在user space 满负荷运行和 100个线程在user space 满负荷运行,对于整个系统而言,总的上下文切换数是不是大致一致的? 发生时钟中断,一定会导致上下文切换吗? 目前主流计算机的时钟中断的粒度大概是多少? 有无源代码可引用? 问题有点多,望高手相助,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只要中断不被锁掉,一般来说它的粒度和用户态的程序是无关的。
至于一个线程和100个线程满负荷在用户态运行,不知道你说的开销指什么?
1. 如果是时间中断抢占的开销,那么应该是一样的。
2. 如果是指一次线程切换,那看是什么系统,不同的系统中实现不一样。
3. 总切换时间因系统而言,如果是抢先式系统,100个满负荷可能就是最高的那个在运行;
而对于分时系统,总效果肯定会下降。所以多线程更多的是用于大多数时候阻塞在I/O上的
场景,对于纯计算的程序,在同一个CPU上一个线程一直跑总体效率是最高的。
时钟中断是上下文切换的两大点之一,但并不一定非要产生切换,有可能结束之后还返回到原来的线程
继续执行。
粒度大概是多少不太好讲,和你具体的应用有关,许多系统中定时处理都会通过时钟中断来产生。源代码
Linux、BSD等系统都是开源的,很容易看到;VxWorks等嵌入式系统早期的代码在网上也可以找到。
俺也想知道,帮顶