Appearance
题目
下列选项中,满足短任务优先且不会发生饥饿现象的调度算法是( )。
错因
A
FCFS 不饥饿(按到达顺序排队、人人都能轮到),但不偏向短任务——长任务先到的话短任务必须排队等。题问"短任务优先且不饥饿",A 只满足后半。
C
时间片轮转不饥饿(轮流来),但不偏向短任务——它对长短任务一视同仁,每人都拿一个时间片。短任务在 RR 下没有优先权。
D
非抢占式 SJF 偏向短任务(核心机制就是选最短的),但会饥饿——源源不断的短任务进来,长任务永远排在最后等不到。题问"且不饥饿",D 不满足后半。
总解析
题问的是两个条件同时满足:① 短任务优先 ② 不饥饿。逐项核对:
| 算法 | 短任务优先? | 不饥饿? | 同时满足? |
|---|---|---|---|
| A FCFS | ✗ | ✓ | ✗ |
| B HRRN(高响应比) | ✓ | ✓ | ✓ |
| C 时间片轮转 | ✗ | ✓ | ✗ |
| D 非抢占 SJF | ✓ | ✗(长任务可能饥饿) | ✗ |
HRRN 的工作机制:
每个进程的"响应比"定义为:
调度时选 R 最大的进程跑。两条性质:
- 短任务优先:服务时间小 → 分母小 → R 大 → 优先调度。这一点与 SJF 相同。
- 不饥饿:等待时间随时间增长 → 分子增大 → R 越来越大。无论一个长任务多长,等够久后它的 R 必然超过新到达的短任务,最终被调度。
速记:HRRN 把"等待时间"也算进优先级,等得越久优先级越高——既保留了 SJF 偏向短任务的高效,又用"等待时间"这个动态因子消除了饥饿。是 SJF 和 FCFS 的折中。
最终答案是 B。