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