操作系统 - 进程调度

  • 定义

    进程调度是进程管理器的活动,它处理从 CPU 中移除正在运行的进程并根据特定策略选择另一个进程。
    进程调度是多道程序操作系统的重要组成部分。这样的操作系统允许一次将多个进程加载到可执行存储器中,并且加载的进程使用时间多路复用来共享CPU。
  • 调度类别

    调度分为两类:
    1. Non-preemptive: 在流程完成执行之前,无法从流程中获取资源。当正在运行的进程终止并进入等待状态时,就会发生资源的切换。
    2. Preemptive:在这里,操作系统将资源分配给进程一段固定的时间。在资源分配过程中,进程从运行状态切换到就绪状态或从等待状态切换到就绪状态。发生这种切换是因为 CPU 可能会优先考虑其他进程,并将优先级较高的进程替换为正在运行的进程。
  • 进程调度队列

    操作系统在进程调度队列中维护所有进程控制块 (PCB)。操作系统为每个进程状态维护一个单独的队列,并且处于相同执行状态的所有进程的PCB被放置在同一个队列中。当一个进程的状态发生改变时,它的 PCB 会从它的当前队列中取消链接并移动到它的新状态队列中。
    操作系统维护以下重要的进程调度队列 -
    • 作业队列− 该队列保存系统中的所有进程。
    • 准备队列− 该队列保存一组驻留在主内存中的所有进程,准备好并等待执行。一个新进程总是放在这个队列中。
    • 设备队列− 由于 I/O 设备不可用而阻塞的进程构成该队列。
    进程调度队列
    操作系统可以使用不同的策略来管理每个队列(FIFO、循环、优先级等)。操作系统调度程序确定如何在就绪队列和运行队列之间移动进程,系统上每个处理器核心只能有一个条目;在上图中,它已与 CPU 合并。
  • 两态过程模型

    两态过程模型是指运行和非运行状态,如下所述 -
    序列号 状态和描述
    1
    Running
    当一个新的进程被创建时,它就以运行状态进入系统。
    2
    Not Running
    未运行的进程保留在队列中,等待轮到它们执行。队列中的每个条目都是指向特定进程的指针。队列是使用链表实现的。调度程序的使用如下。当一个进程被中断时,该进程被转移到等待队列中。如果该过程已完成或中止,则该过程被丢弃。在任何一种情况下,调度程序都会从​​队列中选择一个进程来执行。
  • 调度器

    调度程序是特殊的系统软件,它以各种方式处理进程调度。他们的主要任务是选择要提交到系统中的作业并决定运行哪个进程。调度程序分为三种类型 -
    • 长期调度器
    • 短期调度器
    • 中期调度器
  • 长期调度程序

    它也被称为job scheduler. 长期调度程序确定哪些程序被允许进入系统进行处理。它从队列中选择进程并将它们加载到内存中执行。进程加载到内存中以进行 CPU 调度。
    作业调度程序的主要目标是提供平衡的作业组合,例如 I/O 限制和处理器限制。它还控制多道程序的程度。如果多道程序的程度是稳定的,那么进程创建的平均速率必须等于进程离开系统的平均离开速率。
    在某些系统上,长期调度程序可能不可用或很少。分时操作系统没有长期调度程序。当一个进程将状态从新更改为就绪时,就会使用长期调度程序。
  • 短期调度程序

    它也被称为CPU scheduler. 其主要目标是根据所选标准提高系统性能。它是进程的就绪状态到运行状态的变化。CPU调度程序在准备好执行的进程中选择一个进程并将CPU分配给其中一个。
    短期调度程序,也称为调度程序,决定接下来执行哪个进程。短期调度程序比长期调度程序更快。
  • 中期调度程序

    中期调度是其中的一部分swapping. 它从内存中删除进程。它降低了多道程序的程度。中期调度器负责处理换出的进程。
    如果一个正在运行的进程发出 I/O 请求,它可能会被挂起。暂停的进程无法在完成方面取得任何进展。在这种情况下,为了从内存中删除进程并为其他进程腾出空间,挂起的进程被移动到辅助存储。这个过程称为swapping,并且该过程被称为被换出或推出。可能需要交换以改进工艺组合。
  • 调度器之间的比较

    序列号 长期调度器 短期调度器 中期调度器
    1 它是一个作业调度器 它是一个 CPU 调度程序 它是一个进程交换调度程序。
    2 速度小于短期调度器 速度是其他两个中最快的 速度介于短期和长期调度程序之间。
    3 它控制多道程序的程度 它提供了对多道程序程度的较少控制 它降低了多道程序的程度。
    4 在分时系统中几乎不存在或最小化 在分时系统中也是最小的 它是分时系统的一部分。
    5 它从池中选择进程并将它们加载到内存中执行 它选择那些准备好执行的进程 它可以将进程重新引入内存并继续执行。
  • 上下文切换

    上下文切换是在进程控制块中存储和恢复 CPU 的状态或上下文的机制,以便稍后可以从同一点恢复进程执行。使用这种技术,上下文切换器使多个进程能够共享一个 CPU。上下文切换是多任务操作系统功能的重要组成部分。
    当调度程序将 CPU 从执行一个进程切换到执行另一个进程时,当前运行进程的状态被存储到进程控制块中。之后,从自己的PCB加载下一个进程运行的状态,用于设置PC、寄存器等。此时,第二个进程可以开始执行。
    进程上下文切换
    上下文切换是计算密集型的,因为必须保存和恢复寄存器和内存状态。为了避免上下文切换时间量,一些硬件系统采用两组或更多组处理器寄存器。当进程切换时,将存储以下信息以供以后使用。
    • 程序计数器
    • 调度信息
    • 基本和限制寄存器值
    • 当前使用的寄存器
    • 改变状态
    • I/O 状态信息
    • 统计信息