内核是一个总是执行的特殊程序吗?为什么是这些 CPU 模式?

nit*_*712 5 cpu operating-system kernel

我是这个操作系统的新手。由于内核控制着所有其他程序的执行以及它们所需要的资源,我认为它也应该由CPU来执行。如果是这样,它在哪里执行?如果我认为 CPU 应该执行什么是内核控制的,那么如果 CPU 正在执行内核本身,那么内核如何控制 CPU !!!..

这对我来说似乎是一个悖论......请解释......顺便说一下我根本没有得到这些CPU模式......如果内核控制所有进程......那么为什么这些CPU模式?如果它们在那里,那么它们是由软件(OS)还是硬件本身实现的?

谢...

sin*_*law 5

快速回答。在像 x86 这样的平台上,内核可以完全控制 CPU 的中断和上下文切换能力。因此,尽管内核大部分时间都没有运行,但它时常有机会决定 CPU 将切换到哪个程序并允许该程序运行一些程序。内核的这部分称为调度程序。除此之外,每次程序进行系统调用时内核都有机会执行(例如请求访问某些硬件,例如磁盘驱动器等)

PS 内核可以停止正在运行的程序,控制 CPU 并调度不同的程序这一事实称为抢占式多任务处理

更新:关于 CPU 模式,我假设您是指 x86 样式的?这些是 CPU 上当前执行代码的权限级别,允许 CPU 决定当前正在运行的程序是“内核”并且可以为所欲为,还是可能是一个权限级别较低的程序不能做某些事情(例如强制上下文切换或摆弄虚拟内存)