【操作系统笔记6】CPU调度

版权声明:QQ: 1063385677 Copyright ©2019 CielleeX 本文地址: https://blog.csdn.net/Ciellee/article/details/89680808

cpu调度

上下文切换

a. 切换CPU的当前任务,从一个进程/线程切换到另一个
b. 保存当前任务/线程 在 PCB/TCB 中的执行上下文(CPU 状态)
c. 读取下一个进程/线程 的上下文

CPU调度

从就绪队列挑选一个进程/线程的内核函数 作为CPU 要运行的下一个进程/线程。


CPU使用率: CPU 处于忙状态所占用时间的百分比
CPU 吞吐量: 在单位时间内完成的进程数量
周转时间: 一个进程从初始化到结束,包括所有等待时间所花费的时间
等待时间: 进程在就绪队列中的总时间
响应时间:从一个请求被提交到第一次相应所花费的总时间


CPU如何更快:
减少响应时间、
减少平均响应时间的波动、
增加吞吐量(减少开销,提高资源利用率)、
减少进程等待时间、
低延迟调度增加了交互式表现、
但是操作系统需要保证吞吐量不受影响、
吞吐量是操作系统的计算代宽、
响应时间是操作系统的计算延迟。


公平的定义:
保证每个进程占用相同的CPU时间,保证每个进程的等待时间相同,
公平通常会增加平均响应时间。



cpu调度算法


1. 常用调度算法:

(1) FCFS (First Come, First Served) -------- 先来先服务
如果进程在执行中阻塞,队列中的下一个会得到CPU
平均等待时间波动较大


(2) SPN( SJF ) SRT ------ 短进程优先(短作业优先)短剩余时间优先
Shortest Process Next( Shortest Job First ) Shortest Remaining Time

按照预测的完成时间来将任务入队

不可抢占:Shortest Process Next , 短进程优先
可抢占的: 又叫 Shortest remaining Time (SRT) ,最短剩余时间优先

缺点:
连续的短任流会使长时间的任务饥饿
短任务可用时的任何长任务的CPU时间都会增加平均待时间

(3) HRRN ----- 最高响比优先 (Hightest Response Ration Next)
在SPN调度算法的基础上多考虑了等待时间,防止任务无限期的等待
R = ( w(等待时间) + s(执行时间) ) / s(执行时间)

(4) Round Robin -------轮循 (使用时间切片和抢占来轮流执行任务)
缺点是比较多的 上下文切换,这个是额外的开销
目标:
设置一个合适的时间量子
经验规则: 维持上下文切换开销处于1% 或 0.1%以内

(5) 多级反馈 ------ Multilevel Feedback Queues (优先级队列中的轮循)
a. 就绪队列被划分为独立的队列
b. 每个队列拥有自已的调度策略
c. 调度必须在队列间进行
(1) 固定优先级(先处理前台,后处理后台,可能导致饥饿)
(2) 时间切片(每个队列都得到一个确定的能够调度其进程的CPU总时间, 例如 80%给使用RR的前台,20%给使用FCFS的后台)


多级反馈: 一个进程在不同的队列中移动,根据实际情况来动态调整优先级(CPU 密集型任务优先级下降速度很快,I/0密集型任务停留在高优先级)。

(6) 公平共享调度 ------- Fair Share Scheduling
FSS 控制用户对系统资源的访问
a. 一些用户比其他用户组更加重要
b. 保证不重要的组无法垄断资源
c. 未使用的资源按照每个组所分配的资源的比例来分配
d. 没有达到资源使用率的目标的组获得更高的优先级


2. 实时调度算法: 实时系统(及时性、确定性和可预测性)

依赖于其时间和功能两方面的一种操作系统

硬/强实时系统: 需要在保证的时间内完成重要的任务,必须完成 (存在最后期限,否则会发生灾难性的后果)
软/弱实时系统: 要求重要的进程的优先级更高,尽重完成,并非必须完成(尽量去满足)

Rate Monotonic 速率单调度
静态优先级,优先级在执行前已经就确定好了,执行周期越短优先级越高

EDF (Earliest Deadline First) 最早期限调度
动态优先级调 度,Deadline越早越先级越高,执行deadline越早的任务


3. 多处理器的CPU 调度: 负载共享


4. 优先级反转

低优先级任务影
优先级反转的持续时间取决于其他不相关任务的不可预测的行为

优先级反转现象:
优先级低的任务在访问临界资源时 被高优先级任务抢占,使得无法及时释放,导致更高优先级的任务无法访问资源。

解决方法 ------ 优先级反转:
优先级低的任务在访问 临界资源时 临时将优先级提升,使得

优级天花板:
资源的优先级 和 ”所有可以锁定该资源的任务中的优先级最高的那个任务“一样,执行时短暂的提升优先级
除非优先级高的那个任务高于系统中所有被锁定的资源的优先级上限,否则任务尝试执行临界区时候会被阻塞。

猜你喜欢

转载自blog.csdn.net/Ciellee/article/details/89680808