在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 Linux的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!
但是这并不是调度的基础。每个 CPU 都有一个 0 号线程,在该线程内有一个循环,但不是空循环,而是会调用电源管理,使 CPU 降频。如果把这个循环改成空循环,系统仍能正常工作,但是 CPU 的发热会一直保持在 100% 的状态。这种情况在早期没有电源管理的 386/486 上比较常见,因为这部分代码会被条件编译忽略。因此,这个循环本质上等同于空循环。需要注意的是,0 号进程并不负责调度其他进程。虽然它会调用 scheduler,但这个调用和其他进程通过 system call 让出 CPU 的方式是等同的,并非它独有。scheduler 还可以被时钟中断调起。此外,0 号进程的优先级是最低的,甚至低于 scheduler 的 starving-prevention 策略,因此每次 scheduler 被时钟中断或 system call 唤起时,只要有其他用户进程需要运行,就不会轮到它。但是在现代系统中,99% 的时间都是 0 号进程在运行,这就是系统的 IDLE 时间。