调度程序:从就绪进程中选择下一个需要运行的进程的程序。

  • 调度程序在web服务器中十分重要

名词解释:

  1. 吞吐量:系统每小时完成的作业数量
  2. 周转时间:从一个批处理作业提交时刻开始到完成为止的平均时间。
  3. CPU利用率:度量批处理系统,单不具有参考价值。
  4. 最小响应时间:从发出命令到得到相应之间的时间。

进程的分类

  1. CPU密集型
  2. I/O密集型:需要运行更多的此类进程保持CPU充分利用
    CSAPP-2.4-进程调度

进程调度发生的时间

  1. 创建新的进程后
  2. 进程退出过后
  3. 进程阻塞的时候
  4. I/O中断发生的时候

时钟中断:硬件的周期性中断

可以在每个时钟中断或者每k个时钟终端的时候,进行调度。根据如何处理时钟中断,分为两大类

  1. 抢占式调度算法(必须要有可用的时钟)
  • 定义:设置一个最大允许时间,当时间到了,进行时钟中断,然后挂起当前进程,调度其他进程运行。
  1. 非抢占式调度算法
  • 定义:选择一个进程,运行至被阻塞或者自动释放CPU

调度算法分类

批处理调度

应用场景:账目处理、薪水处理等周期性的作业,通常都采用非抢占式的算法。

  1. 非抢占式的先来先服务FCFS:进程按照请求CPU的顺序使用CPU。缺点是CPU和I/O利用很低。
  2. 非抢占式的最短作业优先调度:当运行时间可以预知的算法。
  3. 抢占式的最短剩余时间优先:选择剩余运行时间最短的进程运行。

证明:假设有四个作业,运行时间分别为a、b、c、d。第一个作业在时间a结束,第二个作业在a+b结束,第三个作业在a+b+c结束,第四个在a+b+c+d结束。平均周转时间是(4a+3b+2c+d)/4,则可知a对平均值影响最大,故a应该是最短作业。

交互式调度

应用场景:服务器、个人计算机,通常采用抢占式调度算法。

  1. 抢占式的轮转调度:使用时间片,允许进程在时间片内运行。

时间片设置太短会导致过多的进程切换,降低CPU效率,太长会引起对短的交互请求响应时间变长,一般为20~50ms。
CSAPP-2.4-进程调度

  1. 优先级调度:每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。
  • 调度程序在每个时钟中断降低当前进程的优先级,防止无休止的运行。
  1. 多级队列。设置较长的时间片,为最高优先级设置1个时间片,下一级2个,再下一个4个以此类推
  2. 最短进程优先:让最短的作业先运行。
  3. 保证调度:向用户做出明确的性能保证。
  4. **调度:为进程提供各种资源的**,进程的得到的**越多,更可能被调度。
  5. 公平分享调度:无论一个用户有多少进程存在,每个用户都会得到应有的CPU份额。
    CSAPP-2.4-进程调度
    使得I/I密集型进程获得较好服务的算法:优先级设置为1/f,f
实时调度

实时系统通常分为软实时和硬实时。硬实时:必须满足绝对的截止时间,软实时:可以容忍偶尔错失截止时间。

  • 实时系统的事件分为周期性(规则的时间间隔发生)和非周期性(发生时间不可预知)。
    如何判断实时系统是否能被调度?
  • 假设m个周期时间,事件i以周期 P i P_i Pi发生,并需要 C i C_i Ci秒CPU时间处理一个事件,那么当满足 ∑ i = 0 m C i P i \sum_{i=0}^m\frac{Ci}{Pi} i=0mPiCi ≤ \leq 1的时候,是可调度的,能被实现。

题外话:线程调度

  1. 用户级线程
  • 在进程A运行时,线程调度程序决定哪个线程运行
  1. 内核级线程
  • 内核选择一个特定的线程,不需要考虑属于哪一个进程。

相关文章:

猜你喜欢
  • 2021-07-11
  • 2021-05-05
  • 2022-12-23
  • 2021-06-13
相关资源
相似解决方案