上下文切换:
CPU调度:
什么时候调度?
状态转换时,与运行相关的状态转换!
内核运行调度程序的条件:
1.一个进程从运行态切换到等待状态
2.一个进程被终结
不可抢占:
早期操作系统的设计方案。
可以抢占:
抢占与不可抢占:包含用户级及内核级的
调度原则:
评价指标:
举例:响应时间/吞吐量
及时处理输入
最小响应时间,最大吞吐量
进程的执行时间是如何预判的?
1.FIFO
没有考虑抢占
2.最短任务优先
平均等待时间最小
打开一个程序,如何知道它什么时候结束?
预估:以执行历史来推断
轮询算法:
时间片的大小对整体等待时间的影响:不同时间片是不一样的
上下文切换比较多
多级队列
根据进程的执行特点,动态地调整进程在不同队列的情况
多级反馈队列
有的任务,随着其等待时间越来越长,其优先级越来越高
有的任务,其执行时间很长,其优先级越来越低
FSS:公平调度算法
调度算法的评价:
总结:
实时调度:
应用于实时系统:real time
确定性及可预测性是实时系统的两大特性
released:相当于进程的就绪态
多处理器调度与优先级反转:
考虑的问题:
1.选择放到哪一个CPU上去?
2.尽量要考虑到负载平衡
优先级反转问题:
低优先级任务影响高优先级任务的情况
T2阻隔T3,而T1又必须要等T3结束;
优先级T1>T2>T3;
升级低优先级进程
从一开始就知道天花板!