分为几点
-
处理机调度的概念、层次
-
进程调度的时机(主动被动)、方式(剥夺非剥夺)、切换与过程(广义狭义)
-
调度算法、调度算法的评价指标(CPU利用率、系统吞吐量、周转、等待、响应时间)
第一部分:处理机调度的概念和层次
调度:
就是我决定我做事情的顺序。
概念:
当有一堆任务要处理,但由于资源有限,这些事情没法同时处理时,就需要确定某种规则来决定处理这些任务的顺序,这就是 “调度” 研究的问题。在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。处理机调度,就是从就绪队列中按照一定地算法选择一个进程并将处理机分配给它运行,以实现进程地并发执行。
层次:
三层:高级、中级、低级
高级调度:
发生创建态和终止态:功能是对程序进行进程的初始化。
第二层:中级调度:
相当于一个人对你一天的事情做安排,你会将不重要的挪到最后面做。
第三层:低级调度
通过策略(算法)分配cpu
第二部分: 进程调度的时机(主动被动)、方式(剥夺非剥夺)、切换与过程(广义狭义)
时机:
主动:进程自己放弃
被动:被更紧急的进程挤下去了
方式:
剥夺:运行进程在运行时,被更紧急的进程挤下去
非剥夺:进程上来了就一定要干完才罢休。
切换:进程之间的调入调出。ps:切换很费时费资源
第三部分:调度算法、调度算法的评价指标(CPU利用率、系统吞吐量、周转、等待、响应时间)
调度算法的评价指标:
我觉得这一path可以和物理热学知识相类比。
cpu利用率和系统吞吐率、等待时间(应该叫他进程的等待时间)相应时间这些比较简单,自己理解
单个进程的周转时间就如同发热的总能量。有损耗也有被用的。但有个总量。
平均周转时间就是前面的全部加起来除以进程数
下面的是衡量算法的核心:
带权周转时间:类比为:热学的能量的利用率,当然这里的被除数和除数的主体不同。这里是总/利用的时间,
平均周转时间:就是全部周转时间加起来除以进程数
算法:![](https://img-blog.csdnimg.cn/direct/3e391427a2de47f8a7117d9aa6454544.png)
fcfs:先来先服务:
队列的思想。第一个到就第一个执行。
sjf/spf:短作业优先(会饥饿):
非抢占式:类比列表内最短的,然后就把TA一直执行结束(非抢占)
抢占式:类比列表内最短的,然后就把ta执行(不一定能执行完),有新的进程进来,比一下,选最短的运行
高响应比(hrrn):
是以带权周转时间为衡量的算法,带权周转时间越大,越先执行。
ps:核心点还是:计算带权周转时间。
时间片RR算法:
核心思想:将cpu处理的时间分割开来,平均分配给多个进程。
理解下面过程即可。
优先级算法:
为什么出现?
操作系统的需要处理多的应用场景。有一些是维持计算机的根本程序。就如同人的吃饭和睡觉。
这些如果一直无法被执行,可能电脑就蓝屏了(ps:举个例子)。
故需要排优先级。
核心:优先级越高越先执行。
区别在于存在可抢占式和不可抢占的。
不可抢占的就是上了cpu就要执行完
可抢占式的就是进程执行,有优先级更高的就先执行TA。
多级反馈队列调度算法:(老缝合怪算法)
结合了时间片RR算法、优先级算法、fcfs算法
多的是队列越大,时间片的大小越大
ps:注意点就是:需要从时间片最小的的开始,执行完全部才能到下一级的