📅  最后修改于: 2023-12-03 15:05:21.382000             🧑  作者: Mango
CPU调度算法是操作系统中非常重要的一部分,其作用是决定哪个进程可以使用CPU。SRJF和LRJF都属于基于时间片算法的非抢占式调度算法。
SRJF,即Shortest Remaining Job First,是一种可实现的非抢占式调度算法。它将系统中所有未完成的进程按照剩余执行时间进行排序,优先选择剩余时间最短的进程来运行。如果当前进程的剩余时间比新进入的进程短,就将当前进程调度出去,将CPU分配给新进入的进程。
示例:
| 进程 | 到达时间 | 服务时间 | | ---- | -------- | -------- | | P1 | 0 | 3 | | P2 | 1 | 4 | | P3 | 2 | 1 |
假设在时刻0,P1进程进入系统。因为此时没有其他进程需要运行,CPU立即分配给P1。在时刻3,P1进程完成服务。此时,P2和P3已经到达系统,但是由于P3的服务时间最短,所以CPU会立即分配给P3。在时刻4,P3进程完成服务。此时,只剩下P2进程未完成,CPU会分配给P2。在时刻8,P2进程完成服务。整个进程的服务顺序为P1、P3、P2。
LRJF,即Longest Remaining Job First,也是一种可实现的非抢占式调度算法。它与SRJF算法恰好相反:每次选择剩余时间最长的进程来运行。如果当前进程的剩余时间比新进入的进程长,就将当前进程调度出去,将CPU分配给新进入的进程。
示例:
| 进程 | 到达时间 | 服务时间 | | ---- | -------- | -------- | | P1 | 0 | 3 | | P2 | 1 | 4 | | P3 | 2 | 1 |
假设在时刻0,P1进程进入系统。因为此时没有其他进程需要运行,CPU立即分配给P1。在时刻3,P1进程完成服务。此时,P2和P3已经到达系统,但是由于P2的服务时间最长,所以CPU会立即分配给P2。在时刻7,P2进程完成服务。此时,只剩下P3进程未完成,CPU会分配给P3。在时刻8,P3进程完成服务。整个进程的服务顺序为P1、P2、P3。
SRJF和LRJF虽然都是非抢占式调度算法,但是它们有着明显的差异。选择哪种算法取决于具体情况,需要综合考虑进程的服务时间、到达时间等因素,才能得到更好的系统性能。