进程调度算法总结

不同操作系统环境的需求不同,因而进程调度算法要分环境来讨论

批处理系统

批处理系统适用于计算量大,不需要和用户交互的大型作业。批处理系统的需求有高的吞吐量(单位时间完成的总作业量)和减少平均周转时间(平均每个作业从提交到完成所经历的时间)等。涉及到的操作系统调度算法包括:

  1. 先来先服务
    作业按照先来后到的顺序依次执行。
    优点:保证高的吞吐量。
    缺点:对短作业不友好,短作业前面如果有长作业,将会等待很长时间。
  2. 短作业优先
    按预估最短执行时间的作业先执行的原则。
    优点:平均周转时间较短;
    缺点:长作业有可能会饿死,一直得不到执行。
  3. 高响应比优先
    响应比 = (等待时间+预估运行时间)/ 预估运行时间
    对短作业而言,预估运行时间短,因而同样的等待时间会得到更高的响应比;
    对长作业而言,随着等待时间的增加,响应比也会增加,所以不会饿死。
    所以该算法是先来先服务和短作业优先的折中
  4. 最短剩余时间优先
    属于抢占式的调度算法。每有一个新的作业进入就绪状态,将会比较当前作业预估剩余执行时间与新作业的执行时间比较,如果新作业时间更短,则将当前作业挂起,转而执行新作业,否则按短作业优先的规则进行等待。

交互式系统

包含了分时系统实时系统
分时系统适用于多个用户共享一个计算资源和存储资源的情况。分时系统的目标是及时的响应各个用户的需求,让每个用户以为自己独占资源。
实时系统要求极高的实时性,能对新的数据输入作出迅速的响应,如智能驾驶系统。

  1. 时间片轮转
    基于先来先服务算法,但每个作业执行一个时间片之后将被挂起,而后放到队列末尾,CPU转而执行下一个作业。
  2. 优先级调度
    每个作业都会被设置优先级,根据优先级高低来确定执行顺序。
    为了防止低优先级的作业不会饿死,应该随着时间推移,增加优先级级别。
  3. 多级反馈队列
    按时间片大小不同分成了多个队列,每个队列分配一个优先级。优先级高的队列中的作业优先被执行,在一个队列中按照时间片轮转算法进行CPU的分配。因此该算法可以看作时间片轮转和优先级队列的综合体

你可能感兴趣的:(学习笔记,java)