前言:
当前大家对“短作业优先调度怎么算”可能比较着重,咱们都需要知道一些“短作业优先调度怎么算”的相关内容。那么小编在网摘上收集了一些关于“短作业优先调度怎么算””的相关文章,希望小伙伴们能喜欢,同学们快快来学习一下吧!答:
常见的调度算法主要分为三大类:批处理中的调度、交互系统中的调度、实时系统中的调度。
1. 批处理中的调度:
- 先来先服务:一个单链表记录了所有就绪进程。要选取一个进程运行,只要从该队列的头部移走一个进程即可;要添加一个新的作业或者阻塞一个进程,只要把这个作业或进程附加在队列的末尾即可。这是很简单的一种实现。
- 最短作业优先:需要注意的是,在所有的进程都可以运行的情况下,最短作业优先的算法才是最优的。
- 最短剩余时间优先:最短作业优先的抢占式版本。该算法调度程序总是选择剩余运行时间最短的那个进程运行。当一个新作业到达时,其整个时间同当前进程的剩余时间做比较。如果新的进程比当前运行进程需要更少的时间,当前进程就被挂起,而运行新的进程。这种方式能够使短期作业获得良好的服务。
2. 交互式系统中的调度:
- 轮询调度:一种最古老、最简单、最公平并且最广泛使用的算法就是轮询算法(round-robin)。每个进程都会被分配一个时间段,称为时间片(quantum),在这个时间片内允许进程运行。如果时间片结束时进程还在运行的话,则抢占一个 CPU 并将其分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU 立即进行切换。
- 优先级调度:每个进程都被赋予一个优先级,优先级高的进程优先运行。但是也不意味着高优先级的进程能够永远一直运行下去,调度程序会在每个时钟中断期间降低当前运行进程的优先级。如果此操作导致其优先级降低到下一个最高进程的优先级以下,则会发生进程切换。或者,可以为每个进程分配允许运行的最大时间间隔。当时间间隔用完后,下一个高优先级的进程会得到运行的机会。
- 最短进程优先:从等待运行的进程中选择执行时间最短的那个来运行。
- 彩票调度:有一种既可以给出预测结果而又有一种比较简单的实现方式的算法,就是 彩票调度(lottery scheduling)算法。他的基本思想为进程提供各种系统资源的彩票。当做出一个调度决策的时候,就随机抽出一张彩票,拥有彩票的进程将获得资源。比如在 CPU 进行调度时,系统可以每秒持有 50 次抽奖,每个中奖进程会获得额外运行时间的奖励。
3. RR(round-robin) 调度算法:主要针对分时系统,RR 的调度算法会把时间片以相同的部分并循环的分配给每个进程,RR 调度算法没有优先级的概念。这种算法的实现比较简单,而且每个线程都会占有时间片,并不存在线程饥饿的问题