什么是上下文切换?

22

我正在阅读关于 debuggerstepperboundary 属性的内容,有一篇网站说它在上下文切换中很有用。

什么是上下文切换?我猜它是从一个线程切换到另一个线程,或者执行或安全上下文的切换?但这些都不是特别准确的猜测,所以我在这里问。


你的问题很有趣,请考虑添加更多的标签(操作系统,内核,进程...),并将C#标签移除。 - Didac Perez Parera
6个回答

33

上下文切换(也有时被称为进程切换或任务切换)是指将CPU(中央处理器)从一个进程或线程切换到另一个的过程。

上下文切换可以稍微详细地描述为内核(即操作系统的核心)在处理CPU上的进程(包括线程)时执行以下活动:(1) 暂停一个进程的进展并将该进程的CPU状态(即上下文)存储在内存中的某个位置,(2) 从内存中检索下一个进程的上下文并将其恢复到CPU的寄存器中,(3) 返回到程序计数器所指示的位置(即返回到中断进程的代码行)以便恢复该进程。

上下文切换有时被描述为内核暂停CPU上的一个进程的执行并恢复先前已挂起的另一个进程的执行。虽然这种措辞可以帮助澄清概念,但本身可能会造成困惑,因为按定义,一个进程是程序的执行实例。因此,“暂停进程的进展”可能是更可取的措辞。


11

上下文切换是将CPU从一个进程/线程切换到另一个进程/线程的操作。

有时人们会在计算机领域之外使用“上下文切换”这个术语,以反映他们在自己的生活中所做的事情。“如果我要回答那个问题,我需要从思考A切换到思考B。”

维基百科


4

上下文切换通常指在线程或进程之间的切换。 维基百科 对此有更详细的描述。


1

它是在CPU上在进程之间切换的过程。


0
将CPU核心切换到另一个进程需要保存当前进程的状态并恢复不同进程的状态。这个任务被称为上下文切换

摘自:操作系统概念,亚伯拉罕(恐龙封面)


但这并不一定帮助我理解概念。我喜欢在学习时看动画或图片。所以,RTOS的链接确实很有帮助。


0
上下文切换基本上是指进程a和b之间的切换,就像当CPU执行'a'进程时,CPU的所有寄存器都填充有'a'进程的寄存器,比如程序计数器(用于执行进程中的一行代码(进程是指正在执行的程序)),栈指针,基址指针等等。当你从后台程序中打开进程'b'时,内核(在操作系统中负责处理所有进程管理部分的模块,操作系统是一个模块,内核是其中负责处理进程、内存、输入输出和文件管理的子模块)会改变所有寄存器为新的进程(不是程序,因为它现在处于运行状态)(*之前的进程将处于就绪状态或者(*如果进行了I/O操作,则将处于等待状态)),这样CPU就能够执行由内核加载的进程,并且CPU使用程序计数器(PC)获取指令并执行程序。
所有的状态,如PC(程序计数器),SP(堆栈指针),BP(基址指针)都将存储在进程的程序控制块中(当它在执行时使用此或使用程序术语)。对于所有的程序,都会有一个进程表,其中包含条目,我们只称之为进程控制块(PCB),PCB存储在RAM中,只能由内核访问,而不能由用户访问。为什么?(RAM被分为用户空间和内核空间两部分)

加载速度取决于您使用的RAM和存储器类型(SSD或HDD)。在切换时,我们从RAM和存储器中获取信息,因此取决于您使用的是哪种类型,对速度有影响(如RAM-DDR4等)。 - heisenberg
加载速度取决于您使用的RAM和存储器类型(SSD或HDD)。在切换时,我们从RAM和存储器中获取信息,因此取决于您使用的是哪种类型,这对速度很重要(如RAM-DDR4等)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接