题目
假设设有4个作业 Q1, Q2, Q3, Q4 需要调度,这4个作业几乎同时到达,执行顺序按照 Q1, Q2, Q3, Q4,执行时间分别为 5ms, 8ms, 6ms, 2ms。使用轮转调度[1](Round Robin)算法,时间片[2]为4ms。以下哪些选项是正确的?A Q1的周转时间为9msB Q2在第二轮完成C Q3的等待时间为10msD Q4在第一轮完成
假设设有4个作业 Q1, Q2, Q3, Q4 需要调度,这4个作业几乎同时到达,执行顺序按照 Q1, Q2, Q3, Q4,执行时间分别为 5ms, 8ms, 6ms, 2ms。使用轮转调度[1](Round Robin)算法,时间片[2]为4ms。以下哪些选项是正确的? A Q1的周转时间为9ms B Q2在第二轮完成 C Q3的等待时间为10ms D Q4在第一轮完成
题目解答
答案
我们来一步一步分析这道关于**轮转调度(Round Robin, RR)算法**的题目。
---
### **题目信息整理:**
- 有 4 个作业:Q1, Q2, Q3, Q4
- 到达时间:**几乎同时到达**,可视为 **同时在时间 0 到达**
- 执行时间:
- Q1: 5ms
- Q2: 8ms
- Q3: 6ms
- Q4: 2ms
- 调度算法:**轮转调度(Round Robin)**
- 时间片(Time Slice):**4ms**
- 执行顺序:按到达顺序进入就绪队列,即初始顺序为 Q1 → Q2 → Q3 → Q4
---
### **轮转调度的基本规则:**
- 每个进程最多运行一个时间片(4ms)
- 如果未完成,则被放到就绪队列尾部,等待下一轮
- 调度器按循环顺序分配 CPU 时间
---
### **我们来模拟调度过程:**
我们按时间轴逐步模拟。
#### **初始就绪队列:** [Q1, Q2, Q3, Q4]
| 时间区间 | 运行进程 | 剩余时间变化 | 说明 |
|----------|----------|----------------|------|
| 0 - 4ms | Q1 | 5 → 1ms | Q1运行4ms,还剩1ms,未完成,入队尾 |
| 4 - 8ms | Q2 | 8 → 4ms | Q2运行4ms,还剩4ms,入队尾 |
| 8 - 12ms | Q3 | 6 → 2ms | Q3运行4ms,还剩2ms,入队尾 |
| 12 - 14ms| Q4 | 2 → 0ms ✅ | Q4运行2ms,完成,不入队 |
| 14 - 15ms| Q1 | 1 → 0ms ✅ | Q1剩余1ms,运行完,完成 |
| 15 - 19ms| Q2 | 4 → 0ms ✅ | Q2运行4ms,完成 |
| 19 - 21ms| Q3 | 2 → 0ms ✅ | Q3运行2ms,完成 |
> 注意:Q4 只需要2ms,所以在12-14ms运行完。之后轮到队列中的下一个:Q1(剩余1ms),然后是Q2(剩余4ms),然后是Q3(剩余2ms)。
---
### **更新各作业的完成时间:**
- Q1:开始于 0ms,完成于 **15ms**
- Q2:开始于 4ms,完成于 **19ms**
- Q3:开始于 8ms,完成于 **21ms**
- Q4:开始于 12ms,完成于 **14ms**
---
### **计算相关指标:**
#### **1. 周转时间(Turnaround Time) = 完成时间 - 到达时间**
所有作业在 **时间 0** 到达。
- Q1 周转时间 = 15 - 0 = **15ms**
- Q2 周转时间 = 19 - 0 = **19ms**
- Q3 周转时间 = 21 - 0 = **21ms**
- Q4 周转时间 = 14 - 0 = **14ms**
#### **2. 等待时间(Waiting Time) = 周转时间 - 执行时间**
- Q1 等待时间 = 15 - 5 = **10ms**
- Q2 等待时间 = 19 - 8 = **11ms**
- Q3 等待时间 = 21 - 6 = **15ms**
- Q4 等待时间 = 14 - 2 = **12ms**
> 注意:等待时间是指在就绪队列中等待 CPU 的总时间。
---
### **逐项判断选项:**
#### **A. Q1的周转时间为9ms**
- 实际周转时间是 **15ms**
- ❌ **错误**
#### **B. Q2在第二轮完成**
我们来分析“轮次”的概念。
- **第一轮**:每个作业第一次运行
- Q1: 0-4ms
- Q2: 4-8ms
- Q3: 8-12ms
- Q4: 12-14ms
- 此时 Q2 只运行了4ms,还剩4ms,未完成
- **第二轮**:
- Q1: 14-15ms(完成)
- Q2: 15-19ms(运行剩余4ms,完成)
- 所以 Q2 是在**第二轮中运行并完成**
> 注意:Q2 第一次运行是在第一轮,第二次运行是在第二轮,并在第二轮完成。
✅ 所以 **Q2在第二轮完成** 是正确的。
✔️ **正确**
#### **C. Q3的等待时间为10ms**
- 实际等待时间 = 21 - 6 = **15ms**
- ❌ **错误**
#### **D. Q4在第一轮完成**
- Q4 在 12-14ms 运行,这是它第一次获得 CPU
- 运行2ms后完成,没有进入下一轮
- 所以它在**第一轮就完成了**
✔️ **正确**
---
### **最终判断:**
- A:❌ 错误
- B:✔️ 正确
- C:❌ 错误
- D:✔️ 正确
---
### ✅ 正确答案是:**B 和 D**
---
### **答:**
\boxed{\text{B 和 D}}