问答题799/1053进程调度算法

难度:
2021-11-02 创建

参考答案:

进程调度算法是操作系统用来决定哪些进程在何时执行的策略,目的是为了合理分配系统资源,提高系统的响应速度和资源利用率。不同的调度算法有不同的优缺点,适用于不同的应用场景。常见的进程调度算法可以分为以下几类:

1. 先来先服务(FCFS,First-Come, First-Served)

定义
FCFS 是最简单的调度算法,按进程到达的顺序依次执行,先到达的进程先执行。

特点

  • 非抢占式:一旦一个进程开始执行,直到执行完毕才会切换到下一个进程。
  • 易于实现,简单直观。
  • 不适合实时系统和需要高响应性的场景。

缺点

  • 不公平性:长时间运行的进程可能会导致后续进程的等待时间过长(Convoy Effect)。
  • 平均等待时间长:特别是当短作业排在长作业后面时,可能导致整个系统的平均等待时间增加。

适用场景

  • 对于大多数进程的执行时间大致相同的情况,FCFS 可以有效利用系统资源。

2. 最短作业优先(SJF,Shortest Job First)

定义
SJF 调度算法优先选择执行估计运行时间最短的进程。它可以是非抢占式的(即已开始执行的进程不会被打断)或抢占式的(即当前进程如果有更短的作业进入,则会被抢占)。

特点

  • 抢占式:最短作业会被优先调度,即使当前进程正在运行。
  • 非抢占式:只要一个进程开始执行,直到执行完毕。

优点

  • 可以有效减少平均等待时间。

缺点

  • 难以实现:需要知道进程的执行时间,但在大多数情况下,操作系统无法准确预测。
  • 可能导致饥饿:长作业可能一直得不到调度,导致饿死现象。

适用场景

  • 如果能准确估计每个进程的执行时间,SJF 可以提供最优的性能。

3. 优先级调度(Priority Scheduling)

定义
根据每个进程的优先级进行调度,优先级高的进程先执行。优先级调度可以是抢占式的,也可以是非抢占式的。

特点

  • 抢占式:如果新的进程优先级更高,则会抢占当前进程。
  • 非抢占式:一旦进程开始执行,就会一直执行直到完成。

优点

  • 可根据进程的重要性进行调度,能够实现优先级任务的优先执行。

缺点

  • 饥饿问题:低优先级的进程可能永远得不到执行。
  • 优先级反转:低优先级的进程可能因为占用资源而阻碍高优先级进程的执行。

适用场景

  • 用于需要区分不同任务重要性的场景,如实时操作系统。

4. 轮转调度(RR,Round Robin)

定义
RR 调度算法是一种时间片轮转调度算法,所有进程按顺序轮流执行,每个进程分配一个时间片(Time Quantum)。如果进程在时间片内没有执行完,系统会将其挂起,换到下一个进程执行。

特点

  • 抢占式:每个进程会在分配的时间片内运行,时间片耗尽后会被挂起,执行下一个进程。
  • 公平性:每个进程都能获得相等的 CPU 时间。

优点

  • 时间片分配使得每个进程的等待时间得到了控制,能够保证系统响应速度。
  • 易于实现,且适用于大多数系统,特别是交互式系统。

缺点

  • 时间片的大小对性能影响很大。如果时间片过小,会增加上下文切换的开销;如果时间片过大,可能失去轮转调度的优势。
  • 不一定能有效减少等待时间。

适用场景

  • 多任务操作系统,尤其是交互式系统,用户对响应时间有一定要求。

5. 多级反馈队列(Multilevel Feedback Queue,MLFQ)

定义
多级反馈队列是一种改进的调度算法,它结合了多个队列,每个队列有不同的优先级。进程根据运行时间和行为被动态地调整到不同的队列中,优先级较高的队列使用较短的时间片,优先级较低的队列使用较长的时间片。

特点

  • 进程在队列之间移动,短作业和长作业分别被分配到不同的队列。
  • 如果一个进程长时间没有完成,则会被移动到较低优先级的队列中。

优点

  • 结合了优先级调度和轮转调度的优点。
  • 能够动态调整进程优先级,避免了饥饿问题。

缺点

  • 配置和实现相对复杂。
  • 队列之间的优先级调度可能会引入不必要的复杂度。

适用场景

  • 多任务的操作系统,特别是需要平衡响应时间和公平性的场景。

6. 短期调度与长期调度

在进程调度中,通常有以下两种调度:

  • 短期调度:在多个就绪进程中选择一个进程运行。一般由 CPU 调度算法(如 FCFS、SJF、RR、MLFQ)来实现。
  • 长期调度:决定哪些新进程从外存调入内存,进入就绪队列等待调度。长期调度一般由操作系统的进程管理部分负责。

7. 调度算法的性能指标

进程调度算法的性能通常通过以下几个指标来衡量:

  • 周转时间(Turnaround Time):一个进程从提交到完成所需的总时间。周转时间包括等待时间、执行时间和输入输出时间。

  • 等待时间(Waiting Time):进程在就绪队列中等待 CPU 时间的总时长。

  • 响应时间(Response Time):进程从提交到第一个响应之间的时间。对于交互式系统,响应时间是非常重要的。

  • 吞吐量(Throughput):单位时间内完成的进程数,通常衡量系统的处理能力。


最近更新时间:2024-12-12