1 CPU调度程序
基本概念
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/ff9cd67540d985af.png)
CPU程序程序类型
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/0a4943d85de1ece5.png)
CPU调度程序
无论何时,只要CPU空闲了,操作系统必须选择一个在准备队列中的进程执行。被选择的进程被CPU调度程序执行。
抢占调度
- 非抢占调度
- 一旦某个进程得到CPU,就会一直占用到终止或者等待状态。
- 抢占调度
2 CPU调度准则
调度算法性能的衡量
- CPU利用率:CPU的忙碌程度
- 响应时间:从提交任务到第一次响应的时间
- 等待时间:进程累积在就绪队列中等待的时间
- 周转时间:从提交到完成的时间
- 呑吐率:每个时钟单位处理的任务数
- 公平性:以合理的方式让各个进程共享CPU
调度性能指标
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/918a71f830919969.png)
先来先服务(FCFS)
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/e856fccc05b1da1f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1cdc208b1b474e9283d8c5dc158302c9.png)
时间片轮转(ROUND ROBIN)
- 每个进程都可以得到相同的CPU时间(CPU时间片, time slice),当时间片到达,进程将被剥夺CPU并加入就绪队列的尾部 。
- 抢占式调度算法
- n个就绪队列中的进程和时间片q ->
- 每个进程获得1/n的CPU时间,大约是q个时间单位
- 没有进程等待时间会超过 (n-1)q
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/36682dee98bda529.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a189a0781514fefb9a52588c5264c42.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e94f9456637243e9bf4261db00906b37.png)
最短作业优先(SJF)
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/6bcfad942281e6c0.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e26ccb039b6b4692aa36ceb8165d1438.png)
优先级调度(PRIORITY)
- 优先级通常为固定区间的数字,如[0, 10]:
- 数字大小与优先级高低的关系在不同系统中实现不一样,以
- Linux为例,0为最高优先级。
- 调度策略:下一次调度总是选择优先级最高的进程。
- SJF是优先级调度的一个特例。
- 优先级调度可以是抢占式,也可以是非抢占式。
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/704b2a4954b74677.png)
优先级的定义
- 静态优先级
- 动态优先级(退化Aging)
- 根据进程占用CPU时间:当进程占有CPU时间愈长,则慢慢降低它的优先级;
- 根据进程等待CPU时间:当进程在就绪队列中等待时间愈长,则慢慢提升它的优先级。
4 Linux线程调度
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/d7004b64aaf4864e.png)
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/9950577cc663ebea.png)
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/694231a9b1627f3a.png)