uc/os II读书笔记(2)

来源:互联网 发布:淘宝电动车加热手套 编辑:程序博客网 时间:2024/06/06 08:57

1.大多数嵌入式操作系统主要提供三项服务:

①内存的管理分配(主要是动态内存的管理),通过操作系统提供的内存分配函数和内存释放函数实现。

②多任务管理,嵌入式实时操作系统会提供良好的任务调度机制来控制多任务,实现实时性。

③外围设备管理,这些外围设备都是系统中各个任务可能用到的资源。

 

2.uC/OS-II是由Jean J.Labrosse1992年编写的一个嵌入式多任务实时操作系统,该操作系统是用C语言和汇编语言编写的,其中绝大部分是C语言编写,少部分与处理器密切相关的用汇编语言编写。uC/OS-II与处理器相关的代码移植时需要修改。

 

第二章

uC/OS II中的任务

一、任务的基本概念

1.uC/OS II中,同大任务分解成的小任务对应的程序实体就叫“任务”,也叫线程,是一个用来解决用户问题的C函数和与之关联的一些数据结构构成的实体.

 

2.uC/OS II的任务由三部分组成:

①任务的程序代码(任务的执行部分)

②任务的堆栈(保存任务工作环境)

③任务控制块(用于保存任务属性)

 

3.uC/OS II 的两种任务分类:

用户任务:由应用程序设计者编写的任务,用于解决应用问题.

系统任务:系统提供的任务,为应用程序提供某种服务.

UC/OS II最多可对64个任务进行管理。

 

4.任务的状态


5.用户任务代码 


从函数看出函数的参数是void型指针,目的是为了传递各种不同类型的参数甚至函数。

在运行OS_ENTER_CRITICAL()OS_EXIT_CRITICAL()之间的代码段时不会响应中断,这段代码称为临界段。

 

6.用户任务

OSTaskCreate()是操作系统uC/OS II用于创建任务的函数,OSStart()是操作系统uC/OS II提供的启动任务的函数,任务启动后由操作系统管理。

 

 

7.系统任务

(1)空闲任务(OSTaskIdle):每个应用程序都必须使用,为了避免在某个时间段CPU在没有用户任务执行时处于空闲状态,操作系统提供了一个空闲任务。

(2)统计任务(OSTaskStart):每秒计算一次单位时间内CPU被使用的时间,用来了解CPU的利用率,若使用该任务则必须把定义在系统头文件0S_CFG.H中的系统配置常数OS_TASK_START_EN1,并在创建统计任务前调用函数OSStartInit().

 

8.任务的优先级

通常一个应用程序的任务数小于64uC/OS II把任务的优先级分为64个级别,数字越大优先级越低。用户根据需要在头文件OS_CFG.H中通过对表示最低优先级别的常数OS_LOWEST_PRIO赋值说明程序中优先级别的个数,也就限制了任务数不能超过OS_LOWEST_PRIO + 1个。

 

二、任务的堆栈

1.堆栈就是存储器中满足“先进后出”原则的连续的存储空间,每个任务都应配有自己的堆栈,任务堆栈是任务的重要组成部分。

 

2.任务堆栈的创建:在头文件os_cpu.h中定义了一数据类型OS_STK,创建堆栈。当调用函数OSTaskCreate()来创建任务时,将用数据类型OS_STK定义的数组指针传给该函数则可将该堆栈与相应的任务联系起来。


3.堆栈的增长方向分两种,向上增长型堆栈和向下增长型堆栈,这随系统的处理器的不同而有所不同。


4.任务控制块:用来记录堆栈的指针、任务的当前状态、任务的优先级别等一些与任务管理有关的属性的表格。

 



0 0
原创粉丝点击