Ucosii的实时操作系统(任哲)——第二章

本文详细介绍了UCOSII实时操作系统中的任务管理,包括任务的基本概念、任务状态转换、用户任务代码结构、系统任务、任务堆栈、任务控制块、任务优先级以及任务的创建、挂起和恢复。内容涵盖了任务的生命周期、任务状态、任务调度和任务管理函数,为理解和使用UCOSII提供了深入的知识。
摘要由CSDN通过智能技术生成

3.1任务的基本概念

一、任务及内核结构

在设计一个较为复杂的应用程序时,通常把任务分成若干个小问题,这样使系统并发运行多个任务,提高处理器的利用率,加快程序的执行速度,所以现代操作系统都是多任务操作系统。UCOSII就是一个多任务的操作系统。

UCOSII的任务由任务程序代码(函数)、任务堆栈、任务控制块这三个部分组成。


PC的值总是待要执行指令的地址,根据任务是否具有自己的私有运行空间,分为进程和线程。UCOSII中没有给任何定义私有空间,所以UCOSII中的所有任务就叫做线程。

 

一个任务可以在睡眠状态,就绪状态,运行状态,等待状态,中断服务状态5个状态中发生转换。

二、用户任务代码的一般结构

根据嵌入式系统任务的工作特点,任务的执行代码通常是一个无限循环结构,在这个循环中可以响应中断,这种结构也叫做超循环结构。

从程序设计的角度来说,一个UCOSII的任务代码就是一个C语言函数,为了传递各种不同的类型的数据甚至是函数,所以UCOSII的任务的参数定义成了一个VOID类型的指针。

代码中的OS_ENTER_CRITICAL()OS_EXIT_CRITICAL()UCOSII定义的两个宏,OS_ENTER_CRITICAL()封装了关中断的代码,而OS_EXIT_CRITICAL()封装了开中断的代码,即处于这两个宏之间的代码是不会被中断的,把这种受保护的代码段叫做临界段,所以OS_ENTER_CRITICAL()叫做临界段宏,而OS_EXIT_CRITICAL()叫做推出临界段宏。

从程序代码的形式上来看,用户任务就是一个C语言函数,但这个函数不是主函数调用 的函数,在系统中它与main函数处于平等地位,但是何时被调用以及何时被终止由操作系统决定的。

应用程序结构:


三、系统任务

 操作系统除了管理用户任务之外还要管理系统任务,即系统的内部事务要处理。

 UCOSII预定义了两个系统任务:空闲任务和统计任务,空闲任务的不是必须的,但是统计任务是应用程序根据实际需要来使用。

 前面所说任务分为5个状态,即系统极有可能在某个时间内处于空闲状态。空闲任务是在系统空闲时,有事可做。

 统计任务就是统计cpu在单位时间内被使用的时间,以百分比的形式保存在变量OSCPUsage中。用户根据实际需要来选择是否使用统计任务,若用则把定义在头文件中的OS_CFG.H中的系统配置常数OS_TASK_STAT_EN设置为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值