1. 调度算法
First Come First Service (FIFO)
- 如果进程在执行中阻塞,那么在队列中的下一个进程会得到 CPU
- 举例来说,如果现在有三个进程,p1, p2, p3,假设我们事先知道它们的执行时间是 12, 3, 3。按照 FIFO算法:
- 如果它们以 p1, p2, p3 的顺序到达,那么它们的执行顺序就是 p1, p2, p3,整个的平均周转时间 = (12 + (12 + 3) + (12 + 3 + 3)) / 3 = 15;
- 如果它们以 p2, p3, p1 的顺序到达,那么它们的执行顺序就是 p2, p3, p1,整个的平均周转时间 =(3 + (3 + 3) + (3 + 3 + 12)) / 3 = 9;
- 周转时间 = 等待时间+执行时间
- 优点:简单
- 缺点:平均等待时间波动较大;花费时间少的任务可能排在花费时间长的任务后面;
短任务优先
-
按照预测的完成时间将任务入队列
-
可以是抢占式和非抢占式:假设当前执行时间最短的进程正在执行的时候,来了一个执行时间更短的进程,那么就有两种处理方式:
- 当前执行的进程继续执行,进来的更短的进程排入就绪队列的最前面,也就是非抢占式
- 如果当前执行的进程的剩余时间大于新进的进程,那么当前进程将会从运行态进入就绪态,回到就绪队列相应的位置,新进的进程获得 CPU 执行。被称为 Shortest-Remaining-Time
-
连续的短任务流会使长任务饥饿
-
需要预知未来。就是需要知道进程的执行时间。
最高响应比优先
-
短任务优先只考虑的进程的执行时间而没有考虑进程的等待时间
-
综合考虑任务的执行时间和等待时间。
- 相应比:R = (WaitingTime + ServiceTime) / ServiceTime
- 选择相应比大的进程执行。等待时间越长,执行时间越短,对应的相应比就越大
-
还是需要预知进程的执行时间
-
缓解饥饿现象
Round Robin 轮循调度算法
- 每个进程执行一个特定的时间片
- 公平,但是平均等待时间较差
MLFQ 多级反馈队列
- 设置多个就绪队列,每个就绪队列设有一定的优先级,进程在不同的队列中根据实际执行情况移动
- CPU 密集性进程在每一个时间片后向低优先级调整 ;IO 密集性进程优先放入高优先级队列
Fair-share Scheduling 公平共享调度
- 公平是第一要素
2. 实时调度
实时定义
- 正确性依赖于时间和功能两方面的一种操作系统
性能指标
- 时间约束的及时性(deadline)
- 速度和平均性能相对不重要
强实时系统和弱实时系统
强实时系统:保证在规定时间内完成重要任务,必须完成
弱实时系统:尽量完成
本文详细介绍了操作系统中的调度算法,包括First Come First Serve (FIFO)、短任务优先、最高响应比优先、轮循(Round Robin)调度以及多级反馈队列(MLFQ)等。还探讨了实时调度的概念,强调了不同调度策略在时间和功能正确性上的重要性。

2460

被折叠的 条评论
为什么被折叠?



