Skip to content

Latest commit

 

History

History
19 lines (9 loc) · 1.02 KB

0726.md

File metadata and controls

19 lines (9 loc) · 1.02 KB

2020/07/26

继续进行lab4下

问题一:在 Stride Scheduling 算法下,如果一个线程进入了一段时间的等待(例如等待输入,此时它不会被运行),会发生什么?

答案:让出优先级,让进入就绪态的其他进程运行。

问题二:对于两个优先级分别为 9 和 1 的线程,连续 10 个时间片中,前者的运行次数一定更多吗?

答案:不一定,优先级为9的线程可能进入等待状态。

问题三:你认为 Stride Scheduling 算法有什么不合理之处?可以怎样改进?

答案:可能造成低优先级进程的饥饿。改进方法:步长与优先级关系从线性改为正比于开方。

实现思路:利用优先级队列来实现对各进程的调度。将各进程按照stride的大小组织为小顶堆,每次从堆顶选出stride最小的进程运行后并更新stride,再刷新整个二叉堆。完成的进程退出二叉堆,新进程加入二叉堆,由此完成整个调度。代码见lab_code/lab4_code2.