2、操作系统的任务和时钟节拍
1、 任务,通常指交派的工作,担负的责任。在现代计算机中,“任务”也是其基本工作单位的专业术语。
在设计一个较为复杂的应用程序时,也通常把一个大型的任务分解成多个小任务,然后在计算机中通过运行小任务,最终完成大任务的目的。由于这种方法可以使系统并发的运行多个任务,从而提高处理器的利用率,加快程序的执行速度。
2、多任务系统
(1)简单的说就是用一个处理器,并发(不是同时)的运行多个程序的计算机管理系统
(2)并发:由同一个处理器轮换地 运行多个程序。或者说是由多个 程序轮班地占用处理器这个资源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。
3、μC/OS-II中 的任务管理
(1)任务控制块
一个任务的任务控制块的主要作用就是保存该任务的虚拟处理器的堆栈指针寄存器SP。其实,随着任务管理工作的复杂性的提高,它还应该保存一些其他信息。
a. 识别一个人任务最直接的方法就是为每一个任务起一个名称,由于uC/OS-II中的任务都有一个唯一的优先级别,因此 uC/OS-II是用任务的优先级来作为任务的标识的。所以任务控制块还要来保存任务的优先级别。
b. 另外,一个任务在不同时刻还处于不同的状态,显然,记录了任务状态的数据也应该保存到任务控制块中。
c. 因此,系统必须为每个任务创建一个保存与该任务有关的相关信息的数据结构,这个数据结构叫做该任务的任务控制块 (TCB)。
(2)任务在内存中的结构
(3)用户任务代码的一般结构
(4)系统提供的空闲任务
a. 在多任务系统运行时,系统经常会在某个时间内无用户任务课运行而处于所谓的空闲状态,为了使CPU在没有用户任务可执 行的时候有事可做,uc/OS-II提供了一个叫做空闲任务OSTaskldle()的系统任务。
b. μC/OS-II规定,一个用户应用程序必须使用这个空闲任务,而且这个任务是不能用软件来删除的
(5) 统计任务
μC/OS-II提供的另一个系统任务是统计任务OSTaskStat( )。这个统计任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage中,以便应用程序通过访问它来了解CPU的 利用率,所以这个系统任务OSTaskStat( )叫做统计任务
(6) 任务的优先级别
a. uC/OS_II把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高,数字越 大则表示任务的优先级别越低。
b. 用户可以根据应用程序的需要,在文件OS_CFG.H中通过给表示最低优先级别的常熟OS_LOWEST_PRIO赋值的方法,来 说明应用程序中任务优先级别的数目。该常数一旦被定义,则意味着系统中可供使用的优先级别为0,1,2...., OS_LOWEST_PRIO,共OS_LOWEST_PRIO+1个。
c. 固定地,系统总是把最低优先级别OS_LOWEST_PRIO自动赋给空闲任务。如果应用程序中还使用了统计任务,系统则会把 优先级别OS_LOWEST_PRIO-1自动赋给统计任务,因此用户任务可以使用的优先级别是:0,1,2… OS_LOWEST_PRIO-2,共OS_LOWEST_PRIO-1个
(7)任务堆栈
a.
b.
c.
d.
(8)任务堆栈的初始化
a.
b.
c.
d.
e.
(9)任务就绪表及任务调度
a.
b.
c.
d
(10)UCOS的系统时钟
a.
b.
c.
d.