一、调度器/调度程序(scheduler)
2、③由调度程序引起,调度程序决定:
- 让谁运行?――调度算法
- 运行多长时间?―一时间片大小
调度时机――什么事件会触发“调度程序”?
- 创建新进程
- 进程退出
- 运行进程阻塞
- I/O中断发生(可能唤醒某些阻塞进程)
- 非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作
- 抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作
调度器(Scheduler)或调度程序(Scheduling Program)是操作系统中的一个核心组件,负责管理系统中的进程或线程,以实现多任务处理。它的主要职责是按照一定的策略决定哪个进程或线程可以获得CPU执行时间,如何分配系统资源,从而保证系统的高效运行和响应。
调度器的主要功能
分配CPU时间:调度器决定当前哪个进程或线程可以获得CPU执行权。它通过调度算法来选择优先执行的任务,并切换任务上下文。
进程/线程的状态切换:调度器负责将进程或线程从一种状态(如就绪态、运行态、等待态)切换到另一种状态。常见的状态包括:
- 运行态:正在使用CPU的进程。
- 就绪态:等待被调度执行的进程。
- 等待态:由于某些事件(如I/O操作或资源不可用)而无法执行的进程。
资源分配与管理:除了分配CPU时间,调度器还负责管理和调度其他系统资源,如内存、I/O设备等。
保证系统性能和公平性:调度器的设计目标包括最大限度地利用CPU、减少进程切换开销、提高系统响应速度、以及在多任务之间公平分配资源,防止饥饿现象。
二、闲逛进程【调度程序永远的备胎】
闲逛进程(Idle Process)是操作系统中的一个特殊进程,当系统没有任何其他可运行的进程时,调度器会将CPU的控制权交给这个进程。闲逛进程的主要目的是确保在没有任务可执行的情况下,CPU不会空转,从而防止CPU进入不受控制的状态。
2.1 闲逛进程的特点
-
最低优先级:闲逛进程的优先级极低,只有在所有其他进程都处于等待或阻塞状态时,调度器才会选择它执行。实际上,闲逛进程的存在就是为了填补“空闲”的CPU时间。
-
无实际工作:闲逛进程并不执行任何实际的工作,它的代码通常非常简单,可能是一个无限循环,反复执行诸如“等待中断”或“让CPU进入低功耗状态”等操作。
-
不影响系统性能:由于闲逛进程只在系统空闲时运行,它并不会占用其他进程的资源或CPU时间,因此不会影响系统的性能。
-
节省电能:在现代操作系统中,闲逛进程通常会调用特定的CPU指令,使CPU进入低功耗状态(如C-state或Halt指令),从而节省能源并减少发热。这对移动设备和服务器的能源管理尤为重要。
2.2 闲逛进程的作用
-
保持CPU忙碌:即使在没有任何进程可执行时,闲逛进程确保CPU不会处于完全空闲状态。它保持CPU处于工作状态,直到有新的任务到来为止。
-
系统稳定性:闲逛进程的存在可以确保CPU不会因为没有任务执行而崩溃或进入不确定的状态。
-
节省能耗:现代操作系统中,闲逛进程的一个重要功能是降低功耗。它通过将CPU置于低功耗状态来减少电力消耗,尤其是在没有任何用户交互的情况下(如服务器或移动设备)。
2.3 例子
在Linux操作系统中,闲逛进程的进程ID通常是0,被称为swapper
或idle task
。它是系统启动时创建的第一个进程,始终在内核态运行,确保当没有其他可调度任务时,CPU有事情可做。
在Windows系统中,闲逛进程被称为System Idle Process
,同样用于在系统空闲时占据CPU时间,以维持系统的运行稳定。如下图所示:
2.4 闲逛进程和其他进程的区别
- 优先级:闲逛进程具有最低的优先级,只有在没有其他进程可以运行时,调度器才会选择它。
- 无实际业务逻辑:闲逛进程不会执行任何业务逻辑,它的唯一目的是等待其他进程出现并运行。
- 不可终止:闲逛进程是系统进程,不可被用户终止,因为它是保证系统正常运行的基础进程。
2.5 总结
闲逛进程是操作系统中的一个特殊进程,负责在系统没有其他任务执行时占据CPU,保持系统的稳定性和正常运行。它的主要作用是节省资源、降低功耗,并确保CPU始终处于可控状态,等待新的任务到来。