嵌入式系统这门课程是常学常新啊!分享一下我的笔记:多任务调度机制的几个基本概念
(1) 任务。任务是独立执行的线程,线程中包含独立的、可调度的指令序列。实现应用程序的设计过程包括如何把问题分割成多个任务,每个任务是整个应用的一个组成部分,每个任务被赋予一定的优先级,有自己的一套寄存器和栈空间。在大多数典型的抢占式调度内核中,在任何时候,无论是系统任务还是应用任务,其状态都会处于就绪,运行和阻塞三个状态之一。另外,某些商业内核还定义了挂起、延迟等颗粒更细的状态。
(2) 任务对象。任务是由不同的参数集合和支持的数据结构定义。在创建任务时,每个任务都拥有一个相关的名字,一个唯一的标识号D,一个优先级、一个任务控制块-个堆栈和一个任务的执行例程,这些部件一起组成一个任务对象。
(3) 多任务。多任务是操作系统在预定的死线内处理多个活动的能力。多任务的运行使 CPU的利用率得到最大地发挥,并使应用程序模块化。随着调度的任务数量的增加,对CPU的性能需求也随之增加,主要是由于线程运行的上下文切换增加的缘故。
多数实时内核是基于优先级调度的。
(5) 可调度实体。可调度实体是一个可以根据预定义的调度算法,竞争到系统执行时间的内核对象。
(6) 上下文切换。每个任务都有自己的上下文,它是每次被调度运行时所要求的寄存器状态,当多任务内核决定运行另外的任务时,它保存正在运行的任务的上下文,恢复将要运行下一任务的上下文,并运行下一任务,这个过程称为上下文切换。在任务运行时,其上下文是高度动态的。调度器从一个任务切换到另一个任务所需要的时间称为上下文切换开销。
(7) 可重入性。指一段代码被一个以上的任务调用,而不必担心数据的破坏。具有可重入性的函数任何时候都可以被中断,一段时间以后继续运行,相应数据不会遭到破坏。