进程管理(2):进程调度策略

进程调度的概念

第一个问题还是,为什么需要对进程进行调度?

在前面一篇进程管理(1):进程和线程的概念中已经提出,进程这个概念是在多道程序的背景下产生的,之所以引入进程,就是为了让操作系统可以更好地管理这些并发的任务。而我们知道,进程的并发并不可能是真正的并行,因为无论是在单处理机还是多处理机中,进程的数量都远远多于CPU的内核数,因此进程的并发本质上只是对CPU资源的时分复用而已。一个CPU在任何时刻,还是只能执行一个程序。

这样,当一个进程执行完一定的时间,或者主动放弃了CPU资源以后,操作系统就需要选择另一个进程到CPU上去执行。怎么从众多进程中选择这一个进程,就是对进程的调度问题。

进程调度的时机。

进程调度还要解决的一个问题就是进程调度的时机,即应该在什么时候对进程进行调度。很自然可以想到,当一个进程因为各种原因主动放弃CPU资源时,比如因为等待某一个资源而进入阻塞,比如因为执行完毕了而退出等,都应该进行进程的调度。

除此以外,对于基于抢占式的进程调度算法,在一个更高优先级的进程进入就绪队列以后,也应该让这个高优先级进程抢占正在CPU上执行的低优先级进程,让它开始执行。但是这种情况不同于进程主动放弃CPU的情况,因为正在执行的进程无法知晓一个高优先级进程进入了就绪状态,因此就需要操作系统的介入,借助中断机制,打断正在执行的低优先级进程,并且在中断服务例程响应完毕时进行进程的切换。事实上,在ucore中,的确也是采取这两种进程调度的时机的。

进程调度策略的评价

和前面的页面置换算法一样,你尽可以设计各种各样的进程调度算法,但是又应该如何评价这些算法的优劣,并且对它们进行改进呢?所以在讨论具体的进程调度算法之前,应该首先关心它的一些评价指标。

从操作系统和计算机系统的角度来看,自然是希望设计的调度算法可以得到更高的资源利用率。这里的资源利用率指标可以用CPU利用率以及系统的吞吐量来表示。CPU利用率是指CPU处于忙状态的时间百分比,因为进程的运行模式一般是CPU运算和I/O操作交替进行,如果CPU在不断运行,则说明计算机系统的资源具有一个比较高的利用率。吞吐量是指单位时间内完成的进程数量,是一个比较宏观的目标,吞吐量越高则说明系统完成服务效率越高。此外,还有一个周转时间指标,表示一个进程从初始化到结束的总时间,其中也包括处于等待状态的时间。

但是从用户的角度来看,则具有完全不同的评价指标。对于用户来说,更加注重的是一种用户体验,也就是一个进程的等待时间和响应时间。等待时间是指进程在就绪队列中等待CPU的总时间,响应时间是指从提交请求到产生响应所花费的时间。这两个指标对于提升用户体验的作用不言而喻,例如如果用户移动了鼠标,光标却没有移动,用户可能会直接砸键盘。

应该指出,吞吐量指标和响应时间(延迟指标)并不是矛盾的,实际上它们是相互独立,可以并行不悖的。这就好比你打开水龙头想要喝水,你刚一开水就出来了,这是低延迟。开了水龙头以后水就倾泻而出,这是高带宽,也就是高吞吐量。这两个指标是可以同时兼顾的。

为了提升系统的吞吐量,一方面可以通过减小系统内部的开销,如进程切换时的上下文切换开销,以及操作系统本身的开销。另一方面,则可以通过减小每个进程等待时间来实现。此外,操作系统需要保证吞吐量不受用户交互的影响,即在存在许多交互任务时,还是需要不时进行调度。

而为了降低系统的响应时间,可以从调度算法的策略来着手,比如让交互式进程具有比较高的优先级,以及时处理用户的请求。此外,还需要减少平均响应时间的波动,让系统具有较好的可预测性。

最后,调度策略还有一个公平性指标,比如在多用户的情况下,让各个用户几乎均分CPU的使用权。有一种策略是保证每个进程占用CPU的时间相同,但是这种策略显然经不起推敲,因为如果一个用户创建更多进程,他就可以获得更多的CPU时间。为了解决这个问题,真正的策略应该是保证每个进程的等待时间相同。需要指出的是,为了保证系统的公平性,往往需要付出一定的代价,比如平均响应时间会增加。

进程调度算法

以下分析具体的进程调度算法。

先来先服务算法(FCFS, First Come First Served)

顾名思义啊,就是按照进程进入就绪队列的次序,依次让它们得到CPU的使用权。

这种算法应该是最简明的一种算法了,显然它具有很多缺陷。首先就是这个算法的性能具有很大的波动性,考察一种情况,现有三个进程 P 1 , P 2 , P 3 P_1, P_2, P_3 P1,P2,P3,它们需要的计算时间分别是12,3,3。如果是 P 1 P_1 P1先于 P 2 , P 3 P_2, P_3 P2,P3到达,则具有一个相当长的平均周转时间;反之,如果是 P 1 P_1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值