我正在寻找一些关于主流体系结构的现代个人电脑(比如x64)中上下文切换的背景说明。
虽然上下文切换主要由硬件完成,但我想知道在运行多个线程和/或多个进程时,计算机中的任务调度和上下文切换是如何决定的。是CPU本身,操作系统,编译器/虚拟机.?
我想知道什么策略是用来决定什么时候换。例如,如果我启动100个线程,在没完没了的循环中执行独立的虚拟添加,什么时候会发生上下文切换?
发布于 2017-09-27 14:28:55
这是一个复杂的问题,我不能用简单的回答来解释。但让我来点高点吧。我将进一步假设现代操作系统如Windows或各种Unix衍生工具,而忽略嵌入式实时系统。
在硬件中不执行上下文切换。理解这一点是至关重要的。它是通过操作系统子系统(称为调度器)在软件中执行的。调度程序是一个光荣的中断控制器,它将多次触发微秒,并决定下一步执行哪个线程。这样做的算法很多,也是许多博士论文的主题。我快速发现的一个很好的概览是:http://www.studytonight.com/operating-system/cpu-scheduling
好的操作系统书籍将详细讨论这个问题。有太多的东西值得注意,所以选你的毒药吧。
最后一点,要在一个完整的层次上掌握调度是如何执行的,了解虚拟寻址方案是如何工作的才是真正区别进程和线程的原因。线程在调度程序、放置进程、封装线程和虚拟内存空间方面是至关重要的。
我不确定这是否有帮助,但至少我能够纠正一个误解,并指出一篇关于OS线程调度的简单文章。
https://stackoverflow.com/questions/46450058
复制相似问题