就所有书籍而言,在任务/进程之间切换比在同一进程/任务的线程之间切换要昂贵。如果是这样,那么线程感知操作系统的调度程序应该以这样的方式调度线程,即相同进程/任务的线程应该彼此相邻(分组)执行,并且不与来自其他进程/任务的线程交织。OS调度程序如何调度属于两个不同进程(任务)的线程?
正如我读的书操作系统,所有的书只停留在指出线程切换比进程切换更便宜。就是这样。没有一本书讲述了调度程序如何解决避免在不同任务的线程之间切换的问题。就好像这样的问题对每个读者都不存在或者微不足道。
我对这个问题的理解不正确吗?或者我错过了什么?为什么如此巨大的可能性能降低话题在“调度”一章的每一本操作系统手册中都没有涉及到?我在读错书吗?
这是一个非常好的问题。我知道大多数操作系统(例如Linux)将线程视为进程,不做任何特殊的优化。我会继续寻找答案,因为我很好奇自己... – Dougvj
我找到了关于将相关线程组合在一起的帮派调度和调度的文章。这很有趣,但并不能提供和回答。但是,似乎很可能,进程切换具有足够低的开销,以至于将线程调度为进程并不会损害性能。 – Dougvj
@Dougvj:(2011)Operating Systems - Internals and Design Principles,7th Ed(ISBN 013230998X),page 439.最后,我发现他们用于分组执行相同任务/进程的线程 – kachanov