(1) 若调度程序只将 nice 的值作为进程的优先数,即 priority = nice,则可能会出现饥饿现象。这是因为优先数只与 nice 有关,不考虑进程等待时间和已经占用的 cpu 时间,导致某些进程永远无法被调度执行,即使它们一直在等待状态。

(2) 一种动态优先数计算方法可以使用公式:priority = nice + (cpuTime / 2) - waitTime。其中,nice 是静态优先数,cpuTime 是已经占用的 cpu 时间,waitTime 是等待时间。该公式综合考虑了进程的静态优先级、已使用的 cpu 时间和等待时间,可以在保证公平性的同时避免产生饥饿现象。

waitTime 的作用在于,它可以反映进程等待的时间长短,等待时间越长,优先级越高。这样可以确保等待时间较长的进程得到更多的 cpu 时间,避免被长时间占用 cpu 的进程抢占。同时,由于 cpuTime 的存在,已经占用 cpu 时间较长的进程优先级也会下降,为其他等待进程腾出机会。


原文地址: https://www.cveoy.top/t/topic/oRoP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录