OS-李治军-L15-一个实际的schedule函数

一个实际的schedule函数

Linux 0.11的调度函数schedule函数

注释:
在这里,counter有两个含义,一是优先级,二是时间片。简单理解就是,时间片多的,优先级高。
然后每次调度的时候,找到counter最大的就绪任务,也就是优先级最高的就绪任务去执行。
如果没有找到,那么就给所有任务的counter置成初值,而那些正在阻塞的进程(等IO的苦主)会额外分配一些时间,具体大小是它还剩下的counter的值的一半。

上面体现了counter的优先级作用,下面是具体时间片的code:
每次时钟中断,就给当前进程的counter--。

这样IO约束型任务,若其阻塞的越久,那么其时间片就越高,这样变相照顾了前台进程。
而后台进程是近似按照SJF调度,因为每人都平均分配了一些时间,那么肯定短时间的任务肯定就结束的快。
然后counter的值不会发散到无穷,可以验证其极限存在,最长时间片是2p。

posted @ 2020-10-25 16:30  HermioneGranger  阅读(156)  评论(0)    收藏  举报