今天我们来分享两道题目哈, 学校弄得题目.
T1: 静态优先级, 抢占式(1为高优先级)
图解:
以下是静态优先级抢占式调度的解题过程和结果:
解题思路:
- 优先级规则: 数值越小优先级越高。新进程到达时,若其优先级高于当前运行进程,则抢占CPU。
- 进程调度过程:
- 时间0: A开始运行。
- 时间1: B到达并抢占A,B开始运行。
- 时间4: B完成,E到达并开始运行(优先级最高)。
- 时间8: E完成,C开始运行(剩余进程中优先级最高)。
- 时间13: C完成,A继续运行剩余时间。
- 时间16: A完成,D开始运行。
- 时间18: D完成。
完整表格:
进程名 | 到达时间 | 服务时间 | 静态优先级 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|---|
A | 0 | 4 | 4 | 0 | 16 | 16 | 4.0 |
B | 1 | 3 | 2 | 1 | 4 | 3 | 1.0 |
C | 2 | 5 | 3 | 8 | 13 | 11 | 2.2 |
D | 3 | 2 | 5 | 16 | 18 | 15 | 7.5 |
E | 4 | 4 | 1 | 4 | 8 | 4 | 1.0 |
平均 | 9.8 | 3.14 |
结果说明:
- 周转时间 = 完成时间 - 到达时间
- 带权周转时间 = 周转时间 / 服务时间
- 平均值 计算后保留两位小数。
此调度过程确保了高优先级进程(如E和B)优先执行,低优先级进程(如D)最后执行。
T2. FCFS和SJF算法分析进程的调度过程
图解:
FCFS:
SJP:
以下是使用FCFS和SJF算法的调度过程分析及结果:
FCFS(先来先服务)算法结果
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
A | 8 | 2 | 8 | 10.0 | 2.0 | 1.0 |
B | 8.5 | 0.5 | 10.0 | 10.5 | 2.0 | 4.0 |
C | 9 | 0.1 | 10.5 | 10.6 | 1.6 | 16.0 |
D | 9.5 | 0.2 | 10.6 | 10.8 | 1.3 | 6.5 |
平均 | 1.73 | 6.88 |
计算说明:
- 开始时间:按到达顺序依次执行,前一个进程完成后开始下一个。
- 周转时间 = 完成时间 - 到达时间
- 带权周转时间 = 周转时间 / 服务时间
- 平均值保留两位小数。
SJF(短作业优先,非抢占式)算法结果
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
A | 8 | 2 | 8 | 10.0 | 2.0 | 1.0 |
B | 8.5 | 0.5 | 10.3 | 10.8 | 2.3 | 4.6 |
C | 9 | 0.1 | 10.0 | 10.1 | 1.1 | 11.0 |
D | 9.5 | 0.2 | 10.1 | 10.3 | 0.8 | 4.0 |
平均 | 1.55 | 5.15 |
计算说明:
- 调度顺序:A完成后,选择就绪队列中服务时间最短的进程(C→D→B)。
- 开始时间:A执行到10.0后,依次执行C、D、B。
- 周转时间和带权周转时间计算同上。
- 平均值保留两位小数。
结果对比
- FCFS的平均周转时间为 1.73,平均带权周转时间为 6.88。
- SJF的平均周转时间为 1.55,平均带权周转时间为 5.15。
- 结论:SJF算法通过优先执行短作业,显著降低了平均周转时间和带权周转时间,体现了其高效性。