进程调度算法

目录

先来先服务调度算法

最短作业优先调度算法

高响应比优先调度算法

时间片轮转调度算法

最高优先级调度算法

多级反馈队列调度算法


先来先服务调度算法

非抢占式的先来先服务算法

就像队列一样,先进先出,这似乎很公平

但是当一个长作业先运行了,那么后面的短作业等待的时间就会很长,不利于短作业。

先来先服务: 对长作业有利,适用于 CPU 繁忙型作业的系统,而不适用于 I/O 繁忙型作业的系统。

CPU繁忙型作业:是指那些需要大量的CPU时间进行计算,而很少请求I/O操作的作业。

而先来先服务,对长作业有利,也就是利于大量CPU时间进行计算

I/O繁忙型作业:是指那些在执行过程中需要频繁进行I/O操作的作业,那么进行IO的话,

肯定等待I/O操作完成,那么CPU只能干等,白白浪费CPU的资源

最短作业优先调度算法

优先选择运行时间最短的进程来运行,这有助于提高系统的吞吐量。

这显然对长作业不利,那么会造成什么问题呢?

比如,一个长作业在就绪队列等待运行,而这个就绪队列加入了非常多的短作业,

那么就会使得长作业不断的往后推,周转时间变长,致使长作业长期不会被运行。

高响应比优先调度算法

每次进行进程调度时,先计算  响应比优先级,然后把 响应比优先级 最高的进程投入运行

那么 是如何计算  响应比优先级:

对短作业:要求服务时间小, 那么值肯定更大

对长作业:要求服务时间大,那么值肯定就越小,但是随着  等待时间增加优先级会越来越高

但是 我们怎么知道  要求服务时间呢? 所以这个算法太理想了,难以实际应用

时间片轮转调度算法

每个进程都被分配一个时间片,在规定的时间内完成,没有完成就重新插入到 就绪队列 末尾

但是又引出两个问题:

一,如果时间片设得太短会导致过多的进程上下文切换,降低了 CPU 效率;

二, 如果设得太长又可能引起对短作业进程的响应时间变长。

通常时间片设为 20ms~50ms 通常是一个比较合理的折中值。

最高优先级调度算法

从就绪队列中选择最高优先级的进程进行运行,这称为最高优先级调度算法。

两种优先级:

静态优先级:创建进程时候,就已经确定了优先级了,然后整个运行时间优先级都不会变化;

动态优先级:根据进程的动态变化调整优先级,比如 如果进程运行时间增加,则降低其优先级,如果进程等待时间增加,则升高其优先级

两种处理优先级高的方法: 

非抢占式:当就绪队列中出现优先级高的进程,运行完当前进程,再选择优先级高的进程。(谦让)

抢占式:当就绪队列中出现优先级高的进程,当前进程挂起,调度优先级高的进程运行。(霸道)

多级反馈队列调度算法

多级   表示有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短。
反馈   表示如果有新的进程加入优先级高的队列时,立刻停止当前正在运行的进程,转而去运行优先级高的队列;

短作业:可能可以在第一级队列很快被处理完,因为只需要很小的时间片

长作业:如果在第一级队列处理不完,可以移入下次队列等待被执行

虽然等待的时间变长了,但是运行时间也会更长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值