※ 引述《mozzan (mozzan)》之铭言:
: 这是恐龙第八版的习题 (ch5 process scheduling)
: 5.16
: Consider a preemptive priority scheduling algorithm based on dynamically
: changing priority. Larger priority numbers imply higher priority.
: When a process is waiting for the CPU (in the ready, but not running), its
: priority changes at rate A; when it is running. its priority changes at a rate
: B. All processes are given a priority of 0 when they enter the ready queue.
: The parameter A and B can be set to give many different scheduling algorithm.
: a. What is the algorithm that result form B > A > 0 (A : FCFS)
: b. What is the algorithm that result form A < B < 0 (A : LIFO)
: 另外题库还有
: c. What is the algorithm that result form A > B > 0 (A : LIFO)
: d. What is the algorithm that result form B < A < 0 (A : FCFS)
: a和b 没问题
: 其他都不太了解为什么,像 A > B > 0
: 刚进入Ready queue的为0,原先在Ready queue和Runing的priority应该都较高
: 为何答案却是 LIFO
: 而 B < A < 0
: 就更不懂了,烦请大家解惑,感谢
要以 process 执行时间相对长的方面来思考,如果执行时间都超短,那么不管是哪一个都是
FCFS 因为瞬间就好了,也没有换不换的问题了。
在此先假设一个前提:执行时间短的基本上都会先完成,相对来说执行时间短的参考度比
较低,所以讨论偏重执行时间长的。
值得一提的是题目中还有假设进入ready queue中的process priority都会设成零,言下
之意便是即使在 CPU 中养了很久有很高的 priority ,一离开也变成浮云了。
那么,以 c 来说等待中的 process 权限会上升得比较快,如果大家都不能一下子就完
成,后面进来的总有机会追过前面 process 的 priority,所以后面有机会进去 CPU执
行,如果后面相对时间短,那么就是 LIFO 了,当然如果后面时间是长的,那么前面会先
做完,可是根据我们假设短的本来就会先做完,参考度低,不看,在后面进来的总有更短
的,所以整体来看还是 LIFO。
以 d 来说,进去执行的,一下就会被踢出来,可是他一进入 ready 他又是 0 所以又可
以进入 CPU,就是 FCFS 了。
参考看看 ~