【问题标题】:The state of process when CPU resumes execution after interrupt中断后CPU恢复执行时的进程状态
【发布时间】:2018-03-04 17:23:26
【问题描述】:

当CPU收到中断时,完成当前指令的执行,并将当前进程的所有相关进程信息保存在堆栈中,使其进入挂起状态,继续为中断服务。处理中断后,CPU 恢复执行原始指令,因此状态从挂起变为运行。在任何情况下都可以不进行这种状态更改吗?我在某处读到,这种状态变化可能并不总是正确的。怎么样?

【问题讨论】:

  • '处理中断后,CPU 恢复执行原始指令'通常它确实返回到下一条指令,但它可能返回到可能属于不同进程的不同线程。

标签: operating-system


【解决方案1】:

你说的很少是正确的。首先,处理器可能会也可能不会完成指令。一些处理器具有可中断的冗长指令。

我不知道有任何操作系统会在发生中断时将进程置于挂起状态。通常当前进程处理中断。一些操作系统在中断期间有一个精简的进程上下文,但处理器认为当前进程正在处理中断。

中断处理程序通常以从内核模式返回并恢复中断的进程执行流的中断指令返回结束。

【讨论】:

  • '通常当前进程处理中断'?一般来说,中断没有进程上下文。
  • 鉴于任务切换通常在软件中实现(据我所知至少在 x86 上),您不能严格地说“处理器相信”当前进程仍在执行,因为处理器根本不知道过程。所以说“当前进程处理中断”可能有点不准确和混乱,因为正在执行的代码实际上并不属于该进程,而“上下文”的某些方面仍然可能。
  • 在 CPU 服务中断期间,中断发生之前正在执行的进程的状态是什么?
  • @Curious 正在运行,或者,如果处理中断的核心空闲,因为空闲核心多于就绪/正在运行的线程,则停止,(即“空闲”线程)。
  • 也许在 Linux 上。但是,处理器将中断视为由当前进程的上下文处理。但是,当进程处理中断时,地址寄存器是当前进程的地址寄存器。如果中断处理程序愿意,它可以访问中断发生时正在执行的进程的用户态地址空间。
猜你喜欢
  • 2013-01-02
  • 2010-10-25
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2011-08-17
相关资源
最近更新 更多