某进程调度程序采用基于优先数priority的调度策略即选择优先数最小的进程运行进程创建时由用户指定一个nice作为静态优先数。为了动态调整优先数引入运行时间cpuTime和等待时间waitTime初值均为0。进程处于执行态时cpuTime定时加1且waitTime置0;进程处于就绪态时cpuTime置0waitTime定时加1。请回答下列问题。1若调度程序只将nice的值作为进程的优先数即pri
(1)若调度程序只将nice的值作为进程的优先数,即priority=nice,则可能会出现饥饿现象。这是因为优先数只与nice有关,不考虑进程等待时间和已经占用的cpu时间,导致某些进程永远无法被调度执行,即使它们一直在等待状态。
(2)一种动态优先数计算方法可以使用公式:priority = nice + (cpuTime / 2) - waitTime。其中,nice是静态优先数,cpuTime是已经占用的cpu时间,waitTime是等待时间。该公式综合考虑了进程的静态优先级、已使用的cpu时间和等待时间,可以在保证公平性的同时避免产生饥饿现象。
waitTime的作用在于,它可以反映进程等待的时间长短,等待时间越长,优先级越高。这样可以确保等待时间较长的进程得到更多的cpu时间,避免被长时间占用cpu的进程抢占。同时,由于cpuTime的存在,已经占用cpu时间较长的进程优先级也会下降,为其他等待进程腾出机会。
原文地址: http://www.cveoy.top/t/topic/hozw 著作权归作者所有。请勿转载和采集!