当另一个进程 运行 时内核做了什么
What does the kernel do while another process is running
考虑一下:当一个 task/process 在单处理器系统上 运行 时,另一个任务必须等待轮到它,直到第一个任务挂起或终止(取决于调度算法).
内核还包含各种任务,这些任务使用相同的 CPU 来执行 OS 相关的事情——比如调度、内存管理、响应系统调用等。
那么,当内核安排一个特定的 task/process 给它 CPU 时间时,它会放弃对 CPU 的控制吗?即它会暂时停止吗?如果不是,它如何继续 运行 执行所有 OS 相关任务,而另一个进程 运行 在 CPU 上?调度程序是否移到一边以在行 CPU 中执行下一个任务?如果是,是什么让调度程序返回以继续进行进一步的调度活动?这个问题很相似,但没有包含足够的细节 -
我对这部分感到困惑,我不明白这是怎么回事work.Can请有人详细解释一下。如果你能用一个例子来解释它会很有帮助。
是的..你应该停止将 OS 内核视为一个进程,而不仅仅是代码和数据 - processes/threads 调用的 state-machine为了在一端获得特定服务,(例如 I/O 请求)和 driver 在另一端调用以提供服务解决方案,(例如 I/O 完成)。
内核本身不需要任何执行线程。它仅在从系统调用(来自 运行 用户 threads/processes 的 interrupt-like 调用)或 drivers(来自 disk/NIC/KB/mouse 等硬件的硬件中断)输入时运行。有时,此类调用会更改可用内核上的线程集 运行(例如,如果等待网络缓冲区的线程准备就绪,因为 NIC driver 已完成操作,OS 可能会尝试将其分配给核心 'immediately',如果需要,抢占其他线程)。
如果没有系统调用,也没有硬件中断,内核什么都不做,因为它没有进入——它无事可做。
您所缺少的是,如今很少有操作系统具有您所描述的监控进程。
冒着过度简化的风险,操作系统 运行 通过异常和中断。
假设您有两个进程,P 和 Q。P 是 运行ning 进程,Q 是 运行 的下一个进程。切换进程的一种方法是系统计时器关闭触发中断。 P 切换到内核模式并处理该中断。 P 运行s 处理定时器的中断代码并确定 Q 应该 运行。 P 然后保存其上下文并加载 Q。此时,Q 是 运行ning 进程。中断处理程序退出并从 Q 之前所在的位置开始。
换句话说,进程P在处理中断的过程中成为了内核调度器。每个进程成为加载下一个进程的调度程序。
再举一个例子,假设 Q 已经将对磁盘的读取操作排队。该操作完成并触发中断。 P,运行ning进程,进入内核态处理中断。 P然后处理Q的磁盘读取操作。
考虑一下:当一个 task/process 在单处理器系统上 运行 时,另一个任务必须等待轮到它,直到第一个任务挂起或终止(取决于调度算法). 内核还包含各种任务,这些任务使用相同的 CPU 来执行 OS 相关的事情——比如调度、内存管理、响应系统调用等。
那么,当内核安排一个特定的 task/process 给它 CPU 时间时,它会放弃对 CPU 的控制吗?即它会暂时停止吗?如果不是,它如何继续 运行 执行所有 OS 相关任务,而另一个进程 运行 在 CPU 上?调度程序是否移到一边以在行 CPU 中执行下一个任务?如果是,是什么让调度程序返回以继续进行进一步的调度活动?这个问题很相似,但没有包含足够的细节 -
我对这部分感到困惑,我不明白这是怎么回事work.Can请有人详细解释一下。如果你能用一个例子来解释它会很有帮助。
是的..你应该停止将 OS 内核视为一个进程,而不仅仅是代码和数据 - processes/threads 调用的 state-machine为了在一端获得特定服务,(例如 I/O 请求)和 driver 在另一端调用以提供服务解决方案,(例如 I/O 完成)。
内核本身不需要任何执行线程。它仅在从系统调用(来自 运行 用户 threads/processes 的 interrupt-like 调用)或 drivers(来自 disk/NIC/KB/mouse 等硬件的硬件中断)输入时运行。有时,此类调用会更改可用内核上的线程集 运行(例如,如果等待网络缓冲区的线程准备就绪,因为 NIC driver 已完成操作,OS 可能会尝试将其分配给核心 'immediately',如果需要,抢占其他线程)。
如果没有系统调用,也没有硬件中断,内核什么都不做,因为它没有进入——它无事可做。
您所缺少的是,如今很少有操作系统具有您所描述的监控进程。
冒着过度简化的风险,操作系统 运行 通过异常和中断。
假设您有两个进程,P 和 Q。P 是 运行ning 进程,Q 是 运行 的下一个进程。切换进程的一种方法是系统计时器关闭触发中断。 P 切换到内核模式并处理该中断。 P 运行s 处理定时器的中断代码并确定 Q 应该 运行。 P 然后保存其上下文并加载 Q。此时,Q 是 运行ning 进程。中断处理程序退出并从 Q 之前所在的位置开始。
换句话说,进程P在处理中断的过程中成为了内核调度器。每个进程成为加载下一个进程的调度程序。
再举一个例子,假设 Q 已经将对磁盘的读取操作排队。该操作完成并触发中断。 P,运行ning进程,进入内核态处理中断。 P然后处理Q的磁盘读取操作。