gpt4 book ai didi

process - Linux 内核代码执行上下文

转载 作者:行者123 更新时间:2023-12-02 11:05:43 25 4
gpt4 key购买 nike

当在用户空间执行的进程发出系统调用或触发异常时,它会进入内核空间,内核开始代表该进程执行。据说内核是在进程上下文中执行的。同样,当发生中断时,内核会在中断上下文中执行。我研究了内核线程中的内核执行,其中内核进程在后台运行。

我的问题是:

  1. 内核是否在任何其他上下文中执行?

  2. 假设用户空间中的进程从未执行系统调用或触发异常或没有发生中断,内核代码是否执行过?

最佳答案

内核定期运行,它设置一个计时器以某个预定义的频率(100 Hz(Linux 2.4/x86)、1000Hz(早期的​​ Linux 2.6/x86)、250Hz(较新的 Linux 2.6/x86))触发中断。

内核需要这样做才能进行抢占式多任务处理。 OTOH,仅执行协作多任务处理的操作系统(Windows 3.1,经典 Mac OS)不需要这样做,并且仅在响应来自正在运行的任务的某些调用时切换任务(这可能导致失控任务挂起整个系统)。

请注意,我们做了一些努力来优化此计时器的使用:当没有可运行的任务时,较新的 Linux 会更智能,它将计时器设置为尽可能远的 future ,以允许 CPU 休眠更长时间和更深的时间,并保留电源(CONFIG_NOHZ 内核配置选项)。运行 powertop 将显示每秒唤醒次数,在空闲系统上该次数可能远低于您期望的传统实现的每秒 250 次唤醒次数。

关于process - Linux 内核代码执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555387/

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