当CPU执行用户空间进程时,内核会发生什么?

时间:2015-02-17 07:12:03

标签: linux linux-kernel operating-system

如果内核是唯一的进程,那么ALU将继续执行内核指令。

  1. 现在,程序计数器是否总是包含内核空间指令?
  2. 现在,当另一个进程A启动时,我的理解是内核将A的起始地址加载到程序计数器中。

    1. 此时ALU现在将开始执行A的指令。内核会发生什么?内核的上下文是否保存到内存并在进程A完成后恢复。内核是用进程A的地址加载PC的。现在,谁将在完成后将内核的地址加载回PC? (我相信资源管理器,调度程序等......一切都是内核的一部分。)
    2. 当ALU正在执行进程A时,内核未处于运行状态。

      1. 这是否意味着我的系统在那个时刻没有运行内核?
      2. (这可能听起来很傻,但我真的不明白这是如何运作的)

        1. 此外,内核负责绘图以进行监控。那么,在任何时候T(微秒或纳秒),当ALU没有执行内核指令时,监视器如何仍然显示所有内容或为什么它没有关闭?

1 个答案:

答案 0 :(得分:1)

中断会更改CPU上下文。设备中断可能导致驱动程序代码按计划运行(例如绘图),并且通常使用定时器中断来执行任务调度。

实际上,每个OS调用都必须作为软件中断实现(有时使用例如sysenter进行优化),因为用户代码无法将上下文更改回内核。具体来说,内核代码需要运行特权(在x86架构上,这称为" ring 0"),非内核代码不能更改特权级别。