📅  最后修改于: 2023-12-03 15:26:01.700000             🧑  作者: Mango
非抢先优先级调度是一种处理操作系统多任务相关的负载的方法。与传统的抢先优先级调度不同,非抢先优先级调度不强制中断正在执行的进程,直到它自愿地放弃使用 CPU 或直到一个更高优先级的进程准备好并且需要 CPU 使用。本篇文章将探讨非抢先优先级调度的细节并分析其优点和缺点。
非抢先优先级调度涉及到以下两个关键元素:进程优先级和进程运行时间片。
进程优先级反映了进程对计算资源的相对需求。操作系统为每个进程分配一个优先级,通常是一个数值,在低优先级和高优先级之间。高优先级进程比低优先级进程获得更多的处理器时间,因此更快地完成其任务。
进程运行时间片是指操作系统在切换到下一个进程之前,给予正在运行的进程的时间量。操作系统会将可用的 CPU 时间均匀地分配给所有正在运行的进程,以避免某个进程占用过多 CPU 时间而让其他进程饿死。
在非抢先优先级调度的环境下,进程自愿地释放 CPU 使用权。当没有高优先级的进程要求 CPU 使用时,当前运行进程继续运行。当有更高优先级的进程准备好 CPU 使用时,操作系统会放弃当前进程并将 CPU 使用权转移到高优先级的进程。
由于非抢先优先级调度的本质是协作性的,并且没有强制性的中断,因此没有任何进程会被“饿死”,这样可以避免一些不必要的上下文切换。
非抢先优先级调度适用于需要高性能和响应速度的系统,如音视频编解码等高负载的场合。它的优势是低延迟、公平性和减少上下文切换的次数。然而,非抢先优先级调度无法保障实时性,所以不适用于对实时性要求较高的任务,如航空航天等行业。