CPU调用进程的方式

进程的五种基本状态:

  1. 创建 2 .就绪 3.阻塞,4.执行 5.终止

CPU的调度决策会发生在如下四种情况下:

(1)运行-->等待

(2)运行-->就绪

(3)等待-->就绪

(4)运行-->终止

对于(1)和(4)两种情况都是运行的进程要么是资源条件不足,要么是运行结束了,这个时候需要选择新的就绪队列的进程转入运行状态,因此只有调度,没有选择;对于(2)和(3)两种情况下则是有进程进入就绪状态,这时可以选择。当调度只能发生在(1)和(4)两种情况下时,调度方案称为非抢占调度(新的就绪进程的出现不影响正在运行的进程),否则称为抢占调度(新的就绪进程可能抢占了当前运行进程的CPU资源)。

进程调度的任务有三个:

  1. 保存处理机现场信息
  2. 按某种算法选取进程,
  3. 把处理器分配给进程

进程调度的机制:

为了实现进程调度,在进程调度的机制中,应具有以下三个基本部分:

  1. 排队器: 为了提高,进程的调度效率,应该事先将系统中的所有就绪进程按照一定的策略排成一个或多个队列.
  2. 分配器: 分配器是依据进程调度程序,所选定的进程,将其从就绪队列中取出,然后进行从分配器到新选出进程间的上下文切换,将处理机分配给新选出的进程.
  3. 上下文切换器: 在对处理机进行切换时,会发生,两对上下文切换操作,

为了比较不同的调度算法,产生了许多的调度准则,如下:

CPU使用率:需要使CPU尽量忙

吞吐量:一个时间单元内所完成进程的数量

周转时间:从进程提交到进程完成的时间段

等待时间:在就绪队列等待所花费时间之和

响应时间:从提交请求到产生第一相应的时间

良好的调度算法都是使CPU使用率和吞吐量最大化,而使周转时间、等待时间和响应时间最小化.

常见调度算法:

  1. 轮转调度算法:

在轮转法中,系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,,并设置每隔一定时间间隔产生一次中断,激活系统中进程调度程序,完成一次调度,将cpu分配给队首进程执行,当时间片消耗完或进程结束,在将cpu分配给新的队首进程,

        2.优先级调度算法:

每个进程都有一个优先级相关联,具有最高优先级的进程会被分配到CPU,具有相同优先级的进程根据FCFS顺序调度。实际上短作业优先就是优先级调度算法的一个特例。优先级调度算法的一个主要问题是导致低优先级的进程产生无穷阻塞或饥饿(可以运行但是缺乏CPU),其解决问题之一就是老化,即以逐渐增加在系统中等待很长时间的进程的优先级。

        3.多级队列:

将就绪队列中的进程根据进程的属性不同而永久分配到多个独立的队列中,每个队列都有自己的调度算法。同时队列中也有调度,通常采用固定优先级抢占调度。

        4.多级反馈队列调度

跟多级队列调度相似,最大的不同是允许进程在队列之间移动。主要思想是根据不同CPU区间的特点以区分进程,如果进程使用过多CPU时间,那么它会被转移到更低优先级队列。

多级反馈队列调度是最通用的CPU调度算法但是因为要设置很多调度参数,因此也是最复杂的算法。

        5.最短作业有限调度

将每个进程与下一个CPU区间段相关联,当CPU空闲时,他回赋给具有最短CPU区间的进程。如果两个进程具有相同CPU区间长度,可以使用FCFS来调度。这里的CPU区间长度是进程的下一个CPU区间长度,而不是进程的CPU区间总长度。此算法可证明是最佳的,其难点在于如何知道进程的下一个CPU区间的长度。近似的情况下只能通过预测来做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴爃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值