操作系统进程调度算法总结

进程类型划分

根据进程占用CPU 时间,可以将其划分为计算密集型和 I/O 密集型。

  • 计算密集型 (compute-bound): 具有较长的CPU运算时间,具有较少的 I/O 操作。
  • I/O 密集型 (I/O-bound): 在 I/O 请求之间需要较少的CPU运算时间。

调度算法分类

根据如何处理时钟中断,可以把调度算法分为非抢占式调度算法和抢占式调度算法。

  • 非抢占式调度算法 (non-preemptive scheduling algorithm): 这种算法挑选一个进程运行,并一直运行到阻塞或自愿退出。
  • 抢占式调度算法 (preemptive scheduling algorithm):每个进程可运行的最大时间是固定的,如果运行完所有时间,进程将会被挂起,调度器进而挑选另外一个进程运行。

调度算法适用的目标场景

1. 批处理系统

在批处理系统中,没有用户在终端不耐烦地等结果。因此,非抢占式调度算法和具有较长时间间隔的抢占式算法都是适用的。这种方法减少了进程切换,因而增强了系统性能。

批处理一般注重:

  • 吞吐量:最大化每小时作业数
  • 周转时间:最小化从提交到完成的时间间隔
  • CPU 利用率:保持 CPU 始终忙碌

先到先服务 (first-come first-served)

最简单的调度算法,按照请求 CPU 的顺序,排成一列顺序的使用 CPU。属于非抢占式算法。

最短作业优先

优先处理具有最短运行时间的进程。属于非抢占式算法。最短作业优先算法具有最短的平均等待时间,但是只有在所有作业同时启动才成立。

最短剩余时间优先

是最短作业优先的抢占式版本。使用这种算法,调度器总是挑选剩余时间最短的进程优先运行。

2. 交互式系统

交互式环境中,为了不让一个进程霸占 CPU 使得其他进程得不到服务,抢占式必须的。这些调度算法也可以用在批处理系统中。
交互式系统注重:

  • 响应时间:快速响应要求
  • 均衡性:满足所有用户的需求

时间片轮转调度 (round robin)

最古老、最简单、最公平且使用最广的算法。每个进程被分配一个时间片,即进程运行运行的时间。如果在时间片结束时进程仍在运行,则 CPU 将被抢占并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU 当即进行切换。

时间片设置的太短会导致过多的进程切换,降低 CPU 的效率;如果设置的太长,有可能引起对短的交互请求的响应变差。

优先级调度

每个进程被赋予一个优先级,率先运行优先级最高的就绪进程。优先级可以是静态或动态的。

为了防止高优先级进程无休止地运行下去,调度器可能在每个时钟节拍时降低当前进程的优先级。如果这个动作导致其有优先级低于次高优先级,则将进行进程切换。

多级反馈队列

将优先级调度和时间片轮转调度相结合。系统中有许多独立的队列,每个队列具有不同的优先级。系统总是优先执行高优先级队列的进程。在同一个队列中,采用时间片轮转调度来切换进程。

最短进程优先

由于最短作业优先在批处理系统中常常伴随产生最短平均响应时间,所以也可以用于交互进程。

彩票调度算法

为进程发放针对系统资源(如 CPU 的访问时间)的彩票,根据进程的重要性发放不同的彩票数量,更重要的进程发放更多的彩票。当调度器需做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源。彩票数量越多的进程,获得资源的概率越大。

彩票调度算法利用了随机性,优点:

  1. 可以避免奇怪的边角情况
  2. 很轻量
  3. 响应速度很快

保证调度算法

在一个有 n 个进程运行的单用户系统中,若所有的进程都平等,则每个进程将获得 1/n 的 CPU 时间。

公平分享调度

以上算法的基本单位都是进程,但是没有考虑拥有者。该算法优先考虑拥有者,保证每个拥有者拥有相等的 CPU 时间。

3. 实时系统

实时系统是那些时间因素非常关键的系统。和交互式系统不同,实时系统只运行那些用来推进现有应用的程序。
实时系统通常分为硬实时(hard real time)系统和软实时(soft real time)系统。前者意味着存在必须满足的时间限制;后者意味着偶尔超过时间限制是可以容忍的。
实时系统要求:

  • 满足截止时间:避免丢失数据
  • 可预测性:在多媒体系统中避免失真

参考:
《操作系统设计与实现》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lylhw13_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值