CPU调度

CPU调度

CPU调度是多道程序操作系统的基础,通过在进程之间切换CPU,操作系统可以避免因为等待(如IO请求)而浪费CPU资源

对于单道程序处理系统,只有当某个程序执行完成后,才能进行下一个程序,这样会极大的浪费CPU资源。而多道程序的目的就是在任何时候都有程序执行,这样CPU就不会空闲,增大的吞吐率。

CPU-IO调度周期

进程的执行从CPU开始,在这之后便是IO请求,接着就是另一个CPU区间,如果调度周期太长,会导致资源浪费,如果时间过短,会导致进程没能完全执行。

CPU调度程序

调度程序分为抢占调度和非抢占调度,抢占调度的含义是某个程序在CPU调度周期内还没能执行完毕就让出CPU的占用权,将其交给另一个进程执行。Win95之后的系统都采用了抢占调度。当然抢占调度对访问共享数据是有影响的,比如一个程序正在修改数据,被强行退出,会导致数据的不一致。

调度准则

CPU使用率

吞吐率:执行的进程个数

周转时间:一个进程从开始提交到最后返回结果所花费的全部时间。

等待时间:进程在就绪队列中等待的时间。

响应时间:进程从提交到响应所花费的时间。

调度算法

先到先服务调度(FCFS)

先请求的进程先分配CPU

最短作业优先调度(SJF)

将每一个进程与下一个CPU区间关联,按照每个进程的CPU区间的长度进行排序,按照最短进程的顺序依次分配,按照这种调度算法,平均等待时间是最短的。

困难在于很难知道下一个进程的CPU区间,所以有人提出了利用当前的CPU区间对下一个区间进行预测

指的是低n+1个CPU区间,存储了过去历史,指的是最近的信息,参数历史预测的相对加权。

优先级抢占调度

对每个进程进行优先级设定,具有最高优先级的进程先分配,优先级调度可以是抢占的也可以是不抢占的,如果刚到达的进程优先级低于正在执行的,就不抢占,如果大于就进行抢占。

优先级抢占调度导致的一个主要问题是无穷阻塞,如果某个进程优先级过于低,就会一直处于等待状态无法执行。

轮状法调度

定义一个较小的时间片,如果某个进程CPU区间小鱼时间片,执行完成后处理下一个进程,如果大于就会终端,并切换到下一个进程,并将该进程放到就绪队列尾部。

多级队列调度

将就绪队里分成多个独立队列,根据进程的树形,进程优先级,进程类型。每个队列有自己的调度算法,前台队列可能采用轮转法,后台采用FCFS算法调度。每个队列比更低的队列拥有绝对的优先级,只有当更高优先级的队列完全执行完毕后,才能执行下一个队列。

多级反馈队列调度

与多级队列调度相比,这种调度方法允许进程在队列之间移动,主要思想是根据不同的CPU区间的特点以区分进程,如果该进程占用过多CPU时间,就会被转移到低优先级队列,低优先级队列中等待时间过长的进程会被转移到高优先级队列中,防止了老化的产生。

 

现如今的系统多采用各种调度算法融合的集成性调度算法,如多级反馈队列调度。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值