一、调度器/调度程序(Scheduler)
调度器是操作系统中的一个核心组件,负责管理系统中的进程或线程,以实现多任务处理。它的主要职责是按照一定的策略决定哪个进程或线程可以获得CPU执行时间,如何分配系统资源,从而保证系统的高效运行和响应。调度器通过调度算法来选择优先执行的任务,并切换任务上下文,同时负责将进程或线程从一种状态(如就绪态、运行态、等待态)切换到另一种状态。
二、调度的时机
调度的时机是指触发调度程序工作的具体事件或条件。这些时机主要包括:
1、创建新进程:当新进程被创建时,需要将其加入就绪队列,并可能触发调度程序选择新的进程运行。 2、进程退出:当进程完成其任务并退出时,需要释放其占用的资源,并可能触发调度程序选择其他进程运行。 3、运行进程阻塞:当进程因等待I/O操作或其他资源而无法继续执行时,会进入阻塞状态,此时可能触发调度程序选择其他就绪进程运行。 4、I/O中断发生:I/O中断可能唤醒某些因等待I/O操作而阻塞的进程,此时也可能触发调度程序重新调度。
三、调度方式(抢占式与非抢占式)
非抢占式调度:
一旦把处理机分配给某个进程后,除非该进程终止或者主动要求进入阻塞态,否则会一直运行下去,不允许其他进程抢占自己占有的处理机。 优点是实现简单,系统开销小;缺点是可能导致长作业饥饿,以及响应时间较长。
抢占式调度:
把处理机分配给某个进程后,如果有一个更重要、更紧急的进程需要用到处理机,那么当前进程会立即暂停,把处理机交给新进程。 优点是响应时间短,系统资源利用率高;缺点是系统开销大,可能导致进程上下文切换频繁。
四、闲逛进程(Idle Process)
闲逛进程是操作系统中的一个特殊进程,当系统没有任何其他可运行的进程时,调度器会将CPU的控制权交给这个进程。闲逛进程的主要目的是确保在没有任务可执行的情况下,CPU不会空转,从而防止CPU进入不受控制的状态。闲逛进程具有最低的优先级,只有在所有其他进程都处于等待或阻塞状态时,调度器才会选择它执行。
五、内核级线程与用户级线程调度
内核级线程调度:
内核级线程由操作系统内核管理,线程的创建、撤销、调度和同步等操作都由内核完成。 优点是线程切换快,系统开销小;缺点是线程的创建和撤销等操作需要由内核完成,因此效率相对较低。
用户级线程调度:
用户级线程由用户态的线程库管理,线程的创建、撤销、调度和同步等操作都由线程库完成。 优点是线程的创建和撤销等操作不需要内核参与,因此效率较高;缺点是线程切换需要用户态和内核态之间的切换,因此系统开销相对较大。