上下文切换:什么时候决定?

时间:2017-09-27 14:07:41

标签: multithreading multiprocessing

我正在寻找有关主流架构的现代个人计算机上下文切换的背景解释(比如x64)。

虽然上下文切换主要由硬件完成,但我想知道在运行多个线程和/或多个进程时计算机中决定任务调度和上下文切换的内容。它是CPU本身,操作系统,编译器/虚拟机......?

我想知道用什么策略来决定何时切换。例如,如果我在无限循环中启动一百个线程进行独立的虚拟添加,那么上下文切换何时会发生?

1 个答案:

答案 0 :(得分:1)

这是一个复杂的主题,我不能在这里做一个简单的回答。但是,让我达到一些高点。我将进一步假设现代操作系统像Windows或各种Unix衍生产品,并忽略嵌入式实时系统。

上下文切换不在硬件中执行。理解这一点至关重要。它通过称为调度程序的OS子系统在软件中执行。调度程序是一个美化的中断控制器,它会在几微秒内触发许多次并决定接下来要执行的线程。这样做的算法很多,并且是许多PHD论文的主题。我很快就找到了一个很好的概述:http://www.studytonight.com/operating-system/cpu-scheduling

Good Operating Systems书籍将详细介绍。有太多要注意,所以选择你的毒药。

最后一点,要完全掌握如何执行调度,它确实有助于理解虚拟寻址方案如何工作,因为这确实是将进程与线程区分开来的。就Scheduler put进程封装线程和虚拟内存空间而言,线程是至关重要的。

我不确定这会有什么帮助,但我至少能够纠正一个误解,并指出一篇关于OS线程调度的简单文章。