【发布时间】:2015-12-26 04:04:31
【问题描述】:
我现在知道几种中断执行线程并将上下文交换到另一个执行线程的方法。但是当内核收到来自硬件的中断并且当前代码停止执行时。内核如何将上下文切换到另一个线程。它是否也调用简单的 C 例程来执行此操作?还是必须执行自定义汇编代码才能实现?
假设这个内核在单处理器系统上运行。我只处理过用户空间中的操作系统概念,所以我不太清楚内核代码是如何从较低级别工作的。
注意:如果您想在现有内核(可能是 Linux)的上下文中解释这一点,请继续!我知道我对这个问题的措辞有点含糊。
谢谢!
【问题讨论】:
-
每个内核处理的方式都特定于内核。除了你正在编写一个内核,这意味着没有简单的库调用,你必须处理寄存器的保存、堆栈指针、TLB 刷新等等。它不会简单,也依赖于架构
-
让我们将其简化为与 Linux 的做法极为相似。我会更新我的问题
-
它和C++有什么关系?
-
@curiousguy 当我问这个问题时,我正在用 C++ 思考
-
我将其标记为关闭,太笼统,谷歌可以获取答案
标签: kernel