操作系统原理期末复习#2:进程调度算法

431 阅读6分钟

操作系统原理期末复习#2:进程调度算法

概念回顾

关于调度

调度是操作系统的基本功能,几乎所有计算机资源在使用之前都需要经过调度。经过进程调度,系统才能把计算机中最主要的资源——CPU分配给最合适的进程,提高计算机的效率。

调度类型

  • 高级调度:又称作业调度,该调度决定哪些程序可以进入系统,即让一个程序成为一个进程。用于控制多道程序的道数
  • 中级调度:又称对换程序,通常系统会将暂时不能运行的进程调至外存等待,节省宝贵的内存空间,提高内存利用率和系统吞吐量。中级调度程序则决定将外存上具备运行条件的进程重新调入内存。
  • 低级调度:又称进程调度,决定就绪队列中的哪个进程获得处理机。进程调度是最基本的调度,在操作系统中必须配置这级调度。

进程调度方式

  • 不可剥夺方式/非抢占方式(Nonpreemptive):把处理机分配给进程后,该进程将一直执行下去,直到运行完毕或因某种原因不能运行。
    • 优点:实现简单,系统开销小。
    • 缺点:难以满足有紧急任务的进程要求。更适用于批处理操作系统,不适用于对时间要求严格的实时操作系统。
  • 可剥夺方式/抢占方式(Preemptive):允许一个进程按照某种原则抢占其它进程占用的处理机。

调度的性能准则

  • 响应时间:指从提交请求到系统开始响应该请求所需的时间。短的响应时间对于交互式系统尤为重要,可以提高用户体验。
  • 周转时间:从作业提交到作业完成的总时间,包括等待时间、执行时间等。较短的周转时间意味着作业能更快地完成,提高系统的效率。
  • 优先权:一些进程由于其重要性或紧急程度,可能需要优先获得处理机。优先调度算法会根据进程的优先级进行调度,确保高优先级进程及时执行。
  • 截止时间:对于实时系统,有些任务有明确的截止时间,必须在此时间之前完成,否则会造成系统失败或损害。调度策略需保证这些任务在规定时间内完成。
  • 系统吞吐量:指单位时间内系统完成作业的数量。较高的吞吐量表明系统能处理更多的作业,提高整体效率。
  • 处理机的利用率:衡量处理机在调度周期内的忙碌程度。较高的利用率表明处理机资源得到了充分利用,但也需要防止过载导致系统响应变慢。
  • 各类资源的平衡使用:系统不仅需要高效使用处理机,还需要平衡使用内存、I/O设备等其他资源,避免某一资源成为瓶颈。
  • 公平:确保所有进程都有机会获得处理机,防止某些进程长期得不到服务。公平性在多用户、多任务环境中尤为重要,避免资源饥饿现象。

术语解释

  • 到达时间(提交时间):TheArrivingTime
    • 就是进程告诉操作系统你要开始处理我了的时间点,之后进入队列等待被处理。
  • 开始时间:Start time/Begin
    • 就是操作系统真正开始处理进程的时间点。
  • 服务时间(CPU突发时间):TheRunningTime / CPU burst time
    • 就是操作系统处理完这个程序需要多久。
  • 等待时间:TheWaitingTime
    • 等待时间=开始时间-到达时间等待时间=开始时间-到达时间
    • 从告诉操作系统开始执行进程到操作系统真正开始执行该进程所用的时间。
  • 周转时间:The Turnaround Time
    • 周转时间=完成时间-到达时间周转时间=完成时间-到达时间
    • 从告诉操作系统开始执行进程到操作系统真正执行完毕该进程所用的时间。
  • 带权周转时间:WeightedTurnaroundTime
    • 带权周转时间=周转时间÷服务时间带权周转时间=周转时间\div服务时间

调度算法

引例

接下来将通过下面这个引例展开不同调度算法的介绍:

系统有5个进程,它们的到达时间和服务时间如下图所示。新进程(没有运行过)与老进程(运行过的进程)的条件相同时,假定系统选新进程运行。

image.png

先来先服务(First Come First Served, FCFS)

先来先服务是一种简单的调度算法,

  • 适用于进程调度、作业调度;
  • 基本思想是按进程/作业到达的前后顺序进行调度
  • 处理机调度方式:非剥夺方式

算法特点

  • 有利于长作业,不利于短作业;
  • 有利于处理机繁忙的作业,不利于I/O繁忙的作业。

引例分析

image.png

  • 开始时间min(到达时间,上一个执行进程的完成时间)min(到达时间, 上一个执行进程的完成时间)
  • 完成时间开始时间+服务时间开始时间 + 服务时间
  • 周转时间完成时间到达时间完成时间 - 到达时间
  • 带权周转时间周转时间÷服务时间周转时间 \div 服务时间

短作业/进程优先(Short Job First, SJF / Shortest Process Next, SPN)

对短进程或短作业优先调度的算法,

  • 可分别用于进程调度和作业调度中;
  • 基本思想是在当前已到达的进程/作业中,选择服务时间最短的进程优先执行
  • 处理机调度方式仍是非剥夺方式
  • 设计目的是改进FCFS算法,减少作业/进程的平均周转时间。

算法特点

  • 改善了平均周转时间与平均带权周转时间,缩短了等待时间;
  • 有利于提高系统的吞吐量;
  • 对长作业或进程不利;
  • 没有考虑作业/进程的紧迫程度;
  • 可能导致长作业进程“饿死”,永远得不到执行。

引例分析

image.png

  • 谁先开始:已到达的进程,服务时间短的先开始。
  • 完成时间开始时间+服务时间开始时间 + 服务时间
  • 周转时间完成时间到达时间完成时间 - 到达时间
  • 带权周转时间周转时间÷服务时间周转时间 \div 服务时间

时间片轮转(Round Robin, RR)

  • 主要用于进程调度;
  • 基本思想是先按FCFS原则将进程排为一个队列,把处理机分配给队首进程,令其执行一个时间片(q)(q),超时后移至队尾,继续分配给队列中的下一个进程;
  • 处理机调度方式是可剥夺方式

算法特点

  • 时间片的长度会影响到算法的效果:
    • 如时间片过长,多数进程可在一个时间片完成,算法会退化为FCFS。
    • 时间片过短,则用户的一次交互需要多次调度才可完成,响应时间过长。
  • 在分时操作系统和事务处理系统中特别有效,但对I/O频繁的进程不利。

引例分析

以时间片q=1q=1为例:

a426a439ebf93feed2b4f5f443673cde.png

  • 进程队列:按照FCFS原则排列,队首程序执行完一个时间片后到队尾等待。
  • 完成时间:当 已执行时间=服务时间已执行时间 = 服务时间 时的时间。

image.png

  • 周转时间完成时间到达时间完成时间 - 到达时间
  • 带权周转时间周转时间÷服务时间周转时间 \div 服务时间

其它调度算法

  • 优先权调度(Priority)
  • 最短剩余时间优先(SRT)
    • 优先权=服务时间已执行时间优先权=服务时间-已执行时间
  • 响应比高者优先(HRRN)
    • 优先权=(等待时间+服务时间)÷服务时间优先权=(等待时间+服务时间)\div服务时间
  • 多级反馈队列(Multilevel Feedback Queue, MFQ)
    • 设置多个就绪队列,不同就绪队列的优先级不同。
    • 各个队列进程执行的时间片大小也不同。优先权越高的队列进程执行的时间片越短
    • 进程若在当前队列不能一个时间片内完成,则转入次优先级队尾等待,以此类推。
    • 只有高优先级队列为空时,低优先级队列才开始调度。
    • 队列的排序方式与时间片轮转法一致。

参考资料

  • 计算机操作系统:微课视频版/郁红英等编著.——4版.——北京:清华大学出版社,2202.1(2024.1重印)
  • www.bilibili.com/video/BV1kJ…