gpt4 book ai didi

c - 内核 - Linux - 内核在哪里与 cpu 对话?

转载 作者:行者123 更新时间:2023-11-30 18:39:42 24 4
gpt4 key购买 nike

上下文:

Linux 64。英特尔酷睿 2 双核。

问题:

Linux 内核在哪里与 cpu“通信”?我阅读了调度程序的源代码,但无法理解它们如何通信以及内核如何告诉 cpu 需要处理某些内容。

我知道有运行队列,但是没有什么东西可以让内核通过总线中断CPU吗?

更新

它扩展了我最初的问题:我们如何告诉 CPU 任务队列在哪里?

因为CPU必须轮询一些东西,我想我们会在某个时候告诉它。错过了内核代码中的这一点。

最佳答案

我会尝试写一个简单的解释来说明它是如何工作的,如果有任何不清楚的地方请告诉我。

CPU 只做一件事:执行指令。它将从预定义的地址开始并执行。就这样。有时你可以有一个中断,这会暂时使CPU跳转到另一条指令。

内核是一个程序(=一系列指令),可以轻松执行其他程序。内核将完成他的任务来设置它需要的东西。这通常包括构建要运行的进程列表。 “进程”的定义完全取决于内核,因为如您所知,CPU 只做一件事。

现在,当内核运行时(由 CPU 执行),它可能会决定需要执行一个进程。为此,内核将简单地跳转到进程程序。如何完成并不重要,但在大多数操作系统中,内核会将周期性中断(CPU 将周期性跳转)映射到一个函数,该函数决定执行哪个进程并跳转到该函数。这不是必需的,但很方便,因为程序会定期被强制“中断”,以便其他程序也可以执行。

总而言之,CPU 不“知道”任何事情。内核运行时,会跳转到其他进程代码,使它们运行。只有内核“知道”。

关于c - 内核 - Linux - 内核在哪里与 cpu 对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28857574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com