我是这个操作系统的新手。由于内核控制着所有其他程序的执行以及它们所需的资源,我认为它也应该由 CPU 执行。如果是这样,它在哪里执行?如果我认为CPU应该执行什么是由内核控制的,那么如果CPU正在执行内核本身,内核如何控制CPU!!!..
这对我来说似乎是一个悖论......请解释......顺便说一下,我根本没有得到这些CPU模式......如果内核正在控制所有进程......那为什么是这些CPU模式?如果它们在那里,那么它们是由软件(OS)还是硬件本身实现的?
谢谢...
我是这个操作系统的新手。由于内核控制着所有其他程序的执行以及它们所需的资源,我认为它也应该由 CPU 执行。如果是这样,它在哪里执行?如果我认为CPU应该执行什么是由内核控制的,那么如果CPU正在执行内核本身,内核如何控制CPU!!!..
这对我来说似乎是一个悖论......请解释......顺便说一下,我根本没有得到这些CPU模式......如果内核正在控制所有进程......那为什么是这些CPU模式?如果它们在那里,那么它们是由软件(OS)还是硬件本身实现的?
谢谢...
一个快速的答案。在 x86 等平台上,内核可以完全控制 CPU 的中断和上下文切换能力。因此,尽管内核大部分时间都没有运行,但它经常有机会决定 CPU 将切换到哪个程序并允许该程序运行一些程序。这部分内核称为调度程序。除此之外,每次程序进行系统调用(例如访问某些硬件的请求,例如磁盘驱动器等)时,内核都有机会执行。
PS 内核可以停止正在运行的程序、控制 CPU 并调度不同的程序这一事实称为抢占式多任务
更新:关于 CPU 模式,我假设您的意思是 x86 风格的环?这些是 CPU 上当前执行代码的权限级别,允许 CPU 决定当前运行的程序是否是“内核”并且可以为所欲为,或者它可能是一个不能做的较低权限级别的程序某些事情(例如强制上下文切换或摆弄虚拟内存)
没有悖论:
内核是在它控制的机器上运行的“程序”。它在机器启动时由引导加载程序加载。
它的任务是为应用程序提供服务和控制应用程序。为此,它必须控制运行它的机器。
有关详细信息,请在此处阅读:http ://en.wikipedia.org/wiki/Operating_System