调度算法(笔记)

自己的小小笔记总结

调度算法:根据系统的分配策略所规定的资源分配算法

①为什么会有调度算法?调度算法有什么用?根据不同的系统和系统目标,采用不同的调度算法,能更加高效地提高效率。

②有哪些调度算法?

1.先来先服务调度算法(FCFS)

2.短作业(进程)优先调度算法(SJF)

3.高优先权调度算法(FPF)

4.基于时间片的轮转调度算法(RR)

1.先来先服务调度算法(最简单的调度算法)

原理:

可用于作业调度和进程调度。谁先来就先给谁服务

作业调度时:从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为他们分配资源,创建进程,然后放入就绪队列。

进程调度时:从就绪队列中选择一个最先进入该队列的进程,为它分配处理机。

优点:利于长作业,CPU繁忙型进程

缺点:不利于短作业,I/O繁忙型进程

2.短作业(进程)优先调度算法

原理

对短作业或短进程优先调度(偏心短作业/短进程)

作业调度时:从后备作业队列中选择一个或多个估计运行时间最短的作业,将它们调入内存,为他们分配资源,创建进程,然后放入就绪队列。

进程调度时:从就绪队列中选择一个估计运行时间最短的进程,为它分配处理机。

优点:利于短作业(进程)

缺点:不利于长作业,没考虑作业的紧迫程度,实际应用中该算法不一定能真正做到短作业优先调度。

3.高优先权调度算法(FPF)

原理:

对短作业或短进程优先调度(偏心短作业/短进程)

作业调度时:从后备作业队列中选择若干个优先权最高的作业,将它们调入内存,为他们分配资源,创建进程,然后放入就绪队列。

进程调度时:从就绪队列中选择一个优先权最高的进程,为它分配处理机。

算法分类

非抢占式优先权算法(要从一而终运行下去,除非自身放弃处理机)

抢占式优先权算法(处理机可以被抢)

优先权分类:

静态优先权:在创建进程时确定,在整个运行期间保持不变。

                       那怎么确定这个静态优先权呢?

       有三依据: ①进程类型。系统进程的优先权比一般用户进程的要高

                                          ②进程对资源的需求。

                                          ③用户要求

动态优先权:在创建进程时确定,但可以在运行期间改变

优点:利于短作业(进程)

缺点:不利于长作业,没考虑作业的紧迫程度,实际应用中该算法不一定能真正做到短作业优先调度。

高响应比优先调度算法

这里要记住的是一个公式:

       优先权(响应比)=(等待时间+要求服务时间)/要求服务时间

优点:照顾短作业,考虑作业的先后到达次序,兼顾长作业

缺点:增加系统开销(因为每次调度都要进行响应比计算)

4.基于时间片的轮转调度算法

(1)时间片轮转法

原理:在每次调度,把CPU分配给队首进程(按先来先服务排序的队列),让其执行一个时间片。当时间片用完,该进程会被停止,然后把它送到就绪队列的末尾,再把处理机分配给新的队首进程。

(2)多级反馈队列调度算法

原理:

(1)设置多个就绪队列,为各个队列依次递减赋予不同优先权,且第一队列优先权最高, 最后队列优先权最低。优先权越高,时间片越小。(在每个队列中都遵循FCFS)

(2)当一个新进程进入内存时,首先把它放进第一队列末尾,按FCFS原则静静地等待。轮到自己上场的时候,如果在规定的时间片里没有完成自己的任务,就会被安置到第二队列的末尾,同样,如果还没完成,就会到第三队列末尾,这样依次被安排下去。。。

(3)只有当第一队列空闲时,调度程序才会找第二队列的进程去运行。同理,只有当第1~(i-1)队列空闲时,才会调度第i队列的进程。

优点:拥有较好的性能,能满足终端型作业用户,短批处理作业用户,长批处理作业用户的需要。

调度算法中涉及的计算:

     等待时间=开始服务时间-到达时间

     优先权(响应比)=(等待时间+要求服务时间)/要求服务时间

猜你喜欢

转载自www.cnblogs.com/bxtfdxg/p/12694791.html
今日推荐