1.实时调度策略:

    比NORMAL和 FIFO/RR的优先级更高

2.实现的目的:

    对于NORMAL和FIFO/RR的调度,他们的权重、优先级一山更比一山高,不能保证进程在规定的期限内调度,DeadLine就不一样,在规定的期限内cpu必须要花指定的时间在本进程上。

    DeadLine调度属性结构体上有三个重要的时间参数,sched_runtime, sched_deadline, sched_period.

   

DeadLine调度器,以及文章后面的重要小话_java

     明白这三个时间参数,是理解DeadLine调度器的关键。这里举一个我们每天上班的栗子。一天的时间是24小时,sched_period就相当于24小时,sched_dealine就相当于我们每天正常上班的8个小时,假设老板要求你每天从零点到早上八点这个上班时间内把事情完成,早上八点是截止时间。但是八个小时的时间真正工作的时间需要5个小时就够了,sched_runtime就是五个小时,所以你要在零点到8点内完成5个小时的事情就好了,完成以后,你就能回家了,第二天接着上班。。。

    用一张图来说明:

    

DeadLine调度器,以及文章后面的重要小话_java_02

    DeadLine用户层接口使用例子:

        

DeadLine调度器,以及文章后面的重要小话_java_03

---------------

写在文章后面的重要小话:

    我在自己的微信群中或者市面上很难看到Linux内核方面的实践,能够从浅入深的一步步带领人达到内核编程的水平。

    我虽然不是大牛,是一个Linux小兵,但是我现在正在空余时间尝试做这样的事情。自己设计内核实验,比如从最简单的List双向链表的实践开始练习,玩转红黑树,工作队列,rcu等等一些功能的使用,然后怎样写字符设备驱动,块设备驱动,怎样处理中断等等一些基本的操作,最后来一个大点的作业,在Linux内核没有DeadLine调度器的时候,站在作者的角度怎样构思,怎样一步步把DeadLine的功能的实现过程以patch的形式加入到Linux内核中,整个过程中就能见证到所有的细节,包括git的黑功能,代码的合并,大牛的内核编程技巧。就相当于时空穿越回到香港回归1997年之前,见证香港回归的过程。

    目前上面的工作由于时间关系我只已经完成一部分,等我自己弄完全套之后,以出题目的方式发布出去,让跟着我一起玩Linux的人有所收获。

    这是我目前完成的git log.

DeadLine调度器,以及文章后面的重要小话_java_04

后续出题的话,以这种形式来:

    

DeadLine调度器,以及文章后面的重要小话_java_05