定义
进程调度是进程管理器的活动,它处理从 CPU 中移除正在运行的进程并根据特定策略选择另一个进程。
进程调度是多道程序操作系统的重要组成部分。 此类操作系统允许一次将多个进程加载到可执行内存中,并且加载的进程使用时分复用共享
CPU。
调度类别
调度分为两类:
1.非抢占式: 在进程完成执行之前,不能从进程中获取资源。
当正在运行的进程终止并进入等待状态时,就会发生资源切换。
2.抢占式: 这里操作系统将资源分配给进程一段固定的时间。
在资源分配过程中,进程从运行状态切换到就绪状态或从等待状态切换到就绪状态。 发生这种切换是因为
CPU 可能会优先考虑其他进程,并将优先级较高的进程替换为正在运行的进程。
进程调度队列
操作系统在进程调度队列中维护所有进程控制块 (PCB)。
操作系统为每个进程状态维护一个单独的队列,并且处于相同执行状态的所有进程的PCB被放置在同一个队列中。
当一个进程的状态发生变化时,它的 PCB 会从它当前的队列中取消链接并移动到它的新状态队列中。
操作系统维护以下重要的进程调度队列 −
- 作业队列 − 这个队列保存了系统中的所有进程。
- 就绪队列 − 该队列保留了一组驻留在主内存中的所有进程,准备好并等待执行。 一个新进程总是放在这个队列中。
- 设备队列 − 由于 I/O 设备不可用而阻塞的进程构成此队列。
操作系统可以使用不同的策略来管理每个队列(FIFO、循环、优先级等)。
操作系统调度程序确定如何在就绪队列和运行队列之间移动进程,系统上每个处理器核心只能有一个条目;
在上图中,它已与 CPU 合并。
两态过程模型
两态进程模型是指运行和非运行状态,如下所述 −
调度器
调度程序是一种特殊的系统软件,它以各种方式处理进程调度。
他们的主要任务是选择要提交到系统中的作业并决定运行哪个进程。 调度器分为三种类型 −
长期调度程序
它也被称为作业调度器。 长期调度程序确定哪些程序被允许进入系统进行处理。
它从队列中选择进程并将它们加载到内存中执行。 进程加载到内存中进行 CPU 调度。
作业调度程序的主要目标是提供平衡的作业组合,例如 I/O
限制和处理器限制。 它还控制多道程序的程度。 如果多道程序的程度是稳定的,那么进程的平均创建率必须等于进程离开系统的平均离开率。
在某些系统上,长期调度程序可能不可用或很少。 分时操作系统没有长期调度程序。
当一个进程从新状态变为就绪状态时,就需要使用长期调度器。
短期调度程序
也称为CPU调度器。 其主要目标是根据所选标准提高系统性能。
它是进程的就绪状态到运行状态的变化。 CPU 调度程序在准备好执行的进程中选择一个进程,并将
CPU 分配给其中一个。
短期调度程序,也称为调度程序,决定接下来执行哪个进程。
短期调度程序比长期调度程序更快。
中期调度程序
中期调度是交换的一部分。 它从内存中删除进程。 它降低了多道程序的程度。
中期调度器负责处理换出的进程。
如果一个正在运行的进程发出 I/O 请求,它可能会被挂起。
暂停的进程无法在完成方面取得任何进展。 在这种情况下,为了从内存中删除进程并为其他进程腾出空间,挂起的进程被移动到辅助存储。
这个过程被称为swapping,这个过程被称为被换出或转出。 可能需要交换以改进流程组合。
调度器之间的比较
上下文切换
上下文切换是在进程控制块中存储和恢复 CPU 的状态或上下文的机制,以便稍后可以从同一点恢复进程执行。
使用这种技术,上下文切换器使多个进程能够共享一个 CPU。 上下文切换是多任务操作系统功能的重要组成部分。
当调度程序将 CPU 从执行一个进程切换到执行另一个时,当前运行进程的状态被存储到进程控制块中。
之后,从自己的PCB中加载下一个要运行的进程的状态,用于设置PC、寄存器等。此时,第二个进程就可以开始执行了。
上下文切换是计算密集型的,因为必须保存和恢复寄存器和内存状态。
为了避免上下文切换时间量,一些硬件系统采用两组或更多组处理器寄存器。 当进程切换时,会保存以下信息以备后用。
- 程序计数器
- 计划信息
- 基础和限制寄存器值
- 当前使用的寄存器
- 改变状态
- I/O 状态信息
- 监听信息
|