OS-李治军-L14-CPU调度策略
CPU调度策略
调度需要折中考虑一些问题。
阻塞了,现在2、3谁上?

最直观的想法:
FIFO? 谁先来谁上
Priority? 谁重要谁上
要让进程满意,就是要让用户满意,就是要尽快结束任务,用户操作响应的时间短,系统内耗时间少。
但发生了矛盾,例如:
吞吐量和响应时间是一对矛盾量,响应时间短-》切换次数多-》系统内耗大(进出栈啦,切换页面啦等等)。
前台任务关注响应时间,后台任务关注周转时间,一个进程会同时有前后台任务。
IO约束型任务主要把时间花在IO读写上,而CPU约束型任务是一直在使用CPU进行计算,其有各自的特点,一般IO约束任务优先级更高一些,大部分是前台任务,是用户所关心的。另外,启动后就可以切换到CPU约束型上去,实现并行计算。
下面介绍三种基本算法:
一、SJF短作业优先
因为作业数量减小最快,那么切换所花的总时间是最小的。

二、但是现在响应时间怎么办呢?
RR:按照时间片来轮转调度
时间片大,则响应时间大;反之,则响应时间短。
三、响应时间和周转时间同时存在,怎么办?
word关系响应时间,gcc关心周转时间,同时有两个任务,how?
简单思路:分两个队列,并给每个队列设置优先级,这种称为优先级调度方法。

但是,这样可能后台任务一直无法被执行,一般前台任务多。
而后台任务若优先级高了,cpu可能就一直交不出来了,例如编译一个东西还是要很久。
所以,为了保证所有东西都有执行,所有任务应该都有时间片。
最好要能实现自适应,并且要尽可能简单,花时间少。

浙公网安备 33010602011771号