📅  最后修改于: 2023-12-03 15:22:05.392000             🧑  作者: Mango
优先级计划和最长作业优先(LJF)是调度算法中常用的两种方法。两者有着不同的特点,本文将从优先级、调度粒度、算法复杂度、适用场景等方面来阐述它们之间的区别。
优先级计划是按照进程的优先级进行调度的一种算法。每个进程都分配一个优先级,优先级高的进程先执行,优先级相同的进程按照轮转调度法执行。优先级计划可分为非抢占式优先级计划和抢占式优先级计划两种。在非抢占式优先级计划中,当前运行的进程将一直运行,直到它自愿地放弃CPU,或其他更高优先级的进程进入系统中。而在抢占式优先级计划中,操作系统将中断当前运行的进程,强制让更高优先级的进程进入系统。
优先级计划的优点是能够高效利用处理器资源。但是它也存在优先级反转、饥饿等问题。优先级反转指的是某个低优先级进程因为等待高优先级进程的资源而无法获得CPU的情况。饥饿指的是低优先级进程无法获得CPU时间片的情况。
最长作业优先(LJF)是按照任务执行所需时间长短进行调度的一种算法。LJF算法试图最大化执行时间最长的任务,因此较大的作业容易占用CPU时间,可能会出现饥饿的情况。
LJF算法常常被用于长时间运行的任务,如批处理,它的缺点是无法满足短时间的任务,因为这些任务必须等待较长时间才能获得CPU时间。LJF算法的另一个重要问题是它的复杂度,它需要在每个新任务到达时重新计算所有任务的执行时间,这是一个非常耗费时间的操作。
综上所述,优先级计划和LJF算法都有各自的优缺点,选择适合的调度算法取决于应用的具体情况。