处理器调度

一、处理器调度算法目标

1.1衡量调度算法的指标

  • CPU使用率:应使CPU尽可能地忙碌。好的调度策略应该尽可能地提高CPU的使用率
  • 吞吐量:是一个时间单元内进程完成的数量。对于长进程,吞吐量可能为每小时一个进程;对于短进程,吞吐量可能为每秒十个进程。
  • 周转时间:从进程提交到进程完成的时间为周转时间。周转时间为所有时间段之和,包括等待进入内存,在就绪队列中等待,在CPU上执行和I/O执行。
  • 等待时间:等待时间为在就绪队列中所有进程等待所花时间之和。
  • 响应时间:对于交互系统,周转时间不是最佳准则,响应时间更为合理。响应时间是指从用户提交一个请求开始,直到系统首次产生响应为止的这段时间。

1.2调度策略的类别

  • 非抢占式调度:一旦进程处于运行状态,它不断运行,直到运行结束或运行至阻塞时进行调度,即,当运行进程主动释放CPU时,才执行调度程序。
  • 抢占式调度:当前正在运行的程序可能被系统中断,转为就绪态。抢占的发生可能是一个高优先级的进程到达时,或在一个中断发生后,一个阻塞进程变为就绪时,或者基于周期性时间中断(时间片)。

二、分级调度

一个进程从创建大执行需要经过以下三级调度:
长程调度,中程调度和短程调度

三、常用的调度算法

常用调度算法

四、多处理器调度

  • 对于都处理器,CPU调度的一种方法是让一个处理器(主处理器)处理所有调度决定、I/O处理以及其他系统活动,其他处理器只执行用户代码。这个方法称为非对称处理器(asymmetric multiprocessing),这种方法只有一个处理器访问系统数据结构,减少数据共享的需要
  • 另一种方法是使用对称多处理(sysmmetric multiprocessing SMP),即每个处理器自我调度。所有进程可能出在一个共同的就绪队列,也可能每个处理器都有自己私有的就绪队列,无论怎样,每个处理器调度程序都检查共同的就绪队列,以便选择执行一个进程。我们以下讨论主要针对SMP系统

处理器亲和性
当一个进程运行在一个特定的处理器上时会缓存该进程的一些数据和上下文,如果进程被迁移到另外一个处理器地上,那么上一个处理器缓存的数据设为无效,第二个处理器应该刷新。由于这些操作代价很高,所以大多数SMP系统试图避免进程从一个处理器迁移到另外一个处理器。这叫做处理器亲和性。
软亲和性:当一个操作系统试图保持进程运行在同一处理器上,但是这个进程也可以迁移到其他进程上,这种亲和性叫做软亲和性。
硬亲和性:有的操作系统提供系统调用来支持硬亲和性,从而使某个进程运行在某个处理器子集中。

负载均衡
对于SMP系统,重要的是保持所有处理器的负载平衡,以便充分利用处理器的优点。

负载均衡通常有两种方法
推迁移:一个特定的任务周期性地检查每个处理器的负载,如果发现不平衡,那么通过将进程从超载处理器推到空闲或者不太忙的处理器中,从而平均分配负载。
拉迁移:当空闲处理器从一个忙的处理器上拉一个等待任务时,发生拉迁移。例如linux调度程序实现了这两种技术

值得注意的是:负载均衡往往会抵消处理器亲和性的好处、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值