调度简介,调度算法分类,调度算法的目标

2.4   调度

当计算机系统是多道程序设计系统时,通常就会有多个进程或线程同时竞争CPU只要有两个或更多的进程处于就绪状态,这种情形就会发生。如果只有一个CPU可用,那么就必须选择下一个要运行的进程。在操作系统中,完成选择工作的这一部分称为调度程序(scheduler),该程序使用的算法称为调度算法(scheduling algorithm)。

尽管有一些不同,但许多适用于进程调度的处理方法也同样适用于线程调度。当内核管理线程的时候,调度经常是按线程级别的,与线程所属的进程基本或根本没有关联。下面我们将首先关注适用于进程与线程两者的调度问题,然后会明确地介绍线程调度以及它所产生的独特问题。

2.4.1   调度介绍

让我们回到早期以磁带上的卡片作为输入的批处理系统时代,那时的调度算法很简单:依次运行磁带上的每一个作业。对于多道程序设计系统,调度算法要复杂一些,因为经常有多个用户等候服务。有些大型机系统仍旧将批处理和分时服务结合使用,需要调度程序决定下一个运行的是一个批处理作业还是终端上的一个交互用户。(顺便提及,一个批处理作业可能需要连续运行多个程序,不过在本节中,我们假设它只是一个运行单个程序的请求。)由于在这些机器中,CPU是稀缺资源,所以好的调度程序可以在提高性能和用户的满意度方面取得很大的成果。因此,大量的研究工作都花费在创造聪明而有效的调度算法上了。

在拥有了个人计算机的优势之后,整个情形向两个方面发展。首先,在多数时间内只有一个活动进程。一个用户进入文字处理软件编辑一个文件时,一般不会同时在后台编译一个程序。在用户向文字处理软件键入一条命令时,调度程序不用做多少工作来判定哪个进程要运行—惟一的候选者是文字处理软件。

其次,同CPU是稀缺资源时的年代相比,现在计算机速度极快。个人计算机的多数程序受到的是用户当前输入速率(键入或敲击鼠标)的限制,而不是CPU处理速率的限制。即便对于编译(这是过去CPU周期的主要消耗者)现在大多数情况下也只要花费仅仅几秒钟。甚至两个实际同时运行的程序,诸如一个文字处理软件和一个电子表单,由于用户在等待两者完成工作,因此很难说需要哪一个先完成。这样的结果是,调度程序在简单的PC机上并不重要。当然,总有应用程序会实际消耗掉CPU,例如,为绘制一小时高精度视频而调整108 000帧(NTSC制)或90 000帧(PAL制)中的每一帧颜色就需要大量工业强度的计算能力。然而,类似的应用程序不在我们的考虑范围。

当我们转向网络服务器时,情况略微有些改变。这里,多个进程经常竞争CPU,因此调度功能再一次变得至关重要。例如,当CPU必须在运行一个收集每日统计数据的进程和服务用户需求的进程之间进行选择的时候,如果后者首先占用了CPU,用户将会更高兴。

另外,为了选取正确的进程运行,调度程序还要考虑CPU的利用率,因为进程切换的代价是比较高的。首先用户态必须切换到内核态;然后要保存当前进程的状态,包括在进程表中存储寄存器值以便以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值