关于 Linux 调度程序和其他类似内核系统调用,我有一个一般性问题。
Linux 调度程序是否被视为一个“进程”,每次对调度程序的调用都需要上下文切换,就像它只是另一个进程一样?
假设我们有一个时钟滴答声中断了当前正在运行的用户模式进程,现在我们必须调用调度程序。调用调度程序本身是否会引发上下文切换?调度程序是否有其自己的寄存器、U-Area 和其他必须在每次调用时恢复的内容?
这个问题也适用于许多其他系统调用。内核进程在上下文切换方面是否像常规进程一样,唯一的区别是它们拥有更多的权限和访问 CPU 的能力?
我之所以提出这个问题,是因为上下文切换的开销很大。调用调度程序本身引起上下文切换并恢复调度程序状态,之后调度程序再调用另一个进程运行,再次进行上下文切换,听起来很奇怪。