如果cpu正在运行进程,谁在运行内核?

假设在两个进程环境中,一个进程被安排由内核执行,并且它需要一些在RAM中不可用的数据。 因此,CPU将指示内核有些东西不可用,并且该过程将被暂停。 然后,内核在通过CPU加载第二个执行过程并开始调查第二个内存位置(比如虚拟内存)中的数据并获取它之后,通过交换到当前不活动的内存数据将其放回主内存,以及将进程放回就绪队列中执行。

我们知道计算机系统中的所有东西都只能被CPU操纵,如果CPU忙于连续执行处理代码,那么谁在执行内核代码来执行内核完成的任务? 请让我知道我是否能够解释这种情况。


在任何时候,CPU(/ s)都会

  • 在用户模式下运行进程。
  • 代表内核模式中的进程运行previleged指令或访问硬件(例如发出系统调用读/写时)。
  • 在repsonse中运行到硬件中断。 即在中断环境中运行。 (不特别与任何进程关联),并且在内核模式下是。
  • 运行一些内核线程来提供像soft irq这样的延迟工作。 (Tasklet / Softirq)
  • 如果没有执行任何内容,则运行CPU空闲线程。
  • 如果你特别询问有关调度问题,那么

  • 假设一个进程正在运行,现在它已经发出一个读取调用来从硬盘检索数据,比方说,进程从CPU中移除,并且内核调用schedule()函数。 因此,在这里,第一个进程问题将读取系统调用,从而导致从用户模式切换到内核模式。 代表进程运行的内核准备硬盘读取操作,然后调用schedule()函数
  • 假设硬件中断已经到来,那么当前正在运行的进程被删除,并且该中断的中断服务处理程序开始以内核模式执行(显然)。
  • 基本上,内核运行在用户进程之间!

    现在清除?

    词shash


    内核运行的结果可能是硬件中断,或者是由进程调用来执行某些操作的结果。 在这两种情况下,当前正在执行的代码都会停止运行,直到内核完成其工作。

    它与函数调用类似:当函数A调用函数B时,函数A必须等到函数B完成它的功能,然后将控制权返回给函数A.不需要多个CPU或任何类型的魔术做到这一点。


    CPU不会连续执行处理代码。 CPU被中断以执行各种操作。 中断可能由于各种原因而发生:资源变得可用,前一个动作完成,或者只是一个计时器关闭。

    我推荐这一系列视频以获得更深入的信息:http://academicearth.org/courses/operating-systems-and-system-programming

    链接地址: http://www.djcxy.com/p/79821.html

    上一篇: who is running kernel if cpu is running processes?

    下一篇: How to determine the hardware (CPU and RAM) on a machine?