进程调度.

调度的目标

前面讲过,在多进程,多线程并发的环境里,虽然从概念上看,有多个进程或线程在同时执行,但在单一CPU下,实际上在任何时刻只能有一个进程或线程处于执行状态。而其他线程则处于非执行状态。那么这就有一个需要解决的问题:我们是如何确定在任意时刻到底有哪个线程执行,哪些不执行呢?或者说,我们是如何进行线程调度的呢?

进程/线程的调度是操作系统进程管理的一个重要组成部分。其任务是怎么选择下一个要运转的进程。而要探明这一点,则首先需要确定操作系统进程调度的目标是什么。这样,就知道选择什么进程最合适。

那么操作系统进程调度的目标是什么呢?这需要对程序使用CPU的模式进行分析。那么程序在执行时有什么样的模式呢?
一般来说,程序使用CPU的模式有三种:一种程序大部分时间在CPU上执行。另一种程序大部分时间在进行输入输出,还有一种程序则介于前两种模式之间。

第一种程序运行的模式是在CPU上执行一阵较长时间,接着进行短暂的输入,然后又在CPU上进行较长的运算,之后又进行一下短暂的输入输出操作。就这样循环往复。这种程序由于使用CPU的时间大大多于其用于输人输出上的时间,因此称为CPU导向( CPU-bound)或计算密集型程序。计算密集型程序通常是科学计算方面的程序。计算宇宙大爆炸各种参数的程序和矩阵乘法程序等就都是CPU bound 的程序。

第二种程序则与第一种相反,这种程序的大部分时间用来I/O,每次I/O后进行短暂的CPU执行,因此称为I/О导向( I/O-bound)或输入输出密集型程序。一般来说,人机交互式程序均属于这类程序。如游戏程序,讲课时使用的PPT程序,就都属于I/O bound的程序。

第三种程序自然介于二者之间,既有长时间的CPU执行部分,又有长时间的I/O部分。 或者说,这种程序使用CPU和I/O的时间相差不大。这种程序称为平衡型程序。例如,网络浏览或下载,网络视频等就属于此类程序。

自然,对于不同性质的程序,调度所要达到的目的也有所不同。例如,对于I/O bound 的程序来说,响应时间非常重要,而对于CPU-bound的程序来说,则周转时间( turn around )就比较重要,对于平衡型程序来说,则进行某种响应和周转之间的平衡就显得重要。

处理器调度的总体目标

CPU 调度就是要达到极小化平均响应时间,极大化系统吞吐率,保持系统各个功能部件均处于繁忙状态和提供某种貌似公平的机制。

极小化平均响应时间就是要极小化用户发出命令和看到某种结果之间所花费的时间,即减少做一件工作平均等待的时间;极大化系统吞吐率就是要在单位时间内完成尽可能多的程序,就是单位时间内能完成的工作数量,即整个系统运行效率高;保持系统各个功能部件繁忙就是要让CPU和输人输出设备均处于忙碌状态。因为CPU非常昂贵,让其闲置显然是―种浪费,因此保持CPU繁忙十分重要。就像人非常珍贵,因此要一直保持学习繁忙状态,才能不浪费生命。提供公平就是要让各个程序感到某种“平等”,即在CPU面前“人人平等”。公平是任何系统都应该努力达到的目标。因为,没有公平,该系统对用户的吸引力就会急剧下降。就像一个国家或者社会,如果缺乏公平,公民对该国家的认同度就会急剧下降一样。

对于不同的系统来说,在调度目标方面也有一些细微的不同。例如,对于批处理系统来说,由于用户并不坐在计算机前面等待结果,响应时间就显得不太重要,但系统吞吐率,CPU利用率和周转时间则很重要。对于交互式系统来说,因为用户在等待计算机,因此响应时间要很快。但在这里要注意的是适度性( proportionality)。适度性就是响应时间要和期望值相匹配。 这里是说你不要超越用户的期望。比如说,用户期待1秒钟的响应时间,你就给他1秒钟的响应时间,而不必提供0.1秒的响应时间。这是因为,提供超出用户期望的响应会增加系统设计的难度,而又不会提高用户的满意度(对于一个人来说,1秒钟和0.1秒钟的差别并不是很大)。对于实时系统来说,调度就是要达到在截止期前完成所应该完成的任务和提供性能可预测性。

先来先服务调度算法

先来先服务调度算法缩写为FCFS( fir

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值