linux - 操作系统如何抢占进程并重新获得控制权?

标签 linux architecture linux-kernel operating-system kernel

当一个进程在CPU上运行时,操作系统并不是在后台运行,因为单核CPU一次只能执行1条指令。那么操作系统是如何抢占一个进程的呢,是由硬件来完成的吗? 我在任何地方都找不到答案

最佳答案

要了解操作系统如何重新获得对进程的控制,必须了解中断的概念。中断是发送到 CPU 的信号,表示当前进程必须停止(即中断),以便另一个进程可以开始。从某种意义上说,这是在硬件级别完成的,因为 CPU 中有专用寄存器,用于放置中断位。

当中断发生时,CPU 寄存器的内容被存储,当前堆栈指针被保存,然后程序计数器指向由调度程序发出的下一条指令,调度程序决定下一个开始哪个进程 - 通常是中断进程。除非出现死锁,任何进程都无法取得进展 - 调度程序将返回到原始进程,并且该进程的执行上下文将被重新加载到机器中(因为我们之前保存了它)。这种保存机器状态、执行新进程并返回原始进程的概念称为上下文切换。更多信息 here

关于linux - 操作系统如何抢占进程并重新获得控制权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58916159/

相关文章:

c - Linux 中的 Brown out 实现?

architecture - 模块化系统架构

c - linux IO端口是软件抽象还是真正的硬件端口

Linux 设备驱动程序注册错误

architecture - 带有用于浏览器和本地应用程序的Push的完整应用程序的体系结构

linux-kernel - 初始化驱动程序时 module_init 和 subsys_initcall 有什么区别?

c++ - libev,为什么在 evloop 中 recv 事件的编号是 3?

linux - CRONTAB 在脚本中更改

c - abort() 在 glibc 版本 < 2.27 中不是异步信号安全的吗?

java - 如何有效地进行多线程