优先级调度算法实现_03.进程调度

e013c0c06f5bb763517e7ea18d4c1e16.png

对于单CPU的操作系统来说,仅仅只能执行一个进程。

我们先来讨论单CPU的进程调度,通俗来说就是选取进程来运行。

进程调度有抢占式和非抢占式调度,抢占式的是指进程在进程执行过程中如果有高优先级出现,会被抢占执行,而非抢占式调度可以一直执行下去。

首先OS要考虑在就绪态中选取哪个进程来运行,所以就有了几种方式:

先到先服务(First Come First Serve --FCFS):先进入队列的先提供服务,比如批处理操作系统(卡片穿孔编程,形成队列输入到计算机中)

最短作业优先(Shortest Job First):在就绪队列中,选取作业时间最少的来进行作业。

最短剩余时间优先(Shortest Remaining Time First):在此时此刻,哪一个进程还剩余的作业时间最少,那么优先执行该进程

时间片轮转法:根据时钟脉冲,根据一定的时间片轮流执行每个进程。

优先级调度法:实际上这不是一个实际上的调度算法,只是一种实现。根据优先级的指标进行评测,将相同优先的级放到同一个优先级队列,优先 执行高优先级队列。其中包括抢占式优先级调度法和非抢占式优先级调度法,抢占式优先级调度法在出现更高优先级时,当前执行进程会被抢占,然后高优先级进程开始执行;非抢占式优先级调度法,在执行当前进程时,会一直执行下去,不会被抢占。同样,优先级调度也可以结合时间片轮转法,在优先级队列中轮流执行一定的时间。

优先级的指标评测: (考研:需要知道它们的意义和求解算法)

01.CPU利用率 (utilization)

02.吞吐率 :指的是该时间片内进程的执行数量

03.周转时间 :一个进程从创建到结束所经历的时间。

04.响应时间 :一个进程等待一个事件,这个事件从发出请求到得到响应的总时间间隔 。

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

优先权的设计方法

  • 静态优先权:进程创建时确定其优先权,整个生命周期中不改变。这种方式创建简单,但是不能动态的反映进程特性的变化。
    • 确定依据:
      • 进程类型;
      • 进程对资源的需求;
      • 进程的估计运行时间
  • 动态优先权:进程创建时赋一个优先权初值,运行期间动态调整其权值。具有可防止一个进程长期垄断或长期等待 CPU 的优点。
    • 动态优先权改变原则:
      • 进程使用CPU超过一定数值时,降低优先级
      • 进程I/O操作后,增加优先级
      • 进程等待时间超过一定数值时,提高优先级

我们不由得产生一个疑问,也就是以上指标我们一开始是不知道进程执行的情况的。所以我们得进行预测,以过往的经验来估计未来的预期效果。

这也就是下面提到的多级反馈队列调度法。这个调度算法在现在操作系统中经常采用。

多级反馈队列调度法:这个调度算法是基于多级调度算法(优先级调度),首先安排几个优先级队列,高优先级队列(设定8个时间片:意味着在这个队列中的进程每次只能执行8个时间片就会释放CPU控制权)、低优先级队列(设定16个时间片)、最低优先级队列(采用先到先服务队列,不设定时间片)。那么好,一开始我们先把所有进程放到高优先队列(8个时间片)中。如果进程一开始便执行消耗了8个时间片,我们就把它放到下一级队列中;没有消耗完该时间片我们就把它保留在该优先级队列中,每一级队列都是这样运行并且动态的调整的。在低优先级队列中,如果这个进某一次运行表现很好,消耗很少的时间片或者进行IO操作(IO操作占用CPU时间很少),那么我们就根据它的表现情况把它放到上层优先级队列中。就是这样多次运行并且动态的反馈调整。

对于多CPU的调度,情况变得更加复杂,因为得考虑负载均衡,也就是说不能出现有的CPU很忙、有的CPU处于空闲状态的情况。

也同样是采用多级反馈队列调度,但情况变得更加复杂了。

多核CPU的进程调度

非对称多处理:

  让一个处理器处理所有调度决定、I/O处理以及其他系统活动,其他的处理器只执行用户代码。这种方法更简单,因为只有一个处理器访问系统数据结构,减轻了数据共享的需要。但是在实际应用过程中,用户可能会大量读取处理数据或者大量I/O发生,会发生一核有难,八核围观的尴尬。

对称多处理(SMP)

  每个处理器自我调度,调度通过每个处理器检查共同就绪队列并选择一个进程来执行。现在的操作系统一般都支持这种方式。

  由于CPU的调度,因此一个进程通常不会在处理器上一次性执行完,中间可能会让出CPU,对于对称多处理调度方法,则有可能进程从一个处理器迁移到另外一个处理器上执行,而进程相关的数据在原处理器的缓存中,这样会导致缓存无效和重建,其代价很高;因此绝大多数非对称系统都尽量使一个进程在同一个处理器上运行,这个被称为处理器亲和性(类似于缓存命中,非常普遍的计算机思想)。

  通过提供多个物理处理器,SMP系统允许同时运行几个线程。还有一种是提供多个逻辑处理器而不是物理处理器来实现,这种方法称为对称多线程(SMT)。也叫超线程技术。SMT实际上就是在一个物理处理器上生成多个逻辑处理器,向操作系统呈现一个多逻辑处理器的视图,同时每个逻辑处理器都有它自己的架构状态,包括通用的目的和机器状态寄存器。但是这种技术是需要硬件提供支持,而不是软件,硬件应该提供每个逻辑处理器的架构状态的表示和中断处理方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值