MotoHawk实时抢占式多任务内核(real-time pre-emptive multi-tasking kernel)

任务分配内核(Tasking Kernel)

  • 什么是“抢占”
    抢占,描述的是这样一种动作:具有较高优先级的线程中断较低优先级线程的执行,意图在稍后的时间恢复低优先级线程的执行。

  • 什么是“多任务”
    多任务,是指系统使用多个线程执行工作。多任务的好处是,可以将需要完成的工作,进行逻辑上的分解,得到子任务;并且可以根据需要,为子任务划分优先级。

  • 什么是“任务”
    一个任务,就是一个线程。线程的执行,可以被设定为,等待软件定义的某个事件发生后再进行。
            一个处于等待状态的线程,并不会竞争CPU的资源,而是放弃执行;这就允许那些虽然优先级比较低但是确实希望执行的任务赢得在CPU上执行的机会。
            一个任务,拥有自己的堆内存,并且负责维护属于自己的CPU状态(也被称为执行上下文,an execution context)。
            就单独的一个CPU而言,任务之间时完全独立的。
            一个任务,可以认为是一个容器;在这个容器中,存放着一个CPU指令序列。
            对于MotoHawk的控制器而言,一个任务的执行,需要等待执行事件(触发器triggers)的发生。当这些触发器中的一个发生时,任务就会被置为就绪状态,并竞争执行机会。
            在处于就绪状态中的众多任务中,具有最高优先级的那个任务将获得执行的机会。

  • 什么是“中断”
    中断,指的是一个处理器事件(a processor event)。这种事件通常由外部的硬件触发,比如实时中断(Real-Time Interrupt RTI)、角度事件(Angle Event)、通讯事件(Communication Event)。
            一个中断,也是一个线程,并且拥有自身的优先级。因此,一个中断,可以被具备更高优先级的中断抢占执行。
            一个中断的优先级,永远要高于一个任务的优先级;因此,任务总是可以被中断抢占执行。

线程的执行、上下文切换(Context Switch)

无论是任务,还是中断,都属于线程。所谓的上下文切换(Context Switch),被定义为一个线程替代CPU上当前线程的过程。
        之所以发生这种替代,可能是因为这个线程需要去抢占执行(因为它的优先级比正在运行的线程高),也可能是因为正在运行的线程不想再继续运行而放弃在CPU执行的机会。

你可能感兴趣的:(抢占,多任务,线程,上下文切换,学习笔记)