一般来说线程切换比进程切换代价更小,是因为进程切换需要转换内存地址空间,需要刷新 TLB/cache ,线程切换没有这个动作。
那么操作系统调度的时候会不会尽量调度同一进程内的线程?
- 如果会的话,就不公平了,我进程多创建线程岂不是能占用更多的时间片?
- 如果不会的话,这种开销就是不可避免的,那我有啥可比性?

一般来说线程切换比进程切换代价更小,是因为进程切换需要转换内存地址空间,需要刷新 TLB/cache ,线程切换没有这个动作。
那么操作系统调度的时候会不会尽量调度同一进程内的线程?
1 sujin190 Oct 9, 2022 有没有可能进程并没有切换一说,操作系统调度的都是线程,进程只是用来定义地址空间和关联管理系统资源的 |
2 hangbale Oct 9, 2022 会 另外需要区分内核级线程和用户级线程 |
3 kingofzihua OP @sujin190 会有的,进程内单线程处理 |
4 sujin190 Oct 9, 2022 @kingofzihua #3 不是一回事吧,就算是一个线程,内核调度器处理的也是线程,进程就是静态的和运行状态没啥关系吧,顶多优化下相同进程线程间切换不触发 TLB/cache 重置就是了,但是自身并不能影响调度吧 |
5 guanyinli Oct 9, 2022 read the fucking code 就知道啦 |
6 kingofzihua OP 果然,操作系统分类不是那么活跃 |